try语句python上的int(number)语法无效

时间:2018-04-24 01:27:10

标签: python python-3.x

这是我的第一个项目,我必须从目前面临的教程中完成。所以这里是我遇到的问题。我正在尝试使用collat​​z(数字)来获取collat​​z序列。我试图找到一个类似于stackoverflow上的问题,但我无法解决(或者我可能不理解它)。错误发生在第二个int部分。它上面发生了无效的语法错误。我检查了我能想到的一切(检查了中间的所有空间也改变了#34;除了"到#34;否则"因为我遇到了麻烦)并且发生了这个问题。我还试图得到另一个paranthese在 else int((number))%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))

1 个答案:

答案 0 :(得分:0)

所以按照描述来修复你的代码:

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)

但是,您可能需要考虑使用生成器(yield):

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)