|
发表于 2023-5-7 16:05:00
|
显示全部楼层
我也来凑个热闹(ChatGPT):
这是因为 Ctrl+C 和 Ctrl+D 实际上是操作系统级别的组合键,当你按下这些组合键时,终端会立即中止程序运行,而不是生成一个异常。因此,我们需要使用 try...except 语句捕获并处理这些操作系统级别的信号。
下面是修改过的代码:
- import random
- secret = random.randint(1,10)
- print('------------------我爱鱼C工作室------------------')
- try:
- temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
- guess = int(temp)
- except ValueError:
- print('输入错误!重新输入')
- temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
- guess = int(temp)
- except (EOFError, KeyboardInterrupt):
- print('再见!')
- exit()
- while guess != secret:
- try:
- temp = input("哎呀,猜错了,请重新输入吧:")
- guess = int(temp)
- except ValueError:
- print('输入错误!重新输入')
- except (EOFError, KeyboardInterrupt):
- print('再见!')
- exit()
- if guess == secret:
- print("我草,你是小甲鱼心里的蛔虫吗?!")
- print("哼,猜中了也没有奖励!")
- else:
- if guess > secret:
- print("哥,大了大了~~~")
- else:
- print("嘿,小了,小了~~~")
- print("游戏结束,不玩啦^_^")
复制代码
在这个版本的代码中,我们使用了两个 try...except 语句。第一个 try...except 语句用于捕获初始输入时可能发生的 ValueError 异常和 EOFError 和 KeyboardInterrupt 异常,以提高程序的健壮性。如果发生了 ValueError 异常,则提示用户重新输入。如果发生了 EOFError 或 KeyboardInterrupt 异常,则直接退出程序。
第二个 try...except 语句用于捕获猜数字时可能发生的 ValueError 异常和 EOFError 和 KeyboardInterrupt 异常。如果发生了 ValueError 异常,则提示用户重新输入。如果发生了 EOFError 或 KeyboardInterrupt 异常,则直接退出程序。
这样,即使用户按下了 Ctrl+C 或 Ctrl+D,程序也能够优雅地退出,避免了运行时错误,并且可以提供更好的用户体验。 |
|