Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 科拉茨从那些无聊的东西中解脱出来_Python_Collatz - Fatal编程技术网

Python 科拉茨从那些无聊的东西中解脱出来

Python 科拉茨从那些无聊的东西中解脱出来,python,collatz,Python,Collatz,我知道关于这个问题有很多帖子。但我不能以任何其他方式发布我的代码,除非通过提问。有人能帮我理解如何在每次执行全局作用域时阻止n被输入collatz函数吗 编写一个名为collatz()的函数,该函数有一个名为number的参数。 若数字为偶数,则collatz()应打印数字//2并返回此值。 若数字为奇数,则collatz()应打印并返回3*number+1 然后编写一个程序,让用户输入一个整数,并继续对该数字调用collatz() 直到函数返回值1为止。 (令人惊讶的是,这个序列实际上早晚都适

我知道关于这个问题有很多帖子。但我不能以任何其他方式发布我的代码,除非通过提问。有人能帮我理解如何在每次执行全局作用域时阻止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子句中,向用户打印一条消息,说明他们必须输入整数


您已经创建了一个无限循环,因为您的“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)