所以我正在创建一个代码,该代码从用户那里获取一个名称和数字,然后用一个来计算。我正在使用'while'和'try'来阻止任何非字母通过,但它似乎不适用于空白。我已经使用idle来测试是否“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")
答案 0 :(得分:4)
在Python中,为了像False
循环或while
语句这样的条件,有些东西隐含地计为if
。空字符串就是其中之一。因此,当您将空字符串传递给numQualify
时,while x
循环会立即终止,并且由于没有return语句,它将返回None
和None != False
。
你实际上并不需要一个while循环! numQualify期间x
永远不会更改。实际上你可以简单地简化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