在下面的代码中,if循环不采用条件(为true),而是转到elif
语句。我正在尝试使用if
语句来控制哪些内容可以进入列表,哪些内容不能:
average = []
def judge(result):
try:
float(result)
return True
except ValueError:
return 'please type number'
list_in = input('Type in your number,type y when finished.\n')
judge_result = judge(list_in)
if judge_result:
aver_trac = aver_trac + 1
average.append(list_in)
print('success')
elif isinstance(judge_result, str):
print(judge_result)
但是如果我指定
if judge_result == True:
然后,此if循环将起作用
答案 0 :(得分:1)
Python将非空字符串评估为True,将空字符串评估为False。
在您的情况下,judge
函数返回True
或非空字符串,该字符串也为True;在评估收益时,if judge_result:
始终为True。
if judge_result == True:
有效的事实很好地说明了Python中==
和is
之间的区别
说了这么多,处理数据输入的方式有点尴尬;您可以改为执行以下操作:
average = []
while True:
list_in = input('Type in your number,type y when finished.\n')
if list_in == 'y':
break
try:
average.append(float(list_in))
except ValueError:
print('please type number')