来生做春风 发表于 2020-3-2 21:23:41

(第四课习题)求大神解答!!关于循环次数的疑问

import random
secret = random.randint(1,20)
print(secret)
temp = input("猜一下我心里的数字:")
guess = int(temp)
i = 1
while i>0 and guess!=secret:
    i = i - 1
    if guess > secret:
      print("大了大了")
    else:
      print("小了小了")
    temp = input("猜错了,再猜一次吧:")
    guess = int(temp)
if i>0:
    print("猜对了,游戏结束")
else:
    print("机会用完,答案是"+str(secret))

以上是程序代码,为什么我的循环次数i=1,但是跑程序时循环会跑2次呢?
12
猜一下我心里的数字:13
大了大了
猜错了,再猜一次吧:14
机会用完,答案是12

莫的感情的路人 发表于 2020-3-2 21:33:48

你并没有进入第二次循环,只是在第一次循环最后执行了input才结束循环。
而且根据结果可以看到你输入14并没有得到对错的反馈,而是脱离了循环执行最后一句

jackz007 发表于 2020-3-2 21:50:57

本帖最后由 jackz007 于 2020-3-2 21:55 编辑

    给你一个参考代码:
import random
secret = random . randint(1 , 20)
i = 3
while i:
    guess = int(input("猜一下我心里的数字:"))
    i -= 1
    if guess == secret:
      print("猜对了,游戏结束")
      break
    else:
      if guess > secret:
            print("大了大了")
      else:
            print("小了小了")
      if i:
            print('猜错了,再猜一次吧!\n')
else:
    print("机会用完,答案是" , secret)

    1 ~20 的范围,3 次就能猜中的概率是 3 / 20 = 15%,基本上就是中大奖的节奏!!!

yjptx121 发表于 2020-3-2 22:16:05

缩进缩进缩进...很重要

来生做春风 发表于 2020-3-2 22:54:44

莫的感情的路人 发表于 2020-3-2 21:33
你并没有进入第二次循环,只是在第一次循环最后执行了input才结束循环。
而且根据结果可以看到你输入14并 ...

哇!谢谢你的解答,解释得很棒!
页: [1]
查看完整版本: (第四课习题)求大神解答!!关于循环次数的疑问