【问题标题】:exception in input in pythonpython中的输入异常
【发布时间】:2014-06-07 19:39:51
【问题描述】:

运行以下代码时:

try:
   key=int(input())
except ValueError as string:
   print("Error is within:",string)

例如,如果放 'rrr' 这个异常会上升,因为 'rrr' 不支持 (int)

但是,它没有放置实际的字符串,而是放置:“invalid literal for int() with base 10: 'rrr'”

如何使它工作,以便变量“字符串”实际上得到用户提供的错误输入(在本例中,我希望它打印:“错误在:rrr”内)

非常感谢

【问题讨论】:

  • 小提示:只需发布完整的错误信息
  • 我不能这样做,我必须发布一条不包含完整错误消息的给定消息。
  • Pavel 的意思是,发布您使用当前代码获得的确切回溯。

标签: exception python-3.x


【解决方案1】:

存储输入并将其单独转换为 int。

key_str = input()
try:
    key = int(key_str)
except ValueError:
    print("Error is within:", key_str)

【讨论】:

    【解决方案2】:

    您的问题来自变量string 是 ValueError 异常的错误消息。如果您想打印出用户的无效输入,则需要在 try/except 之前创建一个存储用户输入的变量。例如:

    userInput = input()
    try:
       key=int(userInput)
    except ValueError:
       print("Error is within:",userInput)
    

    【讨论】:

    • 你能重新定义input吗?
    • @user3678068 当然可以。 input 只是一个名称,因此您可以将其从内置函数对象重新绑定到函数返回的字符串。
    【解决方案3】:

    你可以只解析错误信息 :D

    print("Error is within:", string.args[0][41:-1])
    

    【讨论】:

    • Exception.messagedeprecated long ago,并从 Python 3 中删除,这是 OP 正在使用的。
    猜你喜欢
    • 1970-01-01
    • 2013-04-14
    • 2013-12-20
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多