Python 科拉茨从那些无聊的东西中解脱出来
我知道关于这个问题有很多帖子。但我不能以任何其他方式发布我的代码,除非通过提问。有人能帮我理解如何在每次执行全局作用域时阻止n被输入collatz函数吗 编写一个名为collatz()的函数,该函数有一个名为number的参数。 若数字为偶数,则collatz()应打印数字//2并返回此值。 若数字为奇数,则collatz()应打印并返回3*number+1 然后编写一个程序,让用户输入一个整数,并继续对该数字调用collatz() 直到函数返回值1为止。 (令人惊讶的是,这个序列实际上早晚都适用于任何整数,使用这个序列, 你会得到1!连数学家都不知道为什么。 你的程序正在探索所谓的Collatz序列,有时被称为“最简单的不可能的数学问题” 记住使用int()函数将input()的返回值转换为整数;否则,它将是一个字符串值。 期望输出 三, 10 5. 16 8. 4. 2. 一, 输入验证 将try和except语句添加到上一个项目中,以检测用户是否键入非整数字符串。 通常,int()函数在传递非整数字符串时会引发ValueError错误,如int('puppy')。 在except子句中,向用户打印一条消息,说明他们必须输入整数Python 科拉茨从那些无聊的东西中解脱出来,python,collatz,Python,Collatz,我知道关于这个问题有很多帖子。但我不能以任何其他方式发布我的代码,除非通过提问。有人能帮我理解如何在每次执行全局作用域时阻止n被输入collatz函数吗 编写一个名为collatz()的函数,该函数有一个名为number的参数。 若数字为偶数,则collatz()应打印数字//2并返回此值。 若数字为奇数,则collatz()应打印并返回3*number+1 然后编写一个程序,让用户输入一个整数,并继续对该数字调用collatz() 直到函数返回值1为止。 (令人惊讶的是,这个序列实际上早晚都适
您已经创建了一个无限循环,因为您的“n”在循环中没有变化,“n!=1”永远不会满足,只要用户在开始时没有输入“1” 试试这个:
def collatz(number):
if number % 2 == 0:
number = number // 2
else:
number = 3 * number + 1
print(number)
return number
n = int(input("Enter number: "))
while n != 1:
n = collatz(n)
欢迎使用stack overflow!您的问题不清楚。您发布的代码专门获取一个输入,并将其放入您的
collatz()
函数中。请描述您希望发生什么情况?输入需要在while函数中。
def collatz(number):
if number % 2 == 0:
number = number // 2
else:
number = 3 * number + 1
print(number)
return number
n = int(input("Enter number: "))
while n != 1:
n = collatz(n)