我正在创建一个简单的程序,将公制单位转换为英制单位(不包含在内,因为它可以正常工作),但是我不知道为什么“继续”在应该重新启动循环时会产生回溯错误? / p>
import sys
import time
def converter():
while True:
cont_1 = input('Do you want to do another calculation? (Yes, No) ')
if cont_1 == 'no' or 'No':
break
elif cont_1 == 'yes' or 'Yes':
continue
return
converter()
sys.exit()
我希望当我输入“是”或“是”时程序重新启动。实际上,我会得到一个追溯错误。
答案 0 :(得分:1)
您不了解Python if语句的工作方式,现在它始终为false。
可以这样写:
if cont_1 == 'no' or cont_1 == 'No':
或者在这种情况下可能更容易:
if cont_1.lower() == 'no':
答案 1 :(得分:1)
实际上,您使用的是逻辑上完全错误的方式来运行此代码 因此您的代码应如下所示:
import sys
def converter():
cont_1 = input('Do you want to do another calculation? (Yes/ No) ')
if cont_1 == 'no' or cont_1 == 'No':
sys.exit()
if cont_1 == 'yes' or cont_1 == 'Yes':
pass
while True:
converter()
答案 2 :(得分:0)
您的Traceback
是由sys.exit()
创建的,但是在某些IDE中运行时可能是正常的。
但是您不需要sys.exit()
。如果删除它,那么您将没有Traceback
但是还有其他问题-您的if
无法正常工作,退出while
循环,然后执行sys.exit()
行
if cont_1 == 'no' or 'No':
表示
if (cont_1 == 'no') or 'No':
并且此设置将产生True
,并退出while
循环。
您需要
if cont_1 == 'no' or cont_1 == 'No':
或
if cont_1 in ('no', 'No'):
或使用string.lower()
if cont_1.lower() == 'no':
最新版本也可以与NO
和nO
您可以使用
elif cont_1 == 'yes' or 'Yes':
continue
存在相同的问题,但是continue
之后没有while
中的代码,因此您不需要它
所以您只需要
def converter():
while True:
cont_1 = input('Do you want to do another calculation? (Yes, No) ')
if cont_1.lower() == 'no':
break
return
converter()
或将return
放在break
的位置
def converter():
while True:
cont_1 = input('Do you want to do another calculation? (Yes, No) ')
if cont_1.lower() == 'no':
return
converter()