错在哪里了?求助!

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 条评论

  • @ 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:11:29

      由于评论的语句前面没有缩进的原因,请自行在语句前面加缩进(空格)。

  • @ 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
分类
(无)
标签
(无)
递交数
3943
已通过
981
通过率
25%
被复制
2
上传者