我正在编写一个程序,该程序应该包含一种通知用户其中一个变量的输入不是字符串的方法(如果用户输入的名称)。
E.g。程序期望用户输入任何字符串,如果它是包含在字典中的字符串,它将打印出其值,否则,它将打印出错误消息。
ageofdeath.getage('JesusChrist')
33
ageofdeath.getage('John McCena')
这不是一个圣经人物。请输入圣经中的角色名称。
但是,当遇到错误的用户输入(例如
)时,程序至少应该抛出一条错误消息ageofdeat.getage(JesusChrist)
理想情况下按照“这不是字符串请输入字符串”的方式弹出一条消息。相反,无论我是否尝试使用if
=
或isinstance,它始终显示典型的python 名称未定义错误。有没有办法绕过这个或不是真的,因为它是处理输入的 python shell 的默认方式?
答案 0 :(得分:2)
您的程序甚至无法访问执行getage()
方法的部分。它早就失败了。
您正在使用input()
而不是raw_input()
。因此JesusChrist
被视为变量的名称,因为input()
评估用户键入的内容为Python表达式。 JesusChrist
是一个合法的Python变量名,它还没有被定义,所以Python告诉你。因为它知道你不能用一个不存在的价值做任何事情,它就会停止。
现在,您可以通过将input()
包裹在try
/ except
块中来捕获该错误,但这只是为了弥补在第一次做出错误决定地点。正确的答案是使用raw_input()
来获取用户的输入,它始终是一个字符串。