目录
实例1:温度转换
举一反三:
(1)输入输出的改变
标识改变放在温度数值之前:C82,F28
标识字符改变为多个字符:82Ce,28F
(2)转换问题的改变
货币转换、长度转换、重量转换、面积转换
格式:
①高亮②缩进③注释(单行# 多行’’’ ‘’’)
命名与保留字
①大小写敏感
②保留字
数据类型
①字符串 “ ” 或 ‘ ‘ 编号从0开始,正向递增序号 反向递减序号
索引:返回字符串中单个字符
eg. TemStr[-1]
“请输入带有符号的温度值:”[0]
切片:一段字符
eg.TemStr[0:-1],从零开始但不到最后一个,即去掉最后一个字符串
“请输入带有符号的温度值:”[1:3] 取出第一、二个字符,不到第三个字符
TempStr[1:]表示字符串除首字符外的所有字符。
②整数
③浮点数
④列表类型 如['F', 'f'] 可使用in 判断是否在表中
语句与函数
①赋值语句
运算结果和数据类型同时赋予
②分支语句
注意“:” 条件成立则执行后面分支语句
③函数
名字加括号
①<变量> = input(<提示信息字符串>)
②print(<拟输出字符串或字符串变量>)
格式化 print("转换后的温度是{:.2f}C".format(C))
{ }是槽
③eval(<字符串或字符串变量>)
评估函数:去掉函数最外侧引号并执行余下语句的函数
>>>eval(“1”) 得到1
>>>eval(“1+2”) 得到3
>>>eval(‘“1+2”’) 得到‘1+2’
>>>eval(‘print(“Hello”)’) 得到Hello
练习:
1.获得用户输入的一个字符串,格式如下:
M OP N
其中,M和N是任何数字,OP代表一种操作,表示为如下四种:+, -, *, /(加减乘除)
根据OP,输出M OP N的运算结果,统一保存小数点后2位。
注意:M和OP、OP和N之间可以存在多个空格,不考虑输入错误情况。
2. 获得用户输入的一个正整数输入,输出该数字对应的中文字符表示。
(0到9对应的中文字符分别是:零一二三四五六七八九)
template = "零一二三四五六七八九"
s = input()
for c in s:
print(template[eval(c)], end="")
end=""表示输出后不增加换行,多个print()可以连续输出
实例2:蟒蛇绘制
#PythonDraw.py
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()
举一反三:
①程序参数的改变
颜色、长度、方向
②图像绘制
圆形、五角星、国旗、机器猫
③照片转手绘?
模块1:turtle库(基本图形绘制)
1.绘图窗体
turtle.setup(width, height, startx, starty)
窗体的宽,长,窗体左上角相对于屏幕左上角的位置
如:turtle.setup(800,400,0,0)
生成窗体宽800高400,位于左上角
turtle.setup(800,400)默认位于中间
turtle空间坐标体系
①绝对坐标
turtle.goto(x, y) 前往画布中任意一点
②海龟坐标
turtle.fd(d)
turtle.bk(d)
turtle.circle(r, angle)
角度坐标系
①绝对角度
turtle.seth(angle) 改变海龟当前行进方向
②海龟角度
如:画“Z”
RGB色彩模式
turtle.colormode(mode)
-1.0:RGB小数值模式
-255:RGB整数值模式
库引用与Import
(1)import <库名>
<库名>.<函数名>(<函数参数>)
不会重名
(2)from <库名> import <函数名>
或 from <库名> import *
<函数名>(<函数参数>)
可能会重名
(3)import <库名> as <库别名>
<库别名>.<函数名>(<函数参数>)
turtle画笔控制函数
1)turtle.penup() 别名 turtle.pu()
抬起画笔,海龟在飞行
2)turtle.pendown() 别名 turtle.pd()
落下画笔,海龟在爬行
3)turtle.pensize(width) 别名 turtle.width(width)
画笔宽度,海龟的腰围
4)turtle.pencolor(color)
画笔颜色,海龟在涂装
①颜色字符串 turtle.pencolor(“purple”)
②RGB的小数值 turtle.pencolor(0.63, 0.13, 0.94)
③RGB的元组值 turtle.pencolor((0.63 ,0.13, 0.94))
turtle运动控制函数
①走直线turtle.forward(d) 别名 turtle.fd(d)
d为行进距离,可为负数
②走曲线turtle.circle(r, extent = None)
根据半径r绘制extent角度的弧形
默认圆心在海龟左侧r距离位置上
如:turtle.circle(100) 默认绘制整个圆
turtle.circle(-100,90) 右上角1/4圆
turtle方向控制函数
①绝对角度
turtle.setheading(angle) 别名turtle.seth(angle)
改变行进方向,海龟走角度
②海龟角度
turtle.left(angle) turtle.right(angle)
angle:在海龟当前行进方向上旋转的角度
基本循环语句
for <变量> in range (<参数>)
<被循环执行的语句>
如:
print中间加逗号的作用:每输出的字符串之间会有空格
range()函数:产生循环计数序列
range(N):产生0 ~(N-1)的整数序列,共N个
range(M, N):产生M ~(N-1)的整数序列,共N-M个
如:range(5) à 0,1,2,3,4
range(2,5) à 2,3,4
“Python蟒蛇绘制”代码分析
turtle.done()
文件式描写方法以turtle.done()结尾,程序不会自动退出,要手工关闭窗口;
否则程序会自动退出
基本数据类型
1.整数、浮点数、复数
1)整数
pow(x, y) 求x的y次方
4种进制表示形式:①十进制②二进制0b 0B③八进制0o 0O④十六进制0x 0X
2)浮点数
①取值范围 -10^308 ~ 10^308 和精度 10^-16
②运算存在不确定尾数
round(x, d) :对x四舍五入,d是小数截取位数
用于浮点数间运算、比较
③科学计数法:<a>e<b> = 10^b
如:4.3e-3 = 0.0043 9.6E5 = 960000.0
3)复数
如:z = 1.23e-4 + 5.6e+89j
实部1.23e-4 虚部5.6e+89
4)数值运算操作符
类型间可进行混合运算,生成结果为“最宽”的类型
数值运算函数
数字类型转换函数
实例3:天天向上的力量
(1)
#DayDayUpQ1.py
dayup = pow(1.001,365)
daydown = pow(0.999,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))
(2)
#DayDayUpQ2.py
dayfactor = 0.01
dayup = pow(1 + dayfactor, 365)
daydown = pow(1 - dayfactor, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))
(3)for in 计算思维
#DayDayUpQ3.py 工作日的力量
dayup = 1.0
dayfactor = 0.01
for i in range(365):
if i % 7 in [6,0]:
dayup = dayup * (1 - dayfactor)
else:
dayup = dayup * (1 + dayfactor)
print("工作日的力量:{:.2f}".format(dayup))
(4)def while 笨办法试错
#DayDayUpQ4.py
def dayUP(df):
dayup = 1
for i in range(365):
if i % 7 in [6, 0]:
dayup = dayup * (1 - 0.01)
else:
dayup = dayup * (1 + df)
return dayup
dayfactor = 0.01
while dayUP(dayfactor) < 37.78:
dayfactor += 0.001
print("工作日的努力参数是:{:.3f}".format(dayfactor))
举一反三:
三天打渔两天晒网
2.字符串
字符串类型及操作
1)2类共4种表示方法
表示单行字符串①一对单引号②一对双引号
表示多行字符串③一对三单引号④一对三双引号
注:①三单引号可当作注释
②希望在字符串中包含单或双引号
2)序号
切片的高级用法:
-<字符串>[M:N],M缺失表示至开头,N缺失表示至结尾
“零一二三四五六七八九十”[:3]结果是“零一二”
-<字符串>[M:N:K],根据步长对字符串切片
“零一二三四五六七八九十”[1:8:2]结果是“一三五七”
“零一二三四五六七八九十”[::-1]结果是“十九八七六五四三二一零”
3)转义符
\” \b回退 \n换行(光标移动到下行首) \r回车(光标移动到本行首)
4)字符串操作符
如:获取星期字符串
#WeekNamePrint.py
weekStr = "一二三四五六日"
weekId = eval(input("请输入星期数字(1-7):"))
print("星期" + weekStr[weekId - 1])
5)字符串处理函数
①汉字、数字、英文、符号都算1位
②统一字符编码 0~1114111(0x10FFFF)
如:”1 + 1 = 2 ” + chr(10004) à ‘1 + 1 = 2√
for i in range(12):
print(chr(9800 + i), end=””)
十二星座
练习:
1.星号三角形(读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求第1行1个,第2行3个,第3行5个星号,一次类推,最后一行N个星号。)
我的:
N = eval(input())
for i in range(N):
a = "*" * (2 * i + 1)
if len(a) <= N:
print(a.center(N, ))
注:输出后自动换行,所以不用加\n
参考:
2.凯撒密码
恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26
上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26
假设用户可能使用的输入包含大小写字母a~zA~Z、空格和特殊符号,请编写一个程序,对输入字符串进行恺撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。
参考:
6)字符串处理方法
格式化 <模板字符串>.format(<逗号分隔的参数>)
槽 { } 如:”{ }:计算机{ } 的CPU占用率为{ }%”.format(“2018-10-10”, “C”, 10)
槽内部对格式化的配置方式:{<参数序号>:<格式控制标记>}
如:英文半角形式
>>>”{0:=^20}”.format(“PYTHON”) à ‘=======PYTHON=======’
>>>”{0:*>20}”.format(“BIT”) à ‘*****************BIT’
>>>”{:10}”.format(“BIT”) à ‘BIT ‘
默认填充为空格,左对齐
>>> "{0:,.2f}".format(12345.6789) à'12,345.68'
>>> "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)à'110101001,Ʃ,425,651,1a9,1A9'
>>> "{0:e},{0:E},{0:f},{0:%}".format(3.14)
à'3.140000e+00,3.140000E+00,3.140000,314.000000%'
注:结果超过规定宽度时以结果宽度为准
模块2:time库(时间的基本处理)
基本介绍
①计算机时间的表达②提供获取系统时间并格式化输出功能③提供系统级精确计时功能,用于程序性能分析
import time
time.<b>()
时间获取:time()浮点数1970.1.1.00:00 ctime()易读 gmtime()程序可处理
时间格式化:strftime()实现时间格式化 strptime()将字符串变成时间
程序计时应用:sleep()产生时间 perf_counter()测量时间
实例4:文本进度条
#TextProBarV1.py
import time
scale = 10
print("-----执行开始-----")
for i in range(scale + 1):
a = '*' * i
b = '.' * i
c = (i / scale) * 100
print("{:^3.0f}%[{}-->{}]".format(c, a, b))
time.sleep(0.1)
print("-----执行结束-----")
单行动态刷新
①刷新本质:用后打印的字符覆盖之前的字符
②不能换行:print()需要被控制
③能回退:\r
#TextProBarV2.py
import time
for i in range(101):
print("\r{:3}%".format(i),end = "")
time.sleep(0.1)
注:end = ""是print()函数的一个参数,可改变每次print()函数输出最后增加的信息
如:①这里end = ""增加的是空字符串,即输出后光标停留在当次输出字符串的后面
②如果希望print()函数输出最后增加什么信息,就在end函数中增加
③不加时默认输出一个信息之后增加一个换行,即自动换到下一行
在IDLE中运行得
因为IDLE是编写程序的开发环境,不是程序正常运行的主要环境(双击或控制台),为保证运行效果\r被屏蔽。
用cmd运行成功
完整效果
#TextProBarV3.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,'-'))
结果如下,发现所用结果不一样:
举一反三:
①计时方法
如:比较不同算法时间、统计部分程序运行时间
②进度条扩展
运行时间较长时,为增加用户体验
开始慢,后续逐渐增加最好