2017-04-08 204 views
1

我有以下代码 - 用于在Collat​​z函数的源代码:While循环语法错误

number = int(input('enter a number') 

while number != 1: 
    if number%2 == 0: 
    n = number//2 
     print (str(n)) 
    elif number%2 == 1: 
    n = 3*number+1 
     print (str(n)) 
    else: 
    break 

该错误消息如下:

Python 3.5.2 (default, Dec 2015, 13:05:11) 
[GCC 4.8.2] on linux 

Traceback (most recent call last): 
    File "python", line 5 
    while number != 1: 
     ^
SyntaxError: invalid syntax 

回答

4

此:

number = int(input('enter a number') 

应该是:

number = int(input('enter a number')) 

一旦你解决了这个问题,你应该看看取消打印你的打印语句。这些缩进不是必需的。

+0

正如[答案]声明,请避免回答不清楚,宽,SW REC,错字,意见为基础,不可重复或重复的问题。编写我的代码请求和费力的家庭作业问题不适用于[所以],更适合于专业编码/辅导服务。良好的问题坚持[问],包括[mcve],有研究的努力,并有潜力对未来的访问者有用。回答不适当的问题会使网站变得更难以浏览和鼓励更多这样的问题,从而损害其他用户的志愿者时间和专业知识。 – TigerhawkT3

1

您有缩进问题,并且没有关闭第一行中的括号。另外,由于您需要在每个循环中更新它,因此请将n更改为number。否则,您的功能不会执行Collat​​z过程。这将做的工作:

number = int(input('enter a number')) 

while number!=1: 
    if number%2 == 0: 
     number = number//2 
     print(str(number)) 
    elif number%2 == 1: 
     number = 3*number+1 
     print(str(number)) 
    else: 
     break 

然后,如果你输入20,将打印:

enter a number20 
10 
5 
16 
8 
4 
2 
1 
+0

非常感谢。它的工作,我现在对这个问题感到无聊。 – Vish

+0

@Vish如果您单击此问题旁边的复选标记,它会将其标记为已接受,这基本上意味着它适合您。 – anonymoose