实例
2021-05-25 本文已影响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}种组合。")