鱼C论坛

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

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

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

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

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

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


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


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

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

while (guess != secret) and (times > 0):
    temp = input()
    guess = int(temp)
    times = times - 1# 用户每输入一次,可用机会就-1     
    if guess == secret:
        print('你是蛔虫么?!')
        print('猜对了也没有奖励!')
    else:
        if guess > secret:
            print('大了大了')
        else:
            print('小了小了')
        if times > 0:
            print('再试一次吧:',end='')
        else:
            print('机会用完了')
print('游戏结束')
最佳答案
2017-8-2 18:54:41
input返回的是字符串类型,用type,isinstance判断永远也是str
http://www.runoob.com/python/python-func-input.html
这里改成用isdigit() 代码如下:
import random
times = 3
secret = random.randint(1,10)

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

while (guess != secret) and (times > 0):
    temp = input()
    while not temp.isdigit():
        print("输入不合法,请重新输入:",end='')
        temp = input()
    guess = int(temp)
    times = times - 1# 用户每输入一次,可用机会就-1     
    if guess == secret:
        print('你是蛔虫么?!')
        print('猜对了也没有奖励!')
    else:
        if guess > secret:
            print('大了大了')
        else:
            print('小了小了')
        if times > 0:
            print('再试一次吧:',end='')
        else:
            print('机会用完了')
print('游戏结束')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

while (guess != secret) and (times > 0):
    temp = input()
    while not temp.isdigit():
        print("输入不合法,请重新输入:",end='')
        temp = input()
    guess = int(temp)
    times = times - 1# 用户每输入一次,可用机会就-1     
    if guess == secret:
        print('你是蛔虫么?!')
        print('猜对了也没有奖励!')
    else:
        if guess > secret:
            print('大了大了')
        else:
            print('小了小了')
        if times > 0:
            print('再试一次吧:',end='')
        else:
            print('机会用完了')
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-6-17 05:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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