【问题标题】:Why is the error raised regardless of input? [duplicate]为什么无论输入如何都会引发错误? [复制]
【发布时间】:2019-10-23 17:52:22
【问题描述】:

我正在为每个人使用 Python,但我被困在了这个路口​​。在我看来,我已经说过 ValueError 只有在 'num' 不是整数时才会被引发。但是,当我运行代码时,无论输入如何,每次都会引发错误。任何人都可以将我推向正确的方向吗?

广泛地用谷歌搜索,但我不太确定我应该用谷歌搜索什么……

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。

【问题讨论】:

  • input() 总是返回一个字符串
  • 可能是一个字符串。
  • 即使是整数,也和类型 int不同。
  • 您的意思可能是if not isinstance(num, int),但总是如此,因为input 总是返回一个字符串。
  • num != int 是相等比较,而不是类型检查。

标签: python python-3.x


【解决方案1】:

如果你想检查输入的字符串是否可以转换成int,试试吧:

while True:
    num = input("Enter a number: ")
    if num == "done":
        break
    try:
        num = int(num)
    except ValueError:
        continue

【讨论】:

    【解决方案2】:

    这行检查输入的字符串是否字面上等于内置类型int

    if num != int : raise ValueError
    

     

    另一个问题是input() 函数总是返回一个字符串。因此,如果您想在用户输入除数字以外的任何内容时引发ValueError,只需执行以下操作:

    inputted = input("Enter a number: ")
    num = int(inputted)  # raises ValueError when cannot be converted to int
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-01
      • 2014-05-08
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      • 1970-01-01
      相关资源
      最近更新 更多