鱼C论坛

 找回密码
 立即注册
查看: 3520|回复: 7

[已解决]不理解

[复制链接]
发表于 2023-5-7 16:05:00 | 显示全部楼层
我也来凑个热闹(ChatGPT):
这是因为 Ctrl+C 和 Ctrl+D 实际上是操作系统级别的组合键,当你按下这些组合键时,终端会立即中止程序运行,而不是生成一个异常。因此,我们需要使用 try...except 语句捕获并处理这些操作系统级别的信号。

下面是修改过的代码:

  1. import random

  2. secret = random.randint(1,10)
  3. print('------------------我爱鱼C工作室------------------')
  4. try:
  5.     temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
  6.     guess = int(temp)
  7. except ValueError:
  8.     print('输入错误!重新输入')
  9.     temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
  10.     guess = int(temp)
  11. except (EOFError, KeyboardInterrupt):
  12.     print('再见!')
  13.     exit()
  14. while guess != secret:
  15.     try:
  16.         temp = input("哎呀,猜错了,请重新输入吧:")
  17.         guess = int(temp)
  18.     except ValueError:
  19.         print('输入错误!重新输入')
  20.     except (EOFError, KeyboardInterrupt):
  21.         print('再见!')
  22.         exit()
  23.     if guess == secret:
  24.         print("我草,你是小甲鱼心里的蛔虫吗?!")
  25.         print("哼,猜中了也没有奖励!")
  26.     else:
  27.         if guess > secret:
  28.             print("哥,大了大了~~~")
  29.         else:
  30.             print("嘿,小了,小了~~~")

  31. print("游戏结束,不玩啦^_^")
复制代码

在这个版本的代码中,我们使用了两个 try...except 语句。第一个 try...except 语句用于捕获初始输入时可能发生的 ValueError 异常和 EOFError 和 KeyboardInterrupt 异常,以提高程序的健壮性。如果发生了 ValueError 异常,则提示用户重新输入。如果发生了 EOFError 或 KeyboardInterrupt 异常,则直接退出程序。

第二个 try...except 语句用于捕获猜数字时可能发生的 ValueError 异常和 EOFError 和 KeyboardInterrupt 异常。如果发生了 ValueError 异常,则提示用户重新输入。如果发生了 EOFError 或 KeyboardInterrupt 异常,则直接退出程序。

这样,即使用户按下了 Ctrl+C 或 Ctrl+D,程序也能够优雅地退出,避免了运行时错误,并且可以提供更好的用户体验。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-28 07:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表