无法弄清楚为什么 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
内的循环
所以我正在制作一个代码,从用户那里获取姓名和号码,然后按一个数计算。我正在使用 '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