为什么最后的1/2=0.5消不掉呢?
python作业015课中的角谷猜想:n = int(input("请输入一个正整数:"))
while n > 0:
if n%2==0 and n>1:
n=n/2
print(n,'/','2','=',n/2)
else:
n=n*3+1
print(n,'*','3','+','1','=',n*3+1)
if n == 1:
break
输入10:
请输入一个正整数:10
5.0 / 2 = 2.5
16.0 * 3 + 1 = 49.0
8.0 / 2 = 4.0
4.0 / 2 = 2.0
2.0 / 2 = 1.0
1.0 / 2 = 0.5
总是这样,我已经让他n>1了,这是为什么呢? 本帖最后由 isdkz 于 2023-2-4 21:01 编辑
因为你赋值的顺序跟打印的顺序反了
n = 2 的时候进入了 if 分支,然后 n = n / 2 ,所以 n 就成了 1
n = int(input("请输入一个正整数:"))
while n > 0:
if n%2==0:
print(n,'/','2','=',n/2)
n=n/2
else:
print(n,'*','3','+','1','=',n*3+1)
n=n*3+1
if n == 1:
break isdkz 发表于 2023-2-4 20:57
因为你赋值的顺序跟打印的顺序反了
n = 2 的时候进入了 if 分支,然后 n = n / 2 ,所以 n 就成了 1
哦哦,明白了!谢谢你!
页:
[1]