2 回答

TA贡献1770条经验 获得超3个赞
从文档中,“每当请求 dict() 对象(使用格式 a = adict[key])并且键不在字典中时,Python 就会引发 KeyError。” 因此,您应该检查 except 块中的 keyerror :
try:
c2 = ....
except KeyError:
print("\n>>>An exception occured ~ invalid i/p")
print("\t~Customer not in database")
编辑: 您可以将您的 try/except 重组为:
try:
c2 = input("Customer 2")
customer2 = BankSystem.c[c2]
if "c2" in BankSystem.c: ## check for valid account id
print(customer2)
amount = float(input("Amount to transfer "))
self.tranfer(customer2, amount)
else:
print("\n>>>>>>>account:{} does not exist".format("c2"))
print(self)
print(customer2)
except KeyError:
print("\n>>>An exception occured ~ invalid i/p")
print("\t~Customer not in database")
except ValueError:
print("\n>>>An exception occured ~ invalid i/p")
print("\t~Non-numeric data entered")

TA贡献1828条经验 获得超6个赞
it gives me a keyerror
这是因为在这一行中
customer2 = BankSystem.c[c2]
您正在尝试dict使用密钥c2(由用户提供)访问。如果没有这样的键KeyError发生。请注意,try-except您可以通过dict以下方式检查是否有键,而不是使用:
d = {'a':1}
k = input('key:')
if k in d.keys():
print('key present')
else:
print('key not present')
key present如果您提供它a以及key not present在所有其他情况下将打印。
添加回答
举报