美文网首页
2019-08-24

2019-08-24

作者: 木马音响积木 | 来源:发表于2019-08-24 10:18 被阅读0次

    暑假第二期,第8部分,一步一步来

    从简单到复杂,从一维到多维


    一步一步上台阶.jpg

    当读到这个文章的时候,我们假设你已经能够写出,第一道题了。
    从1+2+3 不断累加下去,到了141 ,得到10011,终于大于1万了。

    # i 记录当前累加到多少了
    i = 0 #必须一个变量赋值占一行
    # sum2 记录当前的累加总和
    sum2 = 0
    
    while sum2 < 10000:  #冒号 千万别忘记
        i = i + 1 #缩进 千万别忘记
        print(i)  # 观察变量的变化
        sum2 = sum2 + i       
        print(sum2)    # 观察变量的变化
    
    print("跳出循环了")
    print(i) 
    print(sum2)
    

    当我们玩游戏的时候,刚刚打败一个怪兽,就想给我一个再强一点的,刚才的那个怪兽太菜了,哈哈。傲娇的姿态摆好

    2、现在难度增加一个台阶,
    当求得i (141)后,sum2 继续向后累加i(141)次,输出累加和
    想起来了,老师上课说的递推
    第二个问题的答案,依靠第一个问题的结果,遇到这种问题,坚持一步一步来;

    #接上面程序
    #设置取值范围
    for k in range(i+1,i+i+1): # k 从142 到282
        sum2 = sum2+ k
        print(k)
    print(sum2)
    
    

    sum2 现在是39903 ,

    3、再上一个台阶,求出 从2 到 这个累加和 (也就是39903)之间的所有素数,放到列表里,打印输出列表,并打印输出列表长度,还有打印列表的最后一个元素;
    继续写程序,接上面

    lower =2   #挤压,收缩边界
    
    upper = sum2    # 接上第二步得到的数 ,39903
    
    #演示函数的使用有效降低缩进层数
    def is_sushu(aa):  #aa是参数
        """本函数判断一个整数是否为素数,
           如果是,返回值为True
        """
        for i in range(2,aa):  #i 取值最大=aa-1
            if (aa % i) == 0:
                break
        else:               #等在学校门口的妈妈
            return True # aa是素数
    
    #准备个列表,用于输出
    lala=[]
    for num in range(lower,upper + 1):
        # num大于 1 并且是素数时
        if num > 1 and is_sushu(num):
            #print(str(num)+"是素数")
            lala.append(num) #是素数就装入列表lala
    
    print(lala)
    print(len(lala))  #4196
    print(lala[-1])    #39901
    

    4、现在由于列表的数据较多,(4196个),请序列化,写入一个文件,文件名为lala.pkl ,以后写程序调用时,直接打开这个文件即可。

    如果程序中包含一个有4000多个元素的列表,可想而知,程序读起来,太差了。
    继续写代码,接上面

    import pickle   #最好放到程序的最前头
    import sys,os
    #该文件放在你的当前目录中
    print(os.getcwd()) 
    output = open('lala.pkl', 'wb')
    
    # Pickle lala 把lala 列表,写入lala.pkl 文件中
    
    pickle.dump(lala, output)  #调用dump函数
    
    output.close()  #打开的文件,必须关闭
    
    lalawenjian.png

    写到硬盘上去了,满满的成就感。

    5、假设取到别人给你的序列化文件,是个列表,求出列表的累加和

    import  pickle,pprint
    
    #使用pickle模块从文件中重构python对象
    pkl_file = open('lala.pkl', 'rb')
    
    list2 = pickle.load(pkl_file)
    #pprint.pprint(data1)
    
    #把这些素数累加起来
    sum55 = 0
    
    for gg in list2:  #列表的遍历
        sum55 = sum55 + gg
    print(sum55) #78890925 最后结果
    
    pkl_file.close()
    

    只所以,没有打印,如果打印了,会是长长的 一大串,
    程序本来可以这么短,所以,序列化很有用。特别是列表有几十万数据以上时。

    好了,同学们,我们爬上5楼了,你的计算结果对了么?
    一步一步来,程序都理解了么?
    学会编程了么?遇到多一维的自己了吗?

    不要,不要记住, ,你多学一样本事,就少说一句求人的话!

    其实,老师一直相信,一步一步,带着你,可以爬上小山,看见更美的景色。

    山顶看日出.jpg

    相关文章

      网友评论

          本文标题:2019-08-24

          本文链接:https://www.haomeiwen.com/subject/wwdfectx.html