gpt4 book ai didi

python - 我如何在 Python 中捕获 NameError?

转载 作者:行者123 更新时间:2023-11-28 20:23:28 25 4
gpt4 key购买 nike

我一直在尝试用 python 编写一个简单的程序来使用类和测试属性。它要求用户输入其中一个名称,并使用该输入显示该名称的 2 个属性。我试图包含一个 try...except block 来捕获在键入尚未定义为对象名称的内容时发生的 NameError,但我仍然得到此回溯:

Traceback (most recent call last):
File "C:/Users/Bede/Documents/Technology/Programming/Python/276/testcode", line 18, in <module>
animalName = input(">")
File "<string>", line 1, in <module>
NameError: name 'Marmadukke' is not defined

我知道这可能不是最好的做事方式,所以我愿意接受所有建议。

我的完整代码在这里:

class Dog(object):
def __init__(self,name,chasesCats):
self.name = name
self.chasesCats = chasesCats

class Cat(object):
def __init__(self,name,chasesMice):
self.name = name
self.chasesMice = chasesMice

Marmaduke = Cat("Marmaduke",True)
Timmy = Cat("Timmy",False)
Cerberus = Dog("Cerberus",True)
Max = Dog("Max",False)

print("Enter Marmaduke, Timmy, Max or Cerberus.")

animalName = input(">")
while 1:
try:
if isinstance(animalName,Cat):
print("Cat")
if animalName.chasesMice:
print("Chases mice")
else: print("Doesn't chase mice")
if isinstance(animalName,Dog):
print("Dog")
if animalName.chasesCats:
print("Chases cats")
else: print("Doesn't chase cats")
break
except NameError:
print("Try again!")

最佳答案

我猜您使用的是 python2.x。在这种情况下,您应该使用 raw_input 而不是 input。问题是在 python2.x 上,input 对您输入的数据调用 eval。我想,这意味着您可以输入数据为 "Marmaduke"(注意引号)。但是,根据您使用的是 python2.x 还是 3.x,让程序表现不同似乎是不可取的。

使代码同时适用于 python2.x 和 python3.x 的简单方法:

try:
raw_input
except NameError:
raw_input = input

关于python - 我如何在 Python 中捕获 NameError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20448435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com