花间竹陌客 发表于 2021-3-2 09:39:38

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

小白求助!
课后作业第五讲中,这段小游戏的代码
-----------------------------------------------------
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后面的条件算作成立。
大大的疑惑,我到底是哪里搞错了呢???


wp231957 发表于 2021-3-2 09:41:36

temp是字符串,它永远都不是int

BSOD 发表于 2021-3-2 09:55:20

如果isinstance(temp,int)成立, 还要下一步
guess = int(temp)
这个做什么, 很明显, temp是通过input函数返回的, 类型为str, 所以isinstance(temp, str)才是成立的, 但是这里不能这样做, 这里要判断的是字符串temp中必须为数字类型, 不然不能进行类型转换

花间竹陌客 发表于 2021-3-2 10:09:17

BSOD 发表于 2021-3-2 09:55
如果isinstance(temp,int)成立, 还要下一步

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

谢谢懂了,只要把guess = int(temp),放在上面一步,然后判断guess的类型就行了。

BSOD 发表于 2021-3-2 10:15:34

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

这样也不对, 如果用户输入的是非数字的数据, 就会爆TypeError, 必须要先判断str中是否为纯数字, 即`if temp.isdigit()`
页: [1]
查看完整版本: 求助,有关Python课后作业第五讲中,这段小游戏的代码