鱼C论坛

 找回密码
 立即注册
查看: 1295|回复: 3

[已解决]第005讲中在随机赋值情况下判断输入类型错误

[复制链接]
发表于 2017-8-2 18:29:27 | 显示全部楼层 |阅读模式

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

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

x
在论坛中004讲的课后习题把文字游戏进行了修改,而在005讲的课后习题的修改答案不是基于004讲课后习题答案之上的
然后自己在做题时候遇到了瓶颈,不知道把“while not isinstance(temp,int)”这句话加在语句哪里
我个人觉得这句话还是得修改的,烦请论坛大神指点迷津,谢谢~


QQ截图20170802182749.png QQ截图20170802182257.png



  1. import random
  2. times = 3
  3. secret = random.randint(1,10)

  4. print('---------------------------1234567890---------------------------')
  5. guess = 0# 这里先给guess赋值(赋一个绝对不等于secret的值)
  6. print('不妨猜一下现在想的是哪个数字:',end='')

  7. while (guess != secret) and (times > 0):
  8.     temp = input()
  9.     guess = int(temp)
  10.     times = times - 1# 用户每输入一次,可用机会就-1     
  11.     if guess == secret:
  12.         print('你是蛔虫么?!')
  13.         print('猜对了也没有奖励!')
  14.     else:
  15.         if guess > secret:
  16.             print('大了大了')
  17.         else:
  18.             print('小了小了')
  19.         if times > 0:
  20.             print('再试一次吧:',end='')
  21.         else:
  22.             print('机会用完了')
  23. print('游戏结束')
复制代码

最佳答案
2017-8-2 18:54:41
input返回的是字符串类型,用type,isinstance判断永远也是str
http://www.runoob.com/python/python-func-input.html
这里改成用isdigit() 代码如下:
  1. import random
  2. times = 3
  3. secret = random.randint(1,10)

  4. print('---------------------------1234567890---------------------------')
  5. guess = 0# 这里先给guess赋值(赋一个绝对不等于secret的值)
  6. print('不妨猜一下现在想的是哪个数字:',end='')

  7. while (guess != secret) and (times > 0):
  8.     temp = input()
  9.     while not temp.isdigit():
  10.         print("输入不合法,请重新输入:",end='')
  11.         temp = input()
  12.     guess = int(temp)
  13.     times = times - 1# 用户每输入一次,可用机会就-1     
  14.     if guess == secret:
  15.         print('你是蛔虫么?!')
  16.         print('猜对了也没有奖励!')
  17.     else:
  18.         if guess > secret:
  19.             print('大了大了')
  20.         else:
  21.             print('小了小了')
  22.         if times > 0:
  23.             print('再试一次吧:',end='')
  24.         else:
  25.             print('机会用完了')
  26. print('游戏结束')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-2 18:54:41 | 显示全部楼层    本楼为最佳答案   
input返回的是字符串类型,用type,isinstance判断永远也是str
http://www.runoob.com/python/python-func-input.html
这里改成用isdigit() 代码如下:
  1. import random
  2. times = 3
  3. secret = random.randint(1,10)

  4. print('---------------------------1234567890---------------------------')
  5. guess = 0# 这里先给guess赋值(赋一个绝对不等于secret的值)
  6. print('不妨猜一下现在想的是哪个数字:',end='')

  7. while (guess != secret) and (times > 0):
  8.     temp = input()
  9.     while not temp.isdigit():
  10.         print("输入不合法,请重新输入:",end='')
  11.         temp = input()
  12.     guess = int(temp)
  13.     times = times - 1# 用户每输入一次,可用机会就-1     
  14.     if guess == secret:
  15.         print('你是蛔虫么?!')
  16.         print('猜对了也没有奖励!')
  17.     else:
  18.         if guess > secret:
  19.             print('大了大了')
  20.         else:
  21.             print('小了小了')
  22.         if times > 0:
  23.             print('再试一次吧:',end='')
  24.         else:
  25.             print('机会用完了')
  26. print('游戏结束')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-8-2 19:14:50 | 显示全部楼层
ba21 发表于 2017-8-2 18:54
input返回的是字符串类型,用type,isinstance判断永远也是str
http://www.runoob.com/python/python-func- ...

谢谢实习版主~
刚才看到回复后我试了下的确可以。

我在做条件的时候的考虑有点狭隘了,思路方面有点不清晰,谢谢您指点迷津
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-2 19:31:42 | 显示全部楼层
gengzhi 发表于 2017-8-2 19:14
谢谢实习版主~
刚才看到回复后我试了下的确可以。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-25 02:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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