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