鱼C论坛

 找回密码
 立即注册
查看: 3054|回复: 2

[已解决]捕捉异常

[复制链接]
发表于 2017-10-8 00:03:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
场景:在猜数游戏中,如果用户输入非整型数据,程序会异常崩溃,现在要做的就是检查异常,完善用户体验
需求:把检查异常放进循环体,用户输入一次,就检查一次
代码:
  1. import random
  2. secret=random.randint(1,10)
  3. count=1
  4. while count:
  5.         try:
  6.                 temp=input("输入数字")
  7.                 guess=int(temp)
  8.         except ValueError:
  9.                 print ("输入错误")
  10.         if guess ==secret:
  11.                 print ("猜中了")
  12.                 count=0
  13.         else:
  14.                 if guess >secret:
  15.                         print ("大了")
  16.                 else:
  17.                         print ("小了")
复制代码


问题:为什么输入字符a, 运行的结果是“输入错误”——>“大了”——>"输入数字"
难道不是捕捉到异常后返回到循环体的开始部分吗?
最佳答案
2017-10-8 11:16:58
对输入的字符判断是不是数字即可

参考代码:
  1. import random
  2. secret=random.randint(1,10)
  3. count=1
  4. while count:
  5.         temp=''
  6.         while not temp.isdigit():
  7.             temp=input("输入数字")
  8.         guess=int(temp)
  9.         if guess ==secret:
  10.                 print ("猜中了")
  11.                 count=0
  12.         else:
  13.                 if guess >secret:
  14.                         print ("大了")
  15.                 else:
  16.                         print ("小了")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-8 11:16:58 | 显示全部楼层    本楼为最佳答案   
对输入的字符判断是不是数字即可

参考代码:
  1. import random
  2. secret=random.randint(1,10)
  3. count=1
  4. while count:
  5.         temp=''
  6.         while not temp.isdigit():
  7.             temp=input("输入数字")
  8.         guess=int(temp)
  9.         if guess ==secret:
  10.                 print ("猜中了")
  11.                 count=0
  12.         else:
  13.                 if guess >secret:
  14.                         print ("大了")
  15.                 else:
  16.                         print ("小了")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-10-15 15:30:59 | 显示全部楼层
捕获异常后会继续执行excpet后面的语句,
而try中捕获位置后面的语句将被跳过而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 15:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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