学会举一反三
- 观察代码,理解语法元素。参考框架结构,逐行分析,逐词理解。
- 改变输入输出。
- 问题扩展。
绘制蟒蛇``
import turtle
turtle.setup(650,350,200,200)#初始化绘图窗体
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40,80)
turtle.circle(-40,80)
turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(16,180)
turtle.fd(40*2/3)
turtle.done()
turtle库
绘图窗体turtle.setup(width,height,startx,stary)
后两个可选,起始点是窗体左上角相对于屏幕左上角位置
turtle.goto(0,0) #绝对坐标
#海龟坐标
turtle.fd(d)正前
turtle.bk(d)后退
turtle.circle(r,angle) 圆心在左手侧距离为r处
turtle.seth(angle)改变海龟行进方向(不行进),绝对角度
turtle.left(angle)
turtle.right(angle)
成对出现turtle.penup() turtle.pendown()
#WindWheel.py
import turtle as t
t.pensize(2)
for i in range(4):
t.seth(90*i)
t.fd(150)
t.right(90)
t.circle(-150, 45)
t.goto(0,0)
基本数据类型
整数(无取值范围限制)
pow(x,y) 次方
浮点数
运算存在不确定尾数(因为二进制和十进制不是完全对应的)
round(x,d) 对x四舍五入d位
复数
操作符
//整数除,10//3结果是3
x**y幂运算,y是小数时为开方
二元操作符 x +=y
混合运算结果为最宽类型
整数-》浮点数-》复数
运算函数
abs(x)绝对值
divmod(x,y)商余
divmod(10,1)输出(3,1)
pow(x,y,[,z]) —> (x**y)%z
round(x[,d]) d是保留小数位数
字符串
<字符串>[M:N:K],K是步长
[::-1]逆序
x+y 连接
nx,xn 复制n此字符串x
x in s 返回T F
函数
len()
str(x) 转换成字符串
方法
str.lower()
str.upper()
str.split(sep=None) 返回列表,如“A,B,D”.split(",")结果是 [‘A’,‘B’,‘D’]
str.count(sub) 返回sub在str中出现的次数
str.replace(old,new)
str.center(width[,fillchar]) 根据宽度居中
str.strip(chars) 去掉左右两侧chars中出现的字符
str.join(iter) 如",".join(“12345”) “1,2,3,4,5”
格式化
format+槽机制。可以按顺序对应或在槽中填写参数序号
:为引导符号
填充,对齐<左>右^居中,宽度
<,>数字千位分割符<.精度><类型>
time库
函数
time() 时间戳,浮点数 1970.1.1 0:0
ctime() 返回字符串
gmtime()
时间格式化
strftime(tpl,ts) tpl是格式化模板字符串,用来定义输出效果,ts是计算机内部事件类型变量
t = time.gmtime()
time.strftime("%Y-%m-%d %H:%M:%S",t)
'2021-4-27 15:42:37'
格式化字符串 | 说明 |
---|---|
%m | 月份 |
%B | 月份名称 |
%b | 月份名称缩写 |
%A | 星期 |
%a | 星期缩写 |
%H | 24小时制 |
%I | 12小时制 |
%p | 上下午 |
strptime(str,tpl) 将时间字符串传变为计算机内部格式
程序计时
测量时间 perf_counter() CPU级别的精确计数时
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)
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,'-'))
#星号三角形问题
n = eval(input())
for i in range(1,n+1,2):
print("{0:^{1}}".format('*'*i, n)) #内部槽用n作为居中的width?