鱼C论坛

 找回密码
 立即注册
查看: 1595|回复: 4

[已解决]求助,有关Python课后作业第五讲中,这段小游戏的代码

[复制链接]
发表于 2021-3-2 09:39:38 | 显示全部楼层 |阅读模式

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

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

x
小白求助!
课后作业第五讲中,这段小游戏的代码
-----------------------------------------------------
import random

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

print('------------------我爱鱼C工作室------------------')
guess = 0
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")

while (guess != secret) and (times > 0):
    temp = input()
   
    if temp.isdigit():
        guess = int(temp)
        if guess == secret:
            print("我草,你是小甲鱼心里的蛔虫吗?!")
            print("哼,猜中了也没有奖励!")
        else:
            if guess > secret:
                print("哥,大了大了~~~")
            else:
                print("嘿,小了,小了~~~")
            if times > 1:
                print("再试一次吧:", end='')
            else:
                print("机会用光咯T_T")
    else:
        print("抱歉,您的输入有误,请输入一个整数:", end='')

    times = times - 1 # 用户每输入一次,可用机会就-1

print("游戏结束,不玩啦^_^")
----------------------------------------
把 if temp.isdigit():这段用于判断temp类型的代码
换成
if isinstance(temp,int):
无论我尝试输入什么都会显示:抱歉,您的输入有误,请输入一个整数:
就像if 后面的条件都不满足的样子。
我试着把代码分离出来
temp = 3
if isinstance(temp,int):
    print('ture')
else :
    print('false')
输入的是ture,也就是if后面的条件算作成立。
大大的疑惑,我到底是哪里搞错了呢???


最佳答案
2021-3-2 09:55:20
如果isinstance(temp,int)成立, 还要下一步
guess = int(temp)
这个做什么, 很明显, temp是通过input函数返回的, 类型为str, 所以isinstance(temp, str)才是成立的, 但是这里不能这样做, 这里要判断的是字符串temp中必须为数字类型, 不然不能进行类型转换
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-2 09:41:36 From FishC Mobile | 显示全部楼层
temp是字符串,它永远都不是int
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-2 09:55:20 | 显示全部楼层    本楼为最佳答案   
如果isinstance(temp,int)成立, 还要下一步
guess = int(temp)
这个做什么, 很明显, temp是通过input函数返回的, 类型为str, 所以isinstance(temp, str)才是成立的, 但是这里不能这样做, 这里要判断的是字符串temp中必须为数字类型, 不然不能进行类型转换
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-2 10:09:17 | 显示全部楼层
BSOD 发表于 2021-3-2 09:55
如果isinstance(temp,int)成立, 还要下一步

这个做什么, 很明显, temp是通过input函数返回的, 类型为str ...

谢谢懂了,只要把guess = int(temp),放在上面一步,然后判断guess的类型就行了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-2 10:15:34 | 显示全部楼层
花间竹陌客 发表于 2021-3-2 10:09
谢谢懂了,只要把guess = int(temp),放在上面一步,然后判断guess的类型就行了。

这样也不对, 如果用户输入的是非数字的数据, 就会爆TypeError, 必须要先判断str中是否为纯数字, 即`if temp.isdigit()`
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 10:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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