Python 学习笔记
time 库
时间格式化
strftime(tpl,ts) tpl是格式化模板字符串,用来定义输出效果 ts是计算机内部时间类型变量t=time.gmtime() time.strftime("%Y-%m-%d %H:%M:%S",t) 控制符 年 %Y 0000~9999 月 %m 01~12 月份名称 %B january~december 月份名称缩写 %b Jan~Dec 日期 %d 01~31 星期 %A Monday~Sunday 星期缩写 %a Mon~Sun %H 24小时制 00~23 %I 12小时制 01~12 %p AM,PM %M 分钟 00~59 %S 秒 00~59 strptime 将字符串变成时间 strptime(str,tpl) str是字符串形式的时间值,tpl是格式化模板字符串,用来定义输入效果timeStr='2021-02-09 18:48:50' time.strptime(timeStr,"%Y-%m-%d %H:%M:&S") 程序计时应用 测量时间 perf_counter()以纳秒计算 由于计时起点不确定,连续调用差值才有意义start=time.perf_counter() end=time.perf_counter() end-start 产生时间 sleep(s)让程序休眠s秒时间,可以是浮点数
def wait():
time.sleep(5.2)
wait()
文本进度条采用字符串方式打印可以动态变化的文本进度条 采用sleep()模拟持续进度
import time
scale=10
print("------执行开始------")
for i in range(scale+1):
a='*'*i
b='.'*(scale-i)
c=(i/scale)*100
print("{:^3.0f}%[{}->{}]".format(c,a,b))
time.sleep(0.1)
print("------执行结束------")
单行动态刷新\r
import time
for i in range(101):
print("\r{:3}%".format(i),end="")
time .sleep(0.1)
程序的分支结构
单分支结构、二分支结构、多分枝结构、条件判断及组合、程序的异常处理
单分支结构
if<条件>: <语句块>
guess=eval(input())
if guess==99:
print("猜对了")
二分支结构
if<条件>: <语句块1> else: <语句块2>
guess=eval(input())
if guess==99:
print("猜对了")
else:
print("猜错了")
紧凑形式:适用于简单表达式的二分支结构 <表达式1>if<条件>else<表达式2>
guess=eval(input())
print("猜{}了".format("对"if guess==99 else "错"))
是表达式的使用而不是语句的使用
多分支结构
if<条件>: <语句块1> elif: <语句块2> else: <语句块3>
条件判断及组合 操作符 < > <= >= == != 保留字 and 与 or 或 not 非 异常处理的基本使用 try: <语句块1> except<异常类型>: <语句块2>
try:
num=eval(input("请输入一个整数:"))
print(num**2)
except:
print("输入不是整数")
finally:<>一定会执行 实例:身体质量指数BMI
a=eval(input("请输入身高:"))
b=eval(input("请输入体重:"))
BMI=b/(a*a)
print("BMI={}".format(BMI))
if BMI<18.5:
print("偏瘦")
elif BMI>=15.5 and BMI<=24:
print("正常")
elif BMI>24and BMI<28:
print("偏胖")
else:
print("肥胖")
循环结构
遍历循环,无限循环
遍历循环:
for <循环变量> in <遍历结构>: <语句块> 计数循环(N次) for i in range(N): <语句块> for i in range(M,N,K): <语句块> 字符串遍历循环 for c in s: <语句块> s是一个字符串,c代表每个字符 列表遍历循环 for item in ls: <语句块> ls是一个列表,遍历每个元素,产生循环 文件遍历循环 for line in fi: <语句块> fi是文件标识符,遍历其每行,产生循环
无限循环
while<条件>: <语句块> 循环控制保留字 break 、continue 跳出一层循环 循环高级用法 for <循环变量> in <遍历结构>: <语句块1> else: <语句块2>
while <条件>: <语句块1> else: <语句块2>
random库概述
基本随机数函数: seed()、random() 扩展随机数函数: randint(a,b)生成a~b之间的整数 getrandbits(k)生成k比特长的整数 uniform(a,b)生成[a,b]之间的随机小数 randrange(m,n[k])生成[m,n)之间的步长为k的随机整数,choice(seq)从序列seq中随机选取一个元素 shuffle(seq)对序列seq中的元素随机排列并返回打乱后的序列 seed()是初始给定的随机数种子,默认为当前系统时间 random.seed(a=None) random.seed(10)#产生种子10对应的序列 random()生成一个0~1.0之间的随机小数 圆周率计算
from random import random
from time import perf_counter
DAETS=1000*1000
hits=0.0
start=perf_counter()
for i in range (1,DAETS+1):
x,y=random(),random()
dist=pow(x**2+y**2,0.5)
if dist <=1.0:
hits=hits+1
pi=4*(hits/DAETS)
print("圆周率的值为:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter()-start))
函数和代码复用
函数作用:降低编程难度、代码复用 def<函数名>(<参数(0个或多个)>…<非可选参数>,<可选参数>): <函数体> return<返回值> 计算n!
def fact(n):
s=1
for i in range (1,n+1):
s*=i
return s
n=eval(input())
print(fact(n))
可变参数传递函数定义时可以设计可变数量参数,即不确定参数总数量 def <函数名>(<参数>,*b); <函数体> return <返回值> lambda函数返回函数名作为结果(匿名函数,返回值就是它名字) <函数名>-lambda<参数>:<表达式> 七段数码管绘制
import turtle
def drawline(draw):
turtle.pendown()if draw else turtle.penup()
turtle.fd(40)
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 drawdate(date):
for i in date:
drawdigit(eval(i))
def main():
turtle.setup(800,350,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawdate("20220213")
turtle.hideturtle()
turtle.done()
main()
|