失败的循环:询问用户是不是希望继续(Python)

Posted

技术标签:

【中文标题】失败的循环:询问用户是不是希望继续(Python)【英文标题】:Failed loop: asking the user if they wish to continue (Python)失败的循环:询问用户是否希望继续(Python) 【发布时间】:2018-01-20 16:46:31 【问题描述】:

我为 Python 3 开发了这段代码,以询问用户是否希望继续:

def dnv(): 
    b = input('Would you like to try again? Type 1 for "yes" and 0 for "no": ')
    if b == '1':
        return run()
    if b == '0':
        return print('See you later!')

run() 是任何程序的主函数。但是现在我正在学习 Python 2 的课程,并且我尝试将它改编为我从那里学习的算法,但没有成功。目的是确定两个日期之间有多少天。我相信相关部分是:

def inputs():
    year1 = input('Type the first year: ')
    month1 = input('Type the first month: ')
    day1 = input('Type the first day: ')
    year2 = input('Type the second year: ')
    month2 = input('Type the second month: ')
    day2 = input('Type the second day: ')
    print daysBetweenDates(year1, month1, day1, year2, month2, day2)

def dnv():
    answer = input('Would you like to try again? Type "y" for yes and "n" for no: ')
    if answer == 'y':
        return inputs()
    else:
        print('See you later!')

虽然每次我输入 y 或 n 时,我都会得到一个 NameError: name 'y' is not defined(类似于“n”)。我还尝试将if answer == 'y' 修改为:

if answer.lower().startswith('y'):
    return inputs()

再次没有成功。我错过了什么?谢谢!

【问题讨论】:

python2 input() 与 python3 input() 的工作方式不同。请改用raw_input() 成功了!非常感谢。 【参考方案1】:

使用raw_input()

answer = input('Would you like to try again? Type "y" for yes and "n" for no: ')

【讨论】:

【参考方案2】:

如果您使用的是python 2,则需要将输入更改为:

answer = raw_input("your message here: ")

而且你不需要返回一个函数,你可以调用它。

if answer.lower().startswith('y'):
    inputs()

【讨论】:

【参考方案3】:

如果你使用的是 python 3,我推荐这个:

b = input('Would you like to try again? Type 1 for "yes" and 0 for "no": ')
   if b == '1':
       return run()
   if b == '0':
       return print('See you later!')

【讨论】:

以上是关于失败的循环:询问用户是不是希望继续(Python)的主要内容,如果未能解决你的问题,请参考以下文章

Python在While循环中继续缩进

提示询问用户是不是要继续让您的应用收集后台位置 - 这种情况多久发生一次?

附加列表的结束循环

嵌套循环有两个while循环

如何询问用户是不是希望在 CloudKit JS 中被发现?

使用 BroadcastReceiver 询问用户是不是希望打开应用程序 onReceive