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

2024-09-30 18:20:22 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的代码中,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循环就可以了


Tags: intruenumber内容returniftype语句
1条回答
网友
1楼 · 发布于 2024-09-30 18:20:22

Python将非空字符串计算为True,将空字符串计算为False。你知道吗

在您的例子中,judge函数返回True或非空字符串,这也是真的;当您计算返回值时,if judge_result:总是真的。你知道吗

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

相关问题 更多 >