Python try语句的int(number)语法无效

Python try语句的int(number)语法无效,python,python-3.x,Python,Python 3.x,这是我目前面临的教程中的第一个必须完成的项目。因此,我遇到了一个问题。我正在尝试使用collatznumber来获取collatz序列。我试图在stackoverflow上找到一个类似的问题,但与之无关,或者说我不理解它。错误发生在第二个int上部分。出现无效语法错误。我检查了所有我能想到的检查,检查之间的所有空格也都更改了,除了到else,因为我在那个里遇到了问题,然后问题就发生了。我还尝试在else intnumber%2==1:上获取另一个空格,但这也没用。我希望你有足够的信息来帮助我。非

这是我目前面临的教程中的第一个必须完成的项目。因此,我遇到了一个问题。我正在尝试使用collatznumber来获取collatz序列。我试图在stackoverflow上找到一个类似的问题,但与之无关,或者说我不理解它。错误发生在第二个int上部分。出现无效语法错误。我检查了所有我能想到的检查,检查之间的所有空格也都更改了,除了到else,因为我在那个里遇到了问题,然后问题就发生了。我还尝试在else intnumber%2==1:上获取另一个空格,但这也没用。我希望你有足够的信息来帮助我。非常感谢你抽出时间

 def collatz(number):
   number=input()
   try:
       if int(number) %2==0:
           print('hi')

   else int(number) %2==1:
           print(int(number*3+1))

因此,要按照所述修复代码,请执行以下操作:

def collatz(number):
    number = input()         # number is passed in - doesn't make sense to get it again
    try:
        number = int(number) # Just interpret once
    except ValueError:       # try must have an except clause
        return               # exit on error

    if number%2 == 0:
        print('hi')
    elif number%2 == 1:      # Don't really need an elif - %2 can only have 2 values
        print(number*3+1)
但是,您可能需要考虑使用生成器:


您可能还想了解else和elif之间的区别,python是缩进敏感的。是的,我读过python是缩进敏感的,这就是为什么我检查了它几十次,直到我确定它不是那个问题。一开始,我用的是“除了”,而不是“其他”。事实上,我现在将其他内容改为elif,并添加了try-intendation之外的内容,因此它现在起作用了。这个形象现在对我帮助很大。但是显然printintnumber*3+1也是错误的,因为我需要一个str。但是谢谢你的帖子。它实际上帮助了meprint不需要字符串,但int需要一个-您的paren在错误的位置。
def collatz(number):
    while number > 1:
        if number % 2 == 0:
            number //= 2
        else:
            number = 3*number + 1
        yield number

def collatz_series():
    try:
        number = int(input())
    except ValueError:
        return

    for n in collatz(number):
        print(n)