我想只能猜三次,为什么可以猜四次?
我认为第一次也是会进入循环的,难道第一次猜数字不算吗?temp = input("猜一猜我想的数字是几:")
guess = int(temp)
times = 3
while (guess != 12) and (times > 0):
if guess > 12:
print("猜大啦!")
else:
print("猜小啦!")
temp = input("再猜一猜:")
guess = int(temp)
times = times - 1
if guess == 12:
print("你猜对啦!真厉害!")
else:
print("三次机会都用完了,大侠请重新来过!")
while下面的语句都有缩进,估计是复制进来没有显示缩进,可以正常运行,但是可以猜4次。 本帖最后由 jackz007 于 2022-10-30 10:50 编辑
肯定是你的 times = times - 1 的缩进有问题,你为什么不整理出一个你认为缩进正确的版本,却偏偏要贴出一个缩进错误的代码?如果你的代码真的就像你说的那样,运行正常的话,还有必要求助吗?
guess = 0
times = 3
while (guess != 12) and (times > 0):
guess = int(input("猜一猜我想的数字是几:"))
if guess == 12:
print("你猜对啦!真厉害!")
elif guess > 12:
print("猜大啦!")
else:
print("猜小啦!")
times = times - 1
else :
print("三次机会都用完了,大侠请重新来过!") jackz007 发表于 2022-10-30 10:46
肯定是你的 times = times - 1 的缩进有问题,你为什么不整理出一个你认为缩进正确的版本,却偏偏 ...
我是想知道这么写错在哪里了。如果带上缩进则如下。此外,我没表达清楚,正常运行指的是,除了可以猜4次外,其他都正常,但是我想的是只能猜3次。请问这样是错在哪了呢?我理解这么写应该只能猜3次呀
temp = input("猜一猜我想的数字是几:")
guess = int(temp)
times = 3
while (guess != 12) and (times > 0):
if guess > 12:
print("猜大啦!")
else:
print("猜小啦!")
temp = input("再猜一猜:")
guess = int(temp)
times = times - 1
if guess == 12:
print("你猜对啦!真厉害!")
else:
print("三次机会都用完了,大侠请重新来过!")
由于在循环外也猜了一次,所以一共是4次:
循环外猜,第一次,此时 time 的值为 3;
循环内猜,第二次,此时 time 的值变成 2;
循环内猜,第三次,此时 time 的值变成 1;
循环内猜,第四次,此时 time 的值变成 0;
不满足循环条件,退出循环 tommyyu 发表于 2022-10-30 11:09
由于在循环外也猜了一次,所以一共是4次:
循环外猜,第一次,此时 time 的值为 3;
循环内猜,第二次, ...
这个我曾经考虑过,然而,当猜10时,就会跳出”猜小啦“。那这样肯定是进入循环了呀,那进入循环,times就会被减一,所以猜第一次后,times就应该是2了。我是这么理解的 练习自己画各流程或逻辑图,有助于你梳理程序运行。 弹钢琴的花脸龙 发表于 2022-10-30 11:22
这个我曾经考虑过,然而,当猜10时,就会跳出”猜小啦“。那这样肯定是进入循环了呀,那进入循环,times ...
首先,执行前三行,猜了一次;
然后,执行循环里面的 if-else ,此时就会输出“猜小了”
接下来,执行再猜一次,此时是猜了第二次,但是 times = times - 1只执行了一次 弹钢琴的花脸龙 发表于 2022-10-30 11:22
这个我曾经考虑过,然而,当猜10时,就会跳出”猜小啦“。那这样肯定是进入循环了呀,那进入循环,times ...
如果要改正,可以把 times = times - 1 放在循环的开头 tommyyu 发表于 2022-10-30 11:31
如果要改正,可以把 times = times - 1 放在循环的开头
哈哈,我也正在用这个方式改。但是出来的效果还是猜了四次。很奇怪。
temp = input("猜一猜我想的数字是几:")
guess = int(temp)
times = 3
while (guess != 12) and (times > 0):
times = times - 1
if guess > 12:
print("猜大啦!")
else:
print("猜小啦!")
temp = input("再猜一猜:")
guess = int(temp)
if guess == 12:
print("你猜对啦!真厉害!")
else:
print("三次机会都用完了,大侠请重新来过!")
本帖最后由 tommyyu 于 2022-10-30 11:47 编辑
弹钢琴的花脸龙 发表于 2022-10-30 11:37
哈哈,我也正在用这个方式改。但是出来的效果还是猜了四次。很奇怪。
temp = input("猜一猜我想的数字 ...
{:10_262:}应该是因为在循环内的输入是在判断后再执行的 times = times - 1这一条语句的
循环外输入一次,times = times - 1
第二次输入后,此时times 是 2,满足条件,然后执行 times = times - 1
第三次输入后,此时times 是 1,满足条件,然后执行 times = times - 1
第四次输入后,此时times 是 0,不满足条件,输入后会跳出循环
(实在不行可以再循环外面加一个times = times - 1,或者这样写:temp = input("猜一猜我想的数字是几:")
guess = int(temp)
times = 3
while (guess != 12):
times = times - 1
if times == 0:
break
if guess > 12:
print("猜大啦!")
else:
print("猜小啦!")
temp = input("再猜一猜:")
guess = int(temp)
if guess == 12:
print("你猜对啦!真厉害!")
else:
print("三次机会都用完了,大侠请重新来过!")
) tommyyu 发表于 2022-10-30 11:41
应该是因为在循环内的输入是在判断后再执行的 times = times - 1这一条语句的
循环外输入一 ...
谢谢,也是可以。但是前面错在哪里呢?很奇怪呀 本帖最后由 tommyyu 于 2022-10-30 12:04 编辑
弹钢琴的花脸龙 发表于 2022-10-30 11:59
谢谢,也是可以。但是前面错在哪里呢?很奇怪呀
如果是在循环内输入的话,比如执行了循环内的temp = input("在猜一猜:")和guess = int(temp) 这两个语句以后,是 先进行判断(guess != 12) and (times > 0),此时times = times - 1一句并没有执行到,在判断后才会被执行 tommyyu 发表于 2022-10-30 12:02
如果是在循环内输入的话,比如执行了循环内的temp = input("在猜一猜:")和guess = int(temp) 这两个语 ...
是的是的,是这个意思。明白了,谢谢!
页:
[1]