为什么while循环得到不正确的结果

时间:2019-07-17 19:39:25

标签: python

问题是:给定正整数num_insects,编写一个while循环,打印该数字加倍但不超过100的数字。在每个数字后面加一个空格。

输入:8 预期输出:timestamp

但实际输出:

8 16 32 64

这是我的代码

8
16
32
64
128

3 个答案:

答案 0 :(得分:0)

这是因为当num_insects为64时,条件num_insects <= 100为true。然后将其乘以2,即128,然后进行打印。要解决此问题,您需要检查num_insects * 2是否小于100,如下所示:

num_insects = int(input("")) 

while num_insects * 2 <= 100:
   if num_insects > 0:
      num_insects *= 2
      print(num_insects)

答案 1 :(得分:0)

当打印128的循环开始时,num_insects的值满足while循环条件。循环开始后,将其更改。

这对您有意义吗?

让我们看一下最终的迭代。

while num_insects <= 100: # Current value is 64
    if_num_insects >0:    # This is true. 64 is greater than 0
        num_insects *= 2  # Double 64. Now it is 128
    print(num_insects)    # Prints 128

这时,num_insects <= 100不再成立,循环退出。

答案 2 :(得分:0)

给定正整数 num_insects,编写一个 while 循环,每次迭代打印然后加倍 num_insects。打印值 ≤ 100。每个数字后跟一个空格。

输入的样本输出:8 8 16 32 64

num_insects = int(input()) # Must be >= 1

while num_insects <= 100:
  print(num_insects, end = ' ')
  num_insects = num_insects *2