为了账号安全,请及时绑定邮箱和手机立即绑定

我的代码在 python 3 中的 try 和 except 函数中没有按预期运行

我的代码在 python 3 中的 try 和 except 函数中没有按预期运行

吃鸡游戏 2021-10-10 16:02:53
所以我在使用 Python 时遇到了一个奇怪的问题,它与 try 和 except 函数有关。它应该允许我重新输入客户,在这种情况下是 c2,因为 c1 正在将资金转移到 c2。但是,它给了我一个关键错误,而不是说用户不在数据库中并要求我重新输入客户名称。尽管存在视觉错误而不是功能错误,但在下面的代码中第二次使用 try 和 except 仍然有效。我尝试更改我使用 try 和 except 的位置,并尝试在线搜索但没有找到解决方案。我只使用 Python 几个月,它就在那个时候断断续续。elif option == 3:            print("Option", 3)            try:                    c2 = input("Customer 2")                    customer2 = BankSystem.c[c2]            except ValueError:                print("\n>>>An exception occured ~ invalid i/p")                print("\t~Customer not in database")            print()            if "c2" in BankSystem.c: ## check for valid account id                print(customer2)            try:                    amount = float(input("Amount to transfer "))                    self.tranfer(customer2, amount)            except ValueError:                print("\n>>>An exception occured ~ invalid i/p")                print("\t~Non-numeric data entered")            else:                print("\n>>>>>>>account:{} does not exist".format("c2"))            print(self)            print(customer2)
查看完整描述

2 回答

?
德玛西亚99

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")


查看完整回答
反对 回复 2021-10-10
?
30秒到达战场

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在所有其他情况下将打印。


查看完整回答
反对 回复 2021-10-10
  • 2 回答
  • 0 关注
  • 292 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号