实例

作者: 第六九书 | 来源:发表于2021-05-25 22:39 被阅读0次

    1、列表内数据排序(由小到大)

    # coding:utf-8
    # 列表内数值按照从大到小的顺序排序
    
    def sub_sort(array,low,high):
        key = array[low]
        while low < high:
            while low < high and array[high] >= key:
                high -= 1
            while low < high and array[high] < key:
                array[low] = array[high]
                low += 1
                array[high] = array[low]
        array[low] = key
        return low
    
    def quick_sort(array,low,high):
        if low < high:
            key_index = sub_sort(array,low,high)
            quick_sort(array,low,key_index)
            quick_sort(array,key_index+1,high)
    
    
    array = [8,10,9,6,4,16,5,13,26,18,2,45,34,23,1,7,3]
    print('\n原来列表为:')
    print(array)
    quick_sort(array,0,len(array)-1)
    print('\n排序后列表为:')
    print(array)
    

    运行结果如下:


    排序示例

    2、猜数字

    # coding:utf-8
    # 猜数字游戏
    
    import random
    
    print('===猜数字游戏现在开始===')
    print()
    i=1
    a=random.randint(0,100)
    b=int(input('请输入一个0~100以内有任意整数并回车确认:'))
    print()
    while b!=a:
        print()
        if b<a:
            print('第%d次输入,小了'%i)
            print()
            b=int(input('请继续输入:'))
        else:
            print('第%d次输入,大了'%i)
            print()
            b=int(input('请继续输入:'))
        i+=1
    else:
        print()
        print('===恭喜,答对了!!!===')
    
    运行界面

    3、婓波那契数列

    # coding:utf-8
    
    #婓波那契数列
    # f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)  (n>=2)
    
    def f(s):
        if s == 0:
            return 0
        elif s==1:
            return 1
        else:
            return f(s-1)+f(s-2)
    
    if __name__ == "__main__":
        n=25
        print(f(n))
    

    4、阶乘

    # 阶乘
    def jiecheng(n):
        i = 1
        result = 1
        while i < (n+1):
            result *= i
            i += 1
        return result
    
    
    print(jiecheng(3))
    
    

    5、字符串反转

    #自定义函数实现字符串反转
    
    # 定义函数
    def reverse(s):
        if s=="": #如果字符串为空
            return s #返回字符串本身
        else:
            return reverse(s[1:])+s[0] #取字符串第一个字符放到最后,剩下的字符串再执行本函数
    
    if __name__ = "__main__":
        #执行函数
        s="hello world!" #给出字符串s
        e=reverse(s) #执行反转函数并赋值给e
        print(e) #打印e。
    
    image.png

    6、BMI指数

    # 计算BMI指数,并判断其在国际指标和国内指标中的肥胖程度
    
    height,weight=eval(input("请输入身高(米)和体重(千克)【逗号隔开】:"))
    # 跟别给height和weight赋值
    
    bmi=weight/pow(height,2)
    # pow(a,b)
    print("BMI指数为{:.2f}".format(bmi))
    who,nat="",""
    if bmi<18.5:
        who,nat="偏瘦","偏瘦"
    elif 18.5<= bmi <24:
        who,nat = "正常","正常"
    elif 24<=bmi <25:
        who,nat = "正常","偏胖"
    elif 25<=bmi<28:
        who,nat = "偏胖","偏胖"
    elif 28<= bmi <30:
        who,nat = "偏胖","肥胖"
    else:
        who,nat = "肥胖","肥胖"
    
    print("BMI指数为:国际{},国内{}".format(who,nat))
    
    运行结果: 运行结果

    7 长度单位互换

    a=input('请输入带有单位的长度,公制单位为m,英制单位为in :')
    
    if a[-1] in ["m","M"]:
        inch=eval(a[0:-1])*39.37
        print("{:.3f}in".format(inch))
    elif a[-1] in ["n","N"]:
        mi=eval(a[0:-2])/39.37
        print("{:.3f}m".format(mi))
    
    运行结果

    8、字符串反转

    #自定义函数实现字符串反转
    
    def rvs(s):
        if s=="": #如果字符串为空
            return s #返回字符串本身
        else:
            e = rvs(s[1:])+s[0]
            return e #取字符串第一个字符放到最后,剩下的字符串再执行本函数
    
    #执行函数
    s="hello world!" #给出字符串s
    e=rvs(s) #执行反转函数并赋值给e
    print(e) #打印e。
    

    9、打印乘法小九九

    # 打印乘法小九九
    
    for i in range(1,10):
        print()
        for j in range(1,(i+1)):
           a=i*j
           print("{}×{}={:.0f}".format(i,j,a),end="   ") 
    
    运行结果

    10、数字进度条

    10.1 第一种

    # TextProBarV1.py
    # 文本进度条
    
    import time #引用‘time’库。
    scale=10 #变量'scale'赋值为10
    print("------start------") #输出字符
    for i in range(scale+1):   #循环语句,i从0到10一共是11个数,所以要in range(scale+1)
        a='*'*i   #给a复制为字符串i个“*”,用来记录完成的进度
        b='.'*(scale-i)   #给b复制为字符串“scale-i”个“.”,用来记录剩下的进度
        c=(i/scale)*100   #给c复制为完成进度的百分制,单位是%
        print("{:^3.0f}%[{}->{}]".format(c,a,b))
        '''输出。格式是"c%[a->b].其中“:”是引导符,
        “^"表示居中对齐,相对应的的,左对齐”<",右对齐”>"。
        “3”表示字符长度为3个字符,“.0"表示小数点后0位。
        “.数字”表示的精度值;
        "f"表示采用非科学计数法的格式类型输出浮点数'''   
        time.sleep(0.1)      #休眠01秒后进行下一个进程。    
    print("------end------") #输出字符, 提示本文本进度条程序执行完毕。
    
    运行结果

    10.2 第二种:文本进度单行刷新

    # TexProBarv2.py
    # 文本进度单行刷新。
    import time
    for i in range(101):
        print("\r{:3}%".format(i),end="")   
        '''\r表示光标回退至行首,本行的意思是在print时,每输出一次内容,光标就回退至行首,
        重新再输出,从而实现单行刷新而不再是多行输出。
        “end=""”主要是改变输出时的自动换行,从而实现单行输出。'''
        time.sleep(0.1)
    
    显示过程

    10.3 第三种

    # TexProBarV3.py
    
    import time
    scale=50
    print("执行开始".center(scale//2,"-"))
    start=time.perf_counter()           #读取当前时间
    for i in range(scale+1):
        a="*"*i
        b="."*(scale-i)
        c=(i/scale)*100
        dur=time.perf_counter()-start
        print("\r{:3.0f}%[{}->{}]{:.2f}s)".format(c,a,b,dur),end="")
        time.sleep(0.1)
    print("\n"+"执行结束".center(scale//2,"-"))
    
    运行结果

    11、matplotlib画风玫瑰图并保存为png图片

    import numpy as np
    import matplotlib.pyplot as plt
    
    #=======自己设置开始============
    #标签
    labels = np.array(['N','NNE','NE','ENE','E','ESE','SE','SSE','S','SSW','SW','WSW','W','WNW','NW','NNW'])
    #数据个数
    dataLenth = 16
    #数据
    data = np.array([5.9,8.5,14.2,9.9,8.9,6.3,6.1,2.8,2.3,2.1,1.4,1.3,1.9,3.2,5.3,4.7])
    angle = np.linspace(0, 2*np.pi, dataLenth, endpoint=False)
    #========自己设置结束============
    
    fig = plt.figure()
    
    ax = fig.add_subplot(111, polar=True)# polar参数!!
    
    n=0
    while n < 15:
        if n%2==0:
            data1=[0,data[n],data[n+1],0]
            angle1=[0,angle[n],angle[n+1],0]
            ax.plot(angle1, data1,linewidth=1,color='black')# 画线
            ax.fill(angle1, data1,facecolor='black', alpha=1)# 填充
        else:
            data1=[0,data[n],data[n+1],0]
            angle1=[0,angle[n],angle[n+1],0]
            ax.plot(angle1, data1,linewidth=1,color='black')# 画线
        n+=1
    angle1=[0,angle[15],angle[0],0]
    data1=[0,data[15],data[0],0]
    ax.plot(angle1, data1,linewidth=1,color='black')# 画线
    ax.set_theta_direction(-1) #设置旋转方向为顺时针,‘1’为逆时针,默认为逆时针
    ax.set_theta_zero_location('N') # 设置0度方向,默认为E方向,本工程中设为N方向
    ax.set_thetagrids(angle * 180/np.pi, labels, fontsize=10,fontproperties="SimHei")
    ax.set_title("风向风玫瑰图(静风C频率11.5%)", va='bottom',fontsize=15,fontproperties="FangSong")
    ax.set_rlim(0,15) #设置坐标极大值
    ax.set_rgrids(np.arange(3,15,3)) #设置坐标内部网格,在3到15之间按3的间隔方式设置网格
    ax.set_rlabel_position(210)
    
    ax.grid(True)
    plt.savefig('fengmeiguitu.png')
    plt.show()
    
    运行结果

    12、turtle画多边形并计算相关信息

    # coding:utf-8
    
    import turtle as t
    n=input("请输入多边形的边数:")
    t.color("red")
    t.penup()
    t.goto(0,-100)
    t.pendown()
    for i in range(eval(n)):
        t.fd(150)
        t.left(360/eval(n))
    
    print()
    print("您要画的多边形是:",n,"边形,内角和是:",(eval(n)-2)*180,"度")
    print()
    print("计算公式是:(",n,"-2)*180=",(eval(n)-2)*180,"度")
    print()
    print("每个角的度数是:",((eval(n)-2)*180)/eval(n),
          "计算公式是:",(eval(n)-2)*180,"/",n,"=",((eval(n)-2)*180)/eval(n))
    
    image.png image.png

    13、排列组合。

    在1、2、3、4,中能组成多少个互不相同且无重复数字的三位数?分别输出,最后计算共有多少种?

    # coding:utf-8
    
    count=0
    for i in range(1,5):
        '''
        range(start, stop, step),start为开始数值,stop为结束数值,表示计数从star开始,
        stop-1结束。start默认可以省略表示从0开始。step表示步长,默认省略表示步长为1
        '''
        for j in range(1,5):
            for k in range(1,5):
                if (i!=j) and (i!=k) and (j!=k):
                    print(i,j,k)
                    count += 1
    print("共有{}种组合。".format(count))
    print(f"共有{count}种组合。")
    
    

    相关文章

      网友评论

        本文标题:实例

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