循环和科拉茨猜想

2023-12-21

我在循环和声明变量方面遇到问题。目前我正在制作一个关于 Collat​​z 猜想的程序,该程序应该检查从一定数量的 Collat​​z 序列中到达一个的最大步骤是什么。这是我的代码:

start_num = int(input("insert a starting Number > "))
how_many = int(input("how many times you want to check? >"))


def even_or_odd(number):
    if number % 2 == 0:
        return 'isEven'
    else:
        return 'notEven'


def collatz(n):
    z = n
    counter = 0
    while True:
        if n != 1:
            if even_or_odd(n) == 'isEven':
                n = n/2
                counter += 1
                continue
            if even_or_odd(n) == 'notEven':
                n = (n*3)+1
                counter += 1
                continue
        else:
            print('number ' + str(z) + ' reached 1 with : ' + str(counter) + ' steps')
            return counter
            break


def check_biggest_steps(steps_before, steps_after):
    if steps_before > steps_after:
        return steps_before
    if steps_after > steps_before:
        return steps_after
    if steps_after == steps_before:
        return steps_after


def compute_collatz(n_times, collatz_number):
    for _ in range(n_times):
        before = collatz(collatz_number)
        collatz_number += 1
        after = collatz(collatz_number)
        collatz_number += 1
        biggest_steps = check_biggest_steps(before, after)

    print('Biggest Steps is :' + str(biggest_steps))


compute_collatz(how_many, start_num)

this biggest_steps变量始终返回最后 2 个步骤。我知道造成这个问题的原因是biggest_step变量位于循环内,但我无法让它在任何地方工作,不知道该怎么做。谢谢


在您亲自尝试之前,请不要阅读我的代码。

尝试创建一个列表,将每个更改附加到列表中,然后要获取最后的移动次数,只需获取列表的长度即可。

.

def collatz(x):
    while x != 1:
        if x % 2 > 0:
             x =((3 * x) + 1)
             list_.append(x)
        else:
            x = (x / 2)
            list_.append(x)
    return list_


print('Please enter a number: ', end='')
while True:
    try:
        x = int(input())
        list_ = [x]
        break
    except ValueError:
        print('Invaid selection, try again: ', end='')


l = collatz(x)

print('\nList:', l, sep=' ')
print('Number of steps required:', len(l) - 1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

循环和科拉茨猜想 的相关文章

随机推荐

  • 如何安装 Windows 10 SDK 以与 Visual Studio 2017 一起使用

    我不知道如何安装适用于 Visual Studio 2017 的 Windows 10 SDK 我下载并运行了 Windows 10 SDK 安装程序 它显示Please find winsdksetup exe in Windows ki
  • 配置单元更新最后访问时间

    我想更新 hive 表上的lastAccessTime 在网上google后 我得到了一个解决方案 set hive exec pre hooks org apache hadoop hive ql hooks UpdateInputAcc
  • iOS 13 中 Core Data 持久存储迁移期间发生错误

    将 XCode 更新到版本 11 后 我向 Core Data 添加了新的模型版本 并在新版本中向实体添加了新属性 使新版本处于活动状态并将新属性添加到托管对象文件中 向用户发布此版本后 它开始崩溃并显示以下消息 用于打开持久存储的托管对象
  • 文本区域内的 HTML 解码

    我在使用我构建的网站管理工具时遇到问题 它允许我编辑网站的文章 我使用 google code prettify 因为我的文章是关于 C 编程的 然后我使用 pre class prettyprint pre 标签来指定我即将开始编写 C
  • 如何防止 json.jar 中的 JSONObject 将十进制数字字符串转换为双精度

    Using JSONObject从服务器读取 json 响应 服务器返回一些十进制数 正常数字不是问题 但当存在小数形式时就会出现问题0 00068 像这样的数字0 00068会自动存储到Double对象 并且当尝试检索此类数字时 会返回该
  • 左侧省略号出现奇怪的特殊字符问题

    我有一些文件路径 我试图使用下面的代码在左侧显示省略号 ellipsis after content background color white color transparent position relative z index 2
  • VB.NET 与这种创建实例的方式等效的是什么?

    在 C 中 您可以创建这样的实例 Custom mycustomelement new Custom ElenentName My Custom Element 我想知道如何在 Visual Basic 中创建这样的实例以及这种类型的创建实
  • 使用 DATEVALUE 函数时 Excel #Value 错误

    In cell A2 I have 7 21 2014 12 44 36 PM 当我使用DATEVALUE LEFT A2 FIND A2 1 我收到错误 VALUE 当我使用LEFT A2 FIND A2 1 I get 7 21 201
  • 铁路路线和站点性能

    站点速度与Rails 应用程序的routes rb 文件中的命名空间 路由数量是否有直接关联 我正在处理一个相当大的应用程序 其中包含 30 多个不同的模型 实体 并且大多数资源都有自己的路由 路由的数量会影响内存开销 这就是为什么 Rai
  • Git over HTTP 在 Apache error_log 中生成身份验证失败

    我的 Git over HTTP s 设置遇到了非常烦人的问题 尽管它可以通过 HTTP 运行 但我在 Apache 的 error log 中收到一条错误消息 指出身份验证失败 我尝试跟踪 Apache 和 git 客户端之间的通信 似乎
  • DataStudio 和 SQL 将时间格式从数字更改为 hh:mm:ss

    我想在 Datastudio 或 SQL 中将度量格式从 float 更改为 HH MM SS 例如 Float HH MM SS 75 00 01 15 90 00 01 30 79 5 00 01 20 ETC 如果您输入的秒数适合 2
  • Python MemoryError:无法分配数组内存

    我有一个 250 MB 的 CSV 文件 需要读取大约 7000 行和大约 9000 列 每行代表一幅图像 每列代表一个像素 灰度值0 255 我从一个简单的开始np loadtxt data training nohead csv del
  • If-Block 周围的 JSLint 大括号

    在 Javascript 中 如果if表达式后面没有大括号 下面的语句放在if堵塞 那是 if foo bar baz 相当于 if foo bar baz Douglas Crockford 建议不要使用第一个 因为它会令人困惑 并且如果
  • 包含 SQL 索引提示如何影响查询性能?

    假设我在 SQL 2005 数据库中有一个表 其中包含 2 000 000 多条记录和一些索引 在查询中使用索引提示有什么优势 在查询中使用索引提示是否有缺点 首先 尝试使用 SQL Profiler 在数据库中生成几个小时内正常工作负载活
  • 使用 Postman 对 Django Web 服务进行 Http post 请求(需要登录信息)

    我想向我之前实现的 web 服务发送一个 http 请求 该服务需要用户登录 现在 我实现了一个表单页面来为我执行此操作 我需要针对每个不同的请求更改它 据我所知 Django需要 csrftoken 和 sessionid 来允许请求 不
  • 从 MySQL 中的两个表中选择数据

    我拥有的 下一个结构 表零 gt id 主要具有自动增量 gt 其他 table 1 gt id 表零 id 的外键 gt varchar 80 示例值 aahellobbb gt 一个字段 table 2 gt id 表零 id 的外键
  • Symfony 安全注销未清除 RememberMe 令牌

    将 Symfony 4 与security yaml像这样 encoders App Entity User sha256 providers public users entity class App Entity User proper
  • 即使按下设备的剪切按钮,Midlet 也不能​​关闭

    我在 J2ME 工作 我希望我的 MIDlet 必须运行无限长的时间 即使我按设备上的任何键 它也不能关闭 请帮我解决这个问题我该怎么办 如果您使用的是诺基亚手机 您可以在 Jad 文件中添加 Nokia MIDlet No Exit tr
  • 如何在 ruby​​ 中通过 SSL 调用 HTTP POST 方法?

    这是使用curl 的请求 curl XPOST H content type application json d credentials username username key key https auth api rackspace
  • 循环和科拉茨猜想

    我在循环和声明变量方面遇到问题 目前我正在制作一个关于 Collat z 猜想的程序 该程序应该检查从一定数量的 Collat z 序列中到达一个的最大步骤是什么 这是我的代码 start num int input insert a st