Python 3.x 为什么此脚本不在第一行之后运行
如果您试图实现Collatz猜想脚本,那么您的第一个If是错误的-您应该将数字除以2。此外,返回会导致函数结束,因此只会得到一个while循环,不管内部发生了什么-因此基本上返回输入的数字或该数字*3+1。 以下是经过轻微修改的正确代码:Python 3.x 为什么此脚本不在第一行之后运行,python-3.x,Python 3.x,如果您试图实现Collatz猜想脚本,那么您的第一个If是错误的-您应该将数字除以2。此外,返回会导致函数结束,因此只会得到一个while循环,不管内部发生了什么-因此基本上返回输入的数字或该数字*3+1。 以下是经过轻微修改的正确代码: tweak = int(input("Input an integer")) def collatz(number): while number != 1: if number % 2 == 0: return
tweak = int(input("Input an integer"))
def collatz(number):
while number != 1:
if number % 2 == 0:
return int(number)
elif number % 2 != 0:
return int((3 * number) + 1)
print(number)
collatz(tweak)
您也不需要elif,因为数字只能除以2或不能除以2
示例输出:
tweak = int(input("Input an integer"))
def collatz(number):
steps = 0
num = number
while number != 1:
if number % 2 == 0:
number = number / 2
else:
number = int(3 * number + 1)
steps +=1
print("Reached 1 in {} iterations for number {}.".format(steps, num))
collatz(tweak)
您在if和else中返回的值不会超过
而是在变量中分配它并打印
collatz(22)
collatz(55)
collatz(234)
Reached 1 in 15 iterations for number 22.
Reached 1 in 112 iterations for number 55.
Reached 1 in 21 iterations for number 234.
输出:
您的问题只有代码,但我认为这是您可能正在寻找的:
me@dev-007:~/Desktop$ python test.py
Input an integer10
number 10
output:10
你能更好地解释什么不起作用吗?错误代码是什么?当我将它粘贴到Jupyter时,它工作正常。它在Jupyter记事本中为我工作。你是说你的号码没有打印出来吗?你可能使用了不支持控制台输入的升华文本。
me@dev-007:~/Desktop$ python test.py
Input an integer10
number 10
output:10
def collatz(tweak):
while tweak != 1:
if tweak % 2 == 0:
return int(tweak)
elif tweak % 2 != 0:
return int((3 * tweak) + 1)
print(tweak)
tweak = int(input("Input an integer:"))
result = collatz(tweak)
print(result)