[Python]PTA1005的拓展应用---卡拉兹进阶

import numpy as np
A = int(input())
B = int(input())
D = []
count = 0
countset = []
#错误写法:(我是真的傻--手动ci笑)
#n = B-A
#for i in range(n):
    #i = i+1
#正确写法一:
#N = range(A,B+1)
#for i in N:
#正确写法二:
for i in range(A,B+1):
    while i != 1:
        if i % 2 == 0:
            i = i//2
        else:
            i = (3*i+1)//2
        D.append(i)#循环结果放在列表里面
        count+=1
    countset.append(count)
print(min(countset))#最小的循环长度
print(max(countset))#最大的循环长度
print(sum(countset)/len(countset))#平均循环长度
print(sum(D)/len(D))#循环结果的均值
for i in D:
    if i == 1 or i ==2 :
        D.remove(i)#求的是大2的众数,先把1和2扣掉
    else:
        continue
#求众数方法一(浮点数也考虑)
#from scipy import stats
#print(stats.mode(D)[0][0])
#求众数方法二(不考虑浮点数)
print(max(np.bincount(D)))#np.bincount(list)是求list中非负整数的个数
print(np.std(D))#标准差公式np.std(list)

补充:关于众数

#方法一:(利用numpy自带的函数)
import numpy as np
A = int(input())
B = int(input())
print("输入的值是:",A,B)
D = []
for i in range(A,B+1):
    while i != 1:
        if i % 2 == 0:
            i = i//2
        else:
            i = (3*i+1)//2
        D.append(i)
C =  np.bincount(D)#这个得到的结果是一个数组,无法进行index操作
B =[]
for i in C:
    B.append(i)#需要建立一个新list,把数据放进list
print("得到的众数是:",D[B.index(max(B))])#max(B)--出现最多的那个数的次数;并且根据次数把数的索引编号表示出来
方法二:(index()索引法)
a = int(input())
b = int(input())
print("输入的值为:",a,b)
C = []
D = []
for i in range(a,b+1):#卡拉兹循环
    while i != 1:
        if i % 2 == 0:
            i = i//2
        else:
            i = (3*i+1)//2
        D.append(i)#把循环结果加进来
for i in D:#遍历循环结果
    C.append(D.count(i))#对每一个结果进行计数,并加到列表C中。
print("得到的众数是:",D[C.index(max(C))])#max(C)---出现最多次的那个计数结果#C.index()---对该值进行索引编号#D[]根据索引编号得出对应的值(得众数)

补充:循环次数最多的那个数(可能是对的(ci笑),老师出的,奇奇怪怪(ci笑))

try:
    a = int(input())
    b = int(input())
    print("输入的值为:", a, b)
    C = []
    D = []
    cic = 0
    for i in range(a, b + 1):  # 卡拉兹循环
        while i != 1:
            if i % 2 == 0:
                i = i // 2
            else:
                i = (3 * i + 1) // 2
            D.append(i)  # 把循环结果加进来
            cic += 1  # 循环次数(每循环一次就加个1)
        C.append(cic)  # 依次是[a,b]中的每一个数的循环次数
    K = range(a, b + 1)[C.index(max(C))]  # max(C)--是[a,b]中循环次数最多的那个次数
    print("循环次数最多的那个数值为", K)
except:
    print("输入有错误,请重新输入。")

放一下老师的版本:

import numpy as np
print("任意输入两个数值A、B,且1<A<B,\n对区间[A,B]之内的正整数做卡拉兹猜想")
try:
    A=int(input("请输入A: "))#A=int(input("5"))
    B=int(input("请输入B: "))
    print("你输入的数据是:",A,B)
    循环长度=[]#每个元素卡拉兹猜想的循环次数
    循环结果=[]#每个元素卡拉兹猜想每次循环的结果
    N = range(A,B+1)# 根据A,B产生列表[A,A+1,A+2,...,B-2,B-1,B]
    #print(type(N))
    #print(list(N))
    #cic = 0
    #[5,12]循环次数[4, 10, 21, 24, 37, 42, 52, 59]
    for num in N:#开始进入卡拉兹猜想
        cic = 0  # 循环长度计数,[5,12]循环次数[4, 6, 11, 3, 13, 5, 10, 7]
        #print(num)
        while num > 1:
            if num%2==0:
                num = num //2
            else:
                num = (num * 3 +1)//2
                 #print(num)
            if num>2:
                循环结果.append(num)
            cic = cic + 1#print(cic)
        循环长度.append(cic)
            #print(循环长度)
            #print(循环结果)
    print("最大循环长度:",max(循环长度))
    print("最小循环长度:",min(循环长度))
    print("平均循环长度:",sum(循环长度)/len(循环长度))
    print("循环结果均值:",np.mean(循环结果))
    print("循环结果标准差:",np.std(循环结果))
    #以下求众数
    #思路一
    '''1.对循环列表中的每个元素计数,形成计数序列,找其最大值的索引,
根据索引,在循环结果中提取对应数值,就是众数。
2.用传统比较法,找最大值。'''
    次数列表=[]
    for n in 循环结果:
        次数列表.append(循环结果.count(n))
    print("循环结果众数:",循环结果[次数列表.index(max(次数列表))])
except:
    print("buky")
    #思路二
    '''max(次数列表):找到次数列表中的最大值
次数列表.index(次数列表中的最大值):找到次数列表最大值的索引编号
循环结果[次数列表最大值的索引编号]——>循环结果的众数'''
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值