无限除以 2

Infinite dividing by 2

我只是 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,然后结果永远循环。 接下来我该怎么做才能按照我的意愿编写我的代码?

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

while num >= 0:
    num /= 2
    print(num)

永远循环输入没有多大意义,因为你只会陷入无限循环,即使它有一个点,你最终也会得到一个 float 类型 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?: "))

注意 input 之前的 int - 这些将转换 input 函数给定的 str 类型 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)

数字 242 的示例输出被分割 9 次:

0.47265625 #242 / 2 ** 9

您可以通过始终为 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