当前位置: 首页 > 知识库问答 >
问题:

Collatz回路结构

庞鸿骞
2023-03-14

请帮助我理解我做错了什么。问题是

Collatz序列编写一个名为Collatz()的函数,该函数有一个名为number的参数。如果数字为偶数,则collatz()应打印数字//2并返回此值。如果数字为奇数,则collatz()应打印并返回3*数字1。

然后编写一个程序,让用户输入一个整数,并继续在该数字上调用colatz(),直到函数返回值1。(令人惊讶的是,这个序列实际上适用于任何整数——使用这个序列,你迟早会得到1!甚至数学家也不知道为什么。你的程序正在探索所谓的Collatz序列,有时被称为“最简单的不可能的数学问题”。)

记住使用int()函数将input()的返回值转换为整数;否则,它将是一个字符串值。

提示:整数在数字%2==0时为偶数,在数字%2==1时为奇数。

def collatz(number):
    if number%2==0:
        print(number//2)
    else:
        print(3*number+1)

x = int(input('print num'))
while TRUE:
    if collatz(x)!=1:
        break

共有3个答案

徐嘉勋
2023-03-14

如果你想面对,这就是我写同样代码的方式

# Write a function named collatz() that has one parameter named number. If
# number is even, then collatz() should print number // 2 and return this value.
# If number is odd, then collatz() should print and return 3 * number + 1


# Then write a program that lets the user type in an integer and that keeps
# calling collatz() on that number until the function returns the value 1.


# Add try and except statements to the previous project to detect whether the
# user types in a noninteger string. Normally, the int() function will raise a
# ValueError error if it is passed a noninteger string, as in int('puppy'). In the
# except clause, print a message to the user saying they must enter an integer.

integernuber = False
while not integernuber:

    try:
        number = int(input('Type a number: '))

        integernumber = True

    except:
        print('Please entere an integer number')

        def collatz():

            global number

            if (number % 2) == 0:
                return number / 2
                number = (number / 2)
            elif (number % 2) == 1:
                return 3 * number + 1
                number = (3 * number + 1)
            else:
                return

        while collatz() <= 1:
            number = int(collatz())
            print(number)

希望能对你有所帮助

商开济
2023-03-14

复制-制作collatz程序使无聊的东西自动化

正如其他人在注释中所述,您的函数也必须返回一个整数,以便再次输入到函数中。

在您已经完成的基础上,我们可以让函数collatz_sequence(x)重复调用colatz()以获得所需的结果:

def collatz(x):
    if x % 2 == 0:
        a = x//2
    else:
        a = 3*x+1
    print(a)
    return a

def collatz_sequence(x):
    print(x)
    while x!=1:
        x=collatz(x)

这是一个示例输出:

>>> collatz_sequence(6)
6
3
10
5
16
8
4
2
1
吴峰
2023-03-14

您必须打印并在函数collatz(num)中返回

def collatz(number):
    """prints and returns the next number in the Collatz sequence
    """
    if number % 2 == 0:
        next_collatz_number = number // 2
    else:
        next_collatz_number = 3 * number + 1
    print(next_collatz_number)
    return next_collatz_number

x = int(input('print num'))

while True:
    x = collatz(x)
    if x == 1:
        break
 类似资料:
  • 我正在尝试使用Git(Bitbucket)上的远程存储库运行SpringCloudConfigServer(集中式配置服务)。但不管我在应用程序中设置了什么搜索路径。属性,它总是返回空数组,而不是存储库中的值。 所以,我的存储库看起来像这样(在master分支上): 我的src/main/resources/application。特性: src\main\java\example\central

  • 本文向大家介绍ASP的Server.MapPath()不同参数返回路径总结,包括了ASP的Server.MapPath()不同参数返回路径总结的使用技巧和注意事项,需要的朋友参考一下 在使用Server.MapPath()的时候,有很多的参数,什么绝对路径啊,相对路径啊,这些不复杂但是很容易弄混淆的东西,这里将他做一个整理。 如果当前的网站目录为E:\wwwroot 应用程序虚拟目录为E:\www

  • 到目前为止,我经常用:结束我的Tkinter程序,否则什么都不会出现!参见示例: 然而,当尝试这个程序中的下一步(让球按时间移动)时,我正在读的书说要做以下操作。因此,我将draw函数更改为: 并将以下代码添加到我的程序中: 但是我注意到添加这个代码块,使得使用毫无用处,因为即使没有它,一切都会显示出来!!! 此时此刻,我应该提到,我的书从来没有提到过(可能是因为它使用Python3),但我在网上

  • 3.2.3 多路分支结构 如果我们还想进一步改进程序 3.3,使之在-6 < c < 35 的情况下也显示一些信息,这 就需要一个三路的分支结构。三路分支可以利用两个嵌套的 if-else 语句来实现: if c &gt;= 35: print "Warning: Heat Wave!" else: if c &lt;= -6: print "Warning: C

  • 3.2.2 两路分支结构 有时我们希望根据条件表达式的不同计算结果(True 或 False),分别执行两个不同的语 句序列,这时可以使用具有两个分支的条件语句形式,即 if-else 语句: if <条件表达式>: <if-语句体> else: <else-语句体> if-else 语句的语义是:首先计算条件表达式的值,如果结果为 True,则执行 if-语句体; 如果结果为

  • 问题内容: 我有一个看起来像这样的JSON Blob 我有一些代码将其转换回go结构 但是我在运行时看到的只是一个零位结构 我尝试先分配该结构,但那也没有用,我不确定为什么它不产生值,并且不返回错误 问题答案: 您的结构字段不会导出。这是因为它们以小写字母开头。 当我说“未导出”时,是指它们在您的包装之外不可见。您的软件包可以愉快地访问它们,因为它们在本地作用域内。 至于包装-它看不到它们。您需要