Python里while后的条件不满足时为什么还会执行while下的语句?
课后作业第四讲这里,如果我第一次输入了正确答案,为什么会跳出“你是小甲鱼肚子里的蛔虫吗?!”"哼,猜中了也没有奖励"?因为这两条语句不是在·while下的子代码吗?当while的条件成立时,才运行while下面的子代码,那为何条件不成立时也能跳转到if语句那里?求解答orz
import random
times = 3
secret = random.randint(1,10)
print('----------小甲鱼工作室-----------')
temp = input("不妨猜一下小甲鱼现在想的是哪一个数字:")#让用户随机输入一个数
guess = int(temp)
while (guess != secret) and (times>1):
temp = input("猜错了请重新输入吧:")
guess = int(temp)#如果把变量guess放在前面
times = times - 1
if guess == secret:
print("你是小甲鱼肚子里的蛔虫吗?!")
print("哼,猜中了也没有奖励")
else:
if guess > secret:
print("猜大啦")
else:
print("猜小啦")
if times > 1:
print("再试一次吧:",end = "")
else:
print("机会用光啦")
if times == 3:
print("你是小甲鱼肚子里的蛔虫吗?!")
print("哼,猜中了也没有奖励")
print("游戏结束,不玩啦!")
下面还有代码呢
if times == 3:
print("你是小甲鱼肚子里的蛔虫吗?!")
print("哼,猜中了也没有奖励")
你一次猜中,times就没有改变,仍然是3,所以就输出了 if times == 3:
print("你是小甲鱼肚子里的蛔虫吗?!")
print("哼,猜中了也没有奖励")
print("游戏结束,不玩啦!")
这一段并没有放到while循环中,if语句没有缩进
而第一次回答后,如果回答正确,并不会进入while循环,而times=3,满足times == 3的条件所以输出了“你是小甲鱼肚子里的蛔虫吗?!”"哼,猜中了也没有奖励" 本帖最后由 一点点儿 于 2022-8-11 18:27 编辑
“你是小甲鱼肚子里的蛔虫吗?!”"哼,猜中了也没有奖励"?
这2条语句缩进和while语句相同,所以这两条语句不是在while下的子代码,这两条语句和while同层次、并列,这两条语句会在while执行后执行,
并且当while的条件不成立时,程序跳过while循环体,执行后面的语句,也就是和while同层次的这2条语句 你的问题说明你没有搞清楚 while 用法,其它不是问题
while true: 条件成立能循环下去,没问题吧
那么, while (guess != secret) and (times>1): 这里面guess != secret分析下结果比如猜错情况 7 != 5输出结果是True 对吧因为7本就不等于5啊判断正确,次数也会大于1 也为true
两边true and true 输出还是true ,那就是while true: 条件成立能循环下去喽 鱼cpython学习者 发表于 2022-8-11 17:34
下面还有代码呢
你一次猜中,times就没有改变,仍然是3,所以就输出了
但是如果是下面这样呢?没有了最下面if times ==3 ,它还是能在第一次输入正确就弹出"你是小甲鱼肚子里的蛔虫吗",这是为啥呀
import random
times = 3
secret = random.randint(1,2)
print('----------小甲鱼工作室-----------')
guess = 0
print("不妨猜一下小甲鱼现在想的是哪一个数字:",end="")
while (guess != secret) and (times > 0):
temp = input()
guess = int(temp)
times = times - 1
if guess == secret:
print("你是小甲鱼肚子里的蛔虫吗?!")
print("哼,猜中了也没有奖励")
else:
if guess > secret:
print("猜大啦")
else:
print("猜小啦")
if times > 0:
print("再试一次吧:",end = "")
else:
print("机会用光啦")
print("游戏结束,不玩啦!")
因为你猜中了,所以它执行了if guess ==secret:这个语句了 fish鳞陨 发表于 2022-8-11 22:59
但是如果是下面这样呢?没有了最下面if times ==3 ,它还是能在第一次输入正确就弹出"你是小甲鱼肚子里的 ...
因为你猜中了啊,代码在进入while循环后让你输入,你一次猜中,就执行后面的if guess == secret了啊
页:
[1]