Python-If语句与input()在def()函数内部不起作用

时间:2019-01-30 04:23:02

标签: python function if-statement input

def a()def b()之外,代码中的所有内容都可以正常运行,并且如果检查和input起作用的语句在我运行代码时会导致'good for you'被运行无论输入如何,都可以打印。例如,如果我在代码中键入FalseWhatever会导致不同的结果,则两者都会导致响应'good for you'就像输入总是'True'或{{ 1}}。我已经很久没有编码了,所以如果这很明显,请原谅。

'true'

4 个答案:

答案 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'