除def a()
和def b()
之外,代码中的所有内容都可以正常运行,并且如果检查和input
起作用的语句在我运行代码时会导致'good for you'
被运行无论输入如何,都可以打印。例如,如果我在代码中键入False
或Whatever
会导致不同的结果,则两者都会导致响应'good for you'
就像输入总是'True'
或{{ 1}}。我已经很久没有编码了,所以如果这很明显,请原谅。
'true'
答案 0 :(得分:1)
您需要将if语句从
if ans == 'True' or 'true':
至if ans == 'True' or ans == 'true':
请参见以下代码:
def a():
print('you like short lists? (True or False)')
ans = input()
if ans == 'True' or ans == 'true': # if ans.lower() == 'true':
return '\ngood for you'
elif ans == 'False' or 'false':
return '\nstop making short lists then'
else:
return '\nstop printing the wrong things loser'
理由
如果您选中ans == 'True' or 'true
,则始终会生成'True'
,它是OR
条件下的第一个值。
bool('any value')
始终为True
答案 1 :(得分:1)
仔细看这行
ans == 'True' or 'true'
这将始终返回True
您可以尝试
print(bool('False' == 'True' or 'true'))
print(bool(-999 == 'True' or 'true'))
print(bool('Unicorn' == 'True' or 'true'))
查看其真实值。
要解决此问题,您可以将ans == 'True' or 'true'
替换为
if ans in ['True', 'true']:
或
if ans.lower() == 'true':
希望这会有所帮助。
答案 2 :(得分:1)
if ans == 'True' or 'true'
应该是
if ans == 'True' or ans == 'true'
与其他类似情况相同,因为if 'non-empty string'
的值为True
答案 3 :(得分:1)
您的问题是您在函数中的条件如下:
ans == 'True' or 'true'
python解释器将其视为:
(ans == 'True') or ('true')
,在if语句中使用非空字符串时,其值为true。
将其更改为此:
ans == 'True' or ans == 'true'