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处理输入的默认方法?
- 用户输入到底是什么样的?你要求他们在这件事上加引号吗?如果是这样的话,当你应该使用raw_input的时候,你可能正在使用input。
- 这不是错误的输入,只是代码中的一个错误。
你的程序甚至无法执行你的getage()方法。它早就失败了。
你用的是input(),而不是raw_input()。因此,将JesusChrist作为变量名,因为input()将用户类型作为python表达式进行评估。JesusChrist是一个合法的python变量名,它只是没有被定义,所以python告诉您。因为它知道你不能用一个不存在的值做任何事情,它就停止了。
现在,您可以通过将您的input()包装在try或except块中来捕获该错误,但这只是试图补偿最初做出的错误决定。正确的答案是使用raw_input()从用户那里获得输入,它始终是一个字符串。