- 角谷猜想
- 2017-10-13 09:04:50 @
n=0
a=0
while(a!=1):
a=int(input())
0<=a<=10000
n=n+1
if a%2==0:
a=a//2
else:
a=a*3+1
print(n)
2 条评论
-
李月启 LV 10 @ 2017-10-13 22:10:19
你的代码我改完后可以有以下两种情况:(仅供参考)
一、
n=1
a=int(input())
while(a!=1):
n=n+1
if a%2==0:
a=a//2
else:
a=a*3+1
print(n)
二、
n=0
a=int(input())
while(a!=1):
n=n+2
if a%2==0:
a=a//2
else:
a=a*3+1
print(n) -
2017-10-13 22:05:41@
不考虑你这些代码的缩进问题。
1.你不应该把a=int(input())写在while的条件下,这就会造成只要你输入的数据不等于1,你就需要一直输入;
2.其次0<=a<=10000这行代码没有意义,可以删除(这个不重要);
3.最后你这个分支结构没有问题,但你排除前面的错误再计算时,你会发现次数(也就是你设定的变量n)少一次,这是因为你while后面跟条件是不等于1,也就是当机器算到a==1时就不再循环了。这就导致变量“n”少相加了一次。
- 1
信息
- 难度
- 5
- 分类
- (无)
- 标签
- (无)
- 递交数
- 3947
- 已通过
- 982
- 通过率
- 25%
- 被复制
- 2
- 上传者