无法弄清楚为什么 int(" ") 表现得很奇怪

Can't figure out why int(" ") is acting weird

所以我正在制作一个代码,从用户那里获取姓名和号码,然后按一个数计算。我正在使用 'while' 和 'try' 来阻止任何非字母通过,但它似乎不适用于空白。我已经使用 idle 来测试 if "int("")" 并且它出现了一个值错误,但是由于某种原因当它在一个函数中时它正在起作用。有任何想法吗?我只留下了其余的代码。

这是我的代码。

testNumber=""

def numQualify(x):
     while x:
         try:
             x=int(x)
         except ValueError:
             print("That was not a proper number.")
             return False
         else:
             print("Great number!")
             break

testNumber=input("Write a number")

while numQualify(testNumber) == False:
    testNumber=input("Please try another number")

print("Done")

在 Python 中,有些东西隐含地算作 False 用于条件的目的,例如 while 循环或 if 语句。空字符串就是其中之一。因此,当您将空字符串传递给 numQualify 时,while x 循环立即终止,并且由于没有 return 语句,它 returns None,和 None != False.

虽然您实际上并不需要 while 循环! x 在 numQualify 期间从不改变。您实际上可以大大简化 numQualify

def numQualify(x):
    try:
        int(x)
    except ValueError:
        print("That was not a proper number.")
        return False
    print("Great number!")
    return True

现在空字符串进入try块,所以没有问题。因为你有 while numQualify(testNumber) == False: 循环,所以你不需要 numQualify

内的循环