关于这个代码求助
import randomsecret = random.randint(1,10)
chance = 3
guess = 0
print("猜猜小甲鱼心里的数字:",end='')
while chance > 0 and guess != secret:
temp = input()
if temp.isdigit():
guess = int(temp)
if guess == secret:
print("我草,你是小甲鱼心里的蛔虫吗?")
print("哼,猜中了也没奖励")
else:
if guess > secret:
print("大了大了")
else:
print("小了小了")
if chance > 1:
print("请再试一次吧:",end='')
else:
print("机会用光咯")
chance = chance - 1
elif guess <= 0 or guess > 10 or guess == float:
print("输入有误,请输入1-10之间的整数")
else:
print("抱歉,您的输入有误,请输入一个整数:",end='')
print("游戏结束,不玩啦")
这是萌新我尝试改进这个程序写的代码,问题出在倒数第5行那里,请问一下为什么guess<=0 or guess>10这个部分运行的时候没有效果而后面的guess==float又可以执行??求大神讲解一波,教下我如何改进!!谢谢! 因为前面有 isdigit() 如果输入的是整数 ,就会进第一个 if
问题在于,第一个判断的时候没有判断是否在范围内, 只是判断是否为整数 当你输入100时,在if temp.isdigit()的时候就为True了,所以执行不到后面的elif
guess==float是不可行的,但是,当你输入5.4时,因为满足guess <= 0,而你用的是or,所以条件成立
import random
secret = random.randint(1,10)
chance = 3
guess = 0
print("猜猜小甲鱼心里的数字:",end='')
while chance > 0 and guess != secret:
temp = input()
if temp.isdigit():
if int(temp) > 10 or int(temp) == 0:
print("输入有误,请输入1-10之间的整数")
continue
else:
if temp == "-" and temp.isdigit():
print("输入有误,请输入1-10之间的整数")
continue
elif "." in temp and (temp.isdigit() or temp.isdigit()):
print("输入有误,请输入1-10之间的整数")
continue
else:
print("抱歉,您的输入有误,请输入一个整数:",end='')
continue
if temp.isdigit():
guess = int(temp)
if guess == secret:
print("我草,你是小甲鱼心里的蛔虫吗?")
print("哼,猜中了也没奖励")
else:
if guess > secret:
print("大了大了")
else:
print("小了小了")
if chance > 1:
print("请再试一次吧:",end='')
else:
print("机会用光咯")
chance = chance - 1
print("游戏结束,不玩啦") import random
secret = random.randint(1,10)
chance = 3
guess = 0
print("猜猜小甲鱼心里的数字:",end='')
while chance > 0 and guess != secret:
temp = input()
if temp.isdigit():#这是第一个判断
guess = int(temp)
if guess == secret:
print("我草,你是小甲鱼心里的蛔虫吗?")
print("哼,猜中了也没奖励")
else:
if guess > secret:
print("大了大了")
else:
print("小了小了")
if chance > 1:
print("请再试一次吧:",end='')
else:
print("机会用光咯")
chance = chance - 1
elif guess <= 0 or guess > 10 or guess == float: 这是第二个判断
print("输入有误,请输入1-10之间的整数")
else:
print("抱歉,您的输入有误,请输入一个整数:",end='')
print("游戏结束,不玩啦")
用户输入11 ,判断为整数 直接进入第一个分支,不会再判断是否在1到10
改进:首先要判断这个数是否在1到10,再验算是否是正确数字
柿子饼同学 发表于 2022-7-8 17:28
因为前面有 isdigit() 如果输入的是整数 ,就会进第一个 if
问题在于,第一个判断的时候没有判断是否在 ...
懂啦,谢谢指正! 青出于蓝 发表于 2022-7-8 17:40
import random
secret = random.randint(1,10)
chance = 3
谢谢指正!!!
页:
[1]