[英]case insensitive multiple conditions checking for input
我已经在 pycharm edu 中编写了一个关于 python 3 的计算器。 部分代码在这里:
def again():
calc_again = input('''
Repeat?
''')
#disagreements = frozenset('N'or 'No' or 'Not')
#agreements = frozenset('Y' or 'Yes' or 'Ya')
if (calc_again.upper()=='Y' or calc_again.upper()=='Yes' or calc_again.upper()=='Ya'):
calc()
elif (calc_again=='N' or calc_again=="No" or calc_again=='Not'):
print('Exit')
again()
else:
print('Type y/n')
当我尝试输入除Y
和N
之外的任何其他条件时,问题出现了,它只是没有很好地响应,我怀疑它也不区分大小写。
我试图使用:
if calc_again.upper() in agreements:
do..
但它只是给了我相同的结果。
有人可以修复它并解释吗? 另外,使用“ while True
”而不是“ again()
”(11 str)可能更好?
UPD 的最后更改看起来像
def again():
possible_conditions = frozenset(['y', 'yes', 'ya', 'n', 'no', 'not'])
calc_again = input('Go again?')
agreements = frozenset(['y', 'yes', 'ya'])
if calc_again.lower() in possible_conditions:
if calc_again.lower() in agreements:
calc()
else:
print('bye')
exit()
else:
print('choose y or n')
again()
您的问题是您正在检查 calc_again 字符串的 UPPER 版本。 因此,calc_again.upper() 中将始终使用大写字母。 要修复您的代码,只需将您的可能情况列表放在上面。
if (calc_again.upper()=='Y' or calc_again.upper()=='YES' or calc_again.upper()=='YA'):
calc()
elif (calc_again=='N' or calc_again=="NO" or calc_again=='NOT'):
print('Exit')
again()
else:
print('Type y/n')
另外,我认为您必须将 if 语句放在 while 循环中,因为它必须始终根据用户输入执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.