Python 为什么不管输入如何都会引发错误?
我正在为每个人学习Python,我被困在了这个交叉点上。在我看来,只有当'num'不是整数时,才会引发ValueError。但是,当我运行代码时,无论输入如何,每次都会引发错误。有人能把我推向正确的方向吗 广泛的谷歌搜索,但我不完全太确定我应该谷歌什么具体Python 为什么不管输入如何都会引发错误?,python,python-3.x,Python,Python 3.x,我正在为每个人学习Python,我被困在了这个交叉点上。在我看来,只有当'num'不是整数时,才会引发ValueError。但是,当我运行代码时,无论输入如何,每次都会引发错误。有人能把我推向正确的方向吗 广泛的谷歌搜索,但我不完全太确定我应该谷歌什么具体 largest = None smallest = None while True: try: num = input("Enter a number: ") if num != int : raise
largest = None
smallest = None
while True:
try:
num = input("Enter a number: ")
if num != int : raise ValueError
elif num == "done" : break
except ValueError:
print("Error. Please enter an integer or type 'done' to run the program.")
quit()
print("Maximum", largest)
print("Minimum", smallest)
即使输入为整数,代码也始终引发ValueError。此行检查输入的字符串是否与内置类型int完全相同: 另一个问题是输入函数总是返回字符串。因此,如果您想在用户输入数字以外的任何内容时引发ValueError,只需执行以下操作:
inputted = input("Enter a number: ")
num = int(inputted) # raises ValueError when cannot be converted to int
此行检查输入的字符串是否与内置类型int完全相同: 另一个问题是输入函数总是返回字符串。因此,如果您想在用户输入数字以外的任何内容时引发ValueError,只需执行以下操作:
inputted = input("Enter a number: ")
num = int(inputted) # raises ValueError when cannot be converted to int
如果要检查输入的字符串是否可以转换为int,请尝试:
while True:
num = input("Enter a number: ")
if num == "done":
break
try:
num = int(num)
except ValueError:
continue
如果要检查输入的字符串是否可以转换为int,请尝试:
while True:
num = input("Enter a number: ")
if num == "done":
break
try:
num = int(num)
except ValueError:
continue
input始终返回stringIt可能是一个字符串。即使它是一个整数,它也会与int类型不同。您可能的意思是如果不是isinstancenum,int,但这也将始终是真的,因为input始终返回string.num!=int是一个相等比较,而不是类型检查。input始终返回字符串它可能是一个字符串。即使它是一个整数,它也可能与int类型不同。您的意思可能是如果不是isinstancenum,int,但这也将始终为真,因为input始终返回string.num!=int是相等比较,而不是类型检查。