求助,有关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后面的条件算作成立。
大大的疑惑,我到底是哪里搞错了呢???
temp是字符串,它永远都不是int 如果isinstance(temp,int)成立, 还要下一步
guess = int(temp)
这个做什么, 很明显, temp是通过input函数返回的, 类型为str, 所以isinstance(temp, str)才是成立的, 但是这里不能这样做, 这里要判断的是字符串temp中必须为数字类型, 不然不能进行类型转换 BSOD 发表于 2021-3-2 09:55
如果isinstance(temp,int)成立, 还要下一步
这个做什么, 很明显, temp是通过input函数返回的, 类型为str ...
谢谢懂了,只要把guess = int(temp),放在上面一步,然后判断guess的类型就行了。 花间竹陌客 发表于 2021-3-2 10:09
谢谢懂了,只要把guess = int(temp),放在上面一步,然后判断guess的类型就行了。
这样也不对, 如果用户输入的是非数字的数据, 就会爆TypeError, 必须要先判断str中是否为纯数字, 即`if temp.isdigit()`
页:
[1]