Python 如果循环未根据变量类型做出正确判断

Python 如果循环未根据变量类型做出正确判断,python,python-3.x,if-statement,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

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

Python将非空字符串计算为True,将空字符串计算为False

在您的情况下,
judge
函数返回
True
,或者返回一个非空字符串,该字符串也是True;当您评估回报时,
如果判断结果:
总是正确的

如果judge_result==True:起作用,那么
就是python中
==
之间差异的一个很好的例子

尽管如此,您处理数据输入的方式还是有点笨拙;您可以这样做:

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

Python将非空字符串计算为True,将空字符串计算为False

在您的情况下,
judge
函数返回
True
,或者返回一个非空字符串,该字符串也是True;当您评估回报时,
如果判断结果:
总是正确的

如果judge_result==True:
起作用,那么
就是python中
==
之间差异的一个很好的例子

尽管如此,您处理数据输入的方式还是有点笨拙;您可以这样做:

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

由于隐式布尔特性,python将“请键入数字”计算为True。尝试
bool('please type number')
非空字符串是真实的。您应该从
judge()
函数返回
True
False
,然后在调用代码中测试,以决定是否打印错误消息。分开你的顾虑!如果语句由于隐式布尔性而不循环,python会将“请键入数字”计算为True。尝试
bool('please type number')
非空字符串是真实的。您应该从
judge()
函数返回
True
False
,然后在调用代码中测试,以决定是否打印错误消息。分开你的顾虑!如果声明不正确,谢谢!我使用了不同的方法根据返回值检查输入,但是与此方法相比,它实在太大了。谢谢!我使用了一种不同的方法来根据返回值检查输入,但是与此方法相比,它实在太庞大了。