【问题标题】:Python 2.7: Handling wrong input which is not a stringPython 2.7:处理不是字符串的错误输入
【发布时间】:2015-10-28 20:52:25
【问题描述】:

我正在编写一个程序,该程序应该包含一种通知用户如果用户作为名称输入变量之一的输入不是字符串的方法。

例如程序期望用户输入任何字符串,如果它是包含在字典中的字符串,它将打印出它的值,如果不是,它将打印出一条错误消息。

ageofdeath.getage('JesusChrist')

33

ageofdeath.getage('John McCena')

这不是圣经人物。请输入圣经人物的名字。

但是,程序至少应该在遇到错误的用户输入时抛出错误消息,例如

ageofdeat.getage(JesusChrist)

理想情况下会弹出一条消息“这不是字符串,请输入字符串”。相反,无论我尝试使用if = 还是isinstance,它总是显示典型的python name is not defined 错误。有没有办法解决这个问题,因为它是 python shell 处理输入的默认方式?

【问题讨论】:

  • 用户输入到底是什么样的?您是否要求他们在其周围加上引号?如果是这样,您可能在使用 input 而应该使用 raw_input
  • 这不是错误的输入,它只是代码中的一个错误。

标签: python string python-2.7


【解决方案1】:

您的程序甚至没有到达执行getage() 方法的部分。它的失败要早得多。

您使用的是input() 而不是raw_input()。因此,JesusChrist 被视为 变量的名称,因为 input() 将用户键入的内容评估为 Python 表达式。 JesusChrist 是一个合法的 Python 变量名,它只是没有被定义,所以 Python 会告诉你。因为它知道你不能对不存在的值做任何事情,所以它停止了。

现在您可以通过将input() 包装在try/except 块中来捕获该错误,但这只是为了弥补最初的错误决定。正确的答案是使用raw_input() 从您的用户那里获取输入,它始终是一个字符串。

【讨论】:

    猜你喜欢
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多