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() #c程序将等待5.2秒后再退出
文本进度条采用字符串方式打印可以动态变化的文本进度条
采用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>
基本随机数函数: 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()