Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么不管输入如何都会引发错误?_Python_Python 3.x - Fatal编程技术网

Python 为什么不管输入如何都会引发错误?

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

我正在为每个人学习Python,我被困在了这个交叉点上。在我看来,只有当'num'不是整数时,才会引发ValueError。但是,当我运行代码时,无论输入如何,每次都会引发错误。有人能把我推向正确的方向吗

广泛的谷歌搜索,但我不完全太确定我应该谷歌什么具体

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是相等比较,而不是类型检查。