用Python的idle求冰雹数(基础)

img

实用idle基础简短的解答,最好一步一步的解释这样做的目的或者是这一步的结果是什么,干什么用的。

运行结果:

img

代码:

import random

# 定义一个递归函数,求冰雹数,n是当前的数字,ls是冰雹数列表,每次递归计算都会更新n的值,并把n的值放入列表,
def fun(n,ls):
    if n != 1:  # 判断循环是否结束 ,n=1时结束递归
        if n%2==0: #判断n是否是偶数
            t = n//2 #如果是偶数,n整除2
            ls.append(t) #结果放入列表
            fun(t,ls) #继续递归计算
        else:
            t = n*3+1 # n为奇数,重新计算
            ls.append(t) # 结果放入列表
            fun(t,ls) # 递归计算


n = random.randint(10,50) #生成[10,50]的随机整数
print('随机生成的正整数:%d'%n)  # 显示生成的随机整数
ls=[] #声明一个列表
fun(n,ls) # 调用递归函数计算冰雹数
len= len(ls) # 得到列表的长度,也就是循环的次数
print('经过%d次循环得到的冰雹列表,冰雹列表为:'%len,end='') # 显示循环次数
print(ls) #显示列表




您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7478605
  • 这篇博客也不错, 你可以看下Python自带的IDLE中最常用的三组快捷键
  • 除此之外, 这篇博客: python制作简单文本编辑器中的 使用自带的IDLE编写。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 您还可以看一下 黄勇老师的Python从入门到实战 基础入门视频教程(讲解超细致)课程中的 Python自带IDLE编辑器的···小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    冰雹数,也称为冰雹猜想,是一种数学问题。给定任意一个正整数,如果它是偶数,则把它除以2;如果它是奇数,则把它乘以3再加1。经过若干次操作后,最终结果必定为1。请使用Python的idle来求解一个给定的正整数的冰雹数,具体步骤:

    1. 打开Python idle,创建一个新文件。
    2. 编写一个函数,用来计算一个正整数的冰雹数。函数接收一个正整数作为参数,返回该数的冰雹数。
    3. 在函数中使用while循环进行计算,直至计算结果为1。
    4. 在每次循环中,判断当前数是奇数还是偶数,分别进行对应的操作。
    5. 在主程序中调用函数,传入一个正整数作为参数,得到它的冰雹数。
    6. 输出结果到屏幕上。

    代码示例:

    def hailstone(n):
        """
        计算给定正整数的冰雹数
        """
        count = 0  # 计数器,记录操作次数
        while n != 1:
            if n % 2 == 0:
                n //= 2
            else:
                n = n * 3 + 1
            count += 1
        return count
    
    # 测试函数
    print(hailstone(5))  # 输出5的冰雹数
    

    解释: 1. 定义一个函数hailstone,用来计算给定正整数的冰雹数。 2. 函数内部用一个while循环进行计算,直至结果为1。 3. 在每一次循环中,判断当前数n是奇数还是偶数,进行对应的操作。 4. 如果是偶数,执行n//=2,相当于n=n/2。 5. 如果是奇数,执行n=n*3+1。 6. 每一次操作完后,操作次数count加1。 7. 循环结束后,返回count的值,即为给定正整数的冰雹数。 8. 在主程序中调用函数hailstone,并传入一个正整数5作为参数。 9. 输出计算结果3到屏幕上。

    参考资料: - Python冰雹猜想