无限除以2

时间:2018-08-22 10:50:42

标签: python python-3.x while-loop infinite-loop division

我只是python的初学者。我正在尝试制作一个将数字(用户输入)无限地除以2的脚本。我的意思是,如果用户输入,则应像这样对它进行除法: “ 40/2 20/2 10/2 5/2 2.5 / 2 ...” 我的代码如下:

print ('please insert a number')
num = input()
num=float(num)
while(num<1000):
    print(num/2)

输出只是用户输入除以2,然后结果永远循环。 接下来我该怎么做才能编写我的代码?

3 个答案:

答案 0 :(得分:2)

您可以通过始终为True的条件构造无限循环,例如标量True

num = float(input('Please insert a number:\n'))

while True:
    num /= 2
    print(num)

实际上,这没有用。例如,您可以轻松地插入break语句,以便在达到下限时停止循环。在这里,当float值与0不可区分时,结束循环。

num = float(input('Please insert a number:\n'))

while True:
    num /= 2
    print(num)
    if num == 0:
        break

初始输入为500的示例:

Please insert a number:
500
250.0
125.0
62.5
...
3.06e-322
1.53e-322
8e-323
4e-323
2e-323
1e-323
5e-324
0.0

答案 1 :(得分:1)

永远不输入是没有意义的,因为您将陷入无限循环,即使有一点,您最终也将以浮点类型0.0结束,因为操作转到0。

如果要让用户将提供的数字除以2 n次,可以使用以下简短程序:

首先,您需要要求用户提供您要除以的数字:

number = int(input("Insert the number you want to divide by 2: "))

接下来,您需要输入要除以2的次数。

n = int(input("How many times you want to divide the number by 2?: "))

请注意int之前的input-它们将转换str函数input类型给定的int类型。如果这一次看起来太多了,您可以这样做:

n = input("How many times you want to divide the number by 2?: ") 
n = int(n)

现在,您可以编写逻辑了。我们可以使用**运算符,首先将2提高n次,然后将数字除(记住数学运算顺序):

answer = number / 2 ** n
print(answer)

数字2429次的示例输出:

0.47265625 #242 / 2 ** 9

答案 2 :(得分:0)

首先,您应该在while内更新num,如果希望循环在达到0时停止,则应将其用作while语句的条件

<div id="flipbook">
  <div class="hard"> Turn.js </div>
  <div class="hard"></div>
  <div> Page 1 </div>
  <div> Page 2 </div>
  <div> Page 3 </div>
  <div> Page 4 </div>
  <div class="hard"></div>
  <div class="hard"></div>
</div>