最近由于膝盖半月板撕裂做了手术,在家没事干,趁机学习下python基础语法~~
1.程序的控制结构
实例:BMI计算
#CalBMIv1.py
height,weight=eval(input("请输入身高(米)和体重(公斤)[逗号隔开]:"))
bmi=weight/pow(height,2)
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指标为:国外{0},国内{1}".format(who,nat))
2.程序的循环结构
实例:计算圆周率
#CalPiV2.py
import random
import time
DARTS=1000*1000
hits=0.0
start=time.perf_counter()
for i in range(1,DARTS+1):
x,y=random.random(),random.random()
dist=pow(x**2+y**2,0.5)
if dist<=1.0:
hits=hits+1
pi=4*(hits/DARTS)
print("圆周率值是:{}".format(pi))
print("运行时间是:{:.5f}".format(time.perf_counter()-start))
计算水仙花数
s=""
for i in range(100,1000):
t=str(i)
if pow(eval(t[0]),3)+pow(eval(t[1]),3)+pow(eval(t[2]),3)==i:
s+="{},".format(i)
print(s[:-1])
3.函数和代码复用
实例:七段数码管
import turtle,time
def drawGap(): #绘制数码管间隔
turtle.penup()
turtle.fd(5)
def drawLine(draw): #绘制单段数码管
drawGap()
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawGap()
turtle.right(90)
def drawDigit(digit): #根据数字绘制七段数码管
drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,6,8] else drawLine(False)
turtle.left(90)
drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
turtle.left(180)
turtle.penup() #为绘制后续数字确定位置
turtle.fd(20) #为绘制后续数字确定位置
def drawData(data): #获取要输出的数字 data为日期,格式为‘%Y-%m=&d+’
turtle.pencolor("red")
for i in data:
if i=="-":
turtle.write("年",font=("Arial",18,"normal"))
turtle.pencolor("green")
turtle.fd(40)
elif i=="=":
turtle.write("月",font=("Arial",18,"normal"))
turtle.pencolor("blue")
turtle.fd(40)
elif i=="+":
turtle.write("日",font=("Arial",18,"normal"))
else:
drawDigit(eval(i)) #通过eval()函数将数字变为整数
def main():
turtle.setup(800,350,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawData("2022-3=18+") #drawData(time.strftime("%Y-%m=%d+",time.gmtime()))
turtle.hideturtle()
turtle.done()
main()
实例:科赫雪花绘制
#KochDrawV1.py 函数递归实例
import turtle
def koch(size,n):
if n==0:
turtle.fd(size)
else:
for angle in [0,60,-120,60]:
turtle.left(angle)
koch(size/3,n-1)
def main():
turtle.setup(600,600)
turtle.penup()
turtle.goto(-200,100)
turtle.pendown()
turtle.pensize(2)
level=3 #3阶科赫曲线,阶数
koch(400,level)
turtle.right(120)
koch(400,level)
turtle.right(120)
koch(400,level)
turtle.hideturtle()
main()