如果循环不能根据变量类型做出正确的判断

时间:2018-07-09 00:46:41

标签: python python-3.x if-statement

在下面的代码中,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循环将起作用

1 个答案:

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