Python 2.7:处理不是字符串的错误输入

Python 2.7: Handling wrong input which is not a string

我正在编写一个程序,它应该包含一种通知用户其中一个变量的输入不是字符串的方法,如果用户以名称的形式输入的话。

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

1
2
3
4
5
ageofdeath.getage('JesusChrist')

33

ageofdeath.getage('John McCena')

这不是圣经中的人物。请输入圣经中某个字符的名称。

但是,当遇到错误的用户输入(如

1
ageofdeat.getage(JesusChrist)

理想情况下,沿着"这不是字符串,请输入一个字符串"的行弹出一条消息。相反,无论我是尝试使用if=还是isinstance,它总是显示典型的python名称未定义错误。是否有一种方法可以绕过这个问题,因为它是Python shell处理输入的默认方法?


你的程序甚至无法执行你的getage()方法。它早就失败了。

你用的是input(),而不是raw_input()。因此,将JesusChrist作为变量名,因为input()将用户类型作为python表达式进行评估。JesusChrist是一个合法的python变量名,它只是没有被定义,所以python告诉您。因为它知道你不能用一个不存在的值做任何事情,它就停止了。

现在,您可以通过将您的input()包装在tryexcept块中来捕获该错误,但这只是试图补偿最初做出的错误决定。正确的答案是使用raw_input()从用户那里获得输入,它始终是一个字符串。