目录
1.数字类型及操作
①整数类型:
power(x,y) x的y次方
②浮点类型(带有小数)
浮点数间运算存在不确定尾数
round(0.1+0.2)==0.3 #浮点数间运算比较用round()辅助
round(x,d): 对x四舍五入,d是小数截取位数,默认为0(取整),d可以省去
浮点数可用科学计数法表示:使用e或E,以10为基数,例如 4.3e-3=0.0043
③复数类型
z=1.23e-4+5.6e+89j
z.real 获得实部,z.imag 获得虚部
④数值运算操作符 + - * /
x // y 整数除 10//3结果为3
x % y 取除之后的余数
x**y 幂运算,x的y次幂
二元操作符(op):
x op=y 表示 x=x op y
x+=y; x-=y; x*=y; x/=y; x//=y; x**=y
⑤数值运算函数
abs(x) 取绝对值
divmod(x,y) 输出商和余数: divmod(10,3)=(3,1)
pow(x,y[,z]) 幂余 (x**y)%z: pow(3,pow(3,99),10000)结果为4587 参数z可以省略
max(x1,x2,...,xn) 返回其中的最大值
min(x1,x2,...,xn) 返回其中的最小值
int(x) 将x变为整数部分,舍弃小数部分 int(123.45) 为123; int(“123”) 为123
float(x) 将x变为浮点数,增加小数部分 float(12)为12.0; float ("1.23')为1.23
complex(x) 将x变为复数,增加虚数部分 complex(4)为4+0j
2.实例
2.1 一年365天,每天进步1%,或每天退步1%
#DayDayUpQ1
dayup=pow(1.001,365)
daydown=pow(0.999,365)
print("向上:{:.2f}, 向下:{:.2f}".format(dayup,daydown))#结果取小数点后两位
2.2 工作日模式:一年365天,一周五个工作日,每天进步1%;两个休息日,每天退步1%
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))
2.3 工作日模式要努力到什么水平,才能和每天努力1%一样
#DayDayUpQ4
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))
3.字符串类型及操作
3.1.字符串类型的表示
由一对单引号或一对双引号表示
由一对三单引号或三双引号表示,可表示多行字符串
索引:返回字符串中的单个字符 eg. TempStr[-1]
切片:返回字符串中一段字符字串 eg.TempStr[0:-1]
<字符串>[M:N],M缺失表示至开头,N缺失表示至结尾
转义符:\b回退 \n换行(光标移动到下行首) \r回车(光标移动到本行首)
3.2 字符串操作符
x+y 连接两个字符串x,y
n*x 或 x*n 复制n次字符串x
x in s 如果x是n的字串,返回True,否则返回False
eg.输入1-7的整数表示星期几,输出整数对应的星期字符串
#获取星期字符串
weekStr="星期一星期二星期三星期四星期五星期六星期日"
weekId=eval(input("请输入星期数字(1-7):")) #去掉输入字符串引号
pos=(weekId-1)*3 #计算起始索引位置
print(weekStr[pos:pos+3])
或者
#获取星期字符串
weekStr="一二三四五六日"
weekId=eval(input("请输入星期数字(1-7):"))
print("星期"+weekStr[weekId-1])
3.3 字符串处理函数
len(x) 返回字符串长度
str(x) 变成任意类型x多对应的字符串形式,就是给其加上引号
hex(x)或oct(x) 整数x的十六进制或八进制小写形式字符串 hex(425)为'0x1a9"
chr(u) u为Unicode编码,返回其对应字符
ord(x) x为字符,返回其对应的Unicode编码(整数)
for i in range(12):
print(chr(9800+i),end="") #end为空,输出之后不换行,所有结果一行输出
3.4 字符串处理方法
str.lower()或 str.upper() 将字符串全部字符大写或小写
str.split(sep=None) 返回一个列表,由str根据sep被分割的部分组成
"A,B,C".split(",")的结果为['A','B','C']
str.count(sub) 返回字串sub在str中出现的次数
" an apple a day".count("a")的结果为4
str.replace(old,new) 所有old子串被替换为new
"python".replace("n","n123.io") 结果为 “python123.io"
str.center(width[,fillchar]) 字符串根据width居中,fillchar可选
"python".center(20,"=")结果为'=======python======='
str.strip(chars) 从str中去掉在其左侧和右侧chars中列出的字符
”= python= ".strip(" =np")结果为”ytho"
str.join(iter)在iter变量除最后元素外每个元素后增加一个str
','.join("12345") 结果为 “1,2,3,4,5" #可用于字符串分隔
3.5 字符串类型的格式化
{ }表示槽,字符串中槽的顺序与format中参数的顺序对应
可以槽中填写顺序
槽内部对格式化的配置方式
{<参数序号>:<格式控制标记>}
默认情况下填充的是空格,左对齐
类型中参数的具体含义:
b 二进制; c 以字符形式;d十进制; o八进制; x十六进制; X大写的十六进制
e 科学计数法e; E科学计数法E; f 非科学计数法形式的浮点数; %百分数形式的浮点数
4. time库的使用
4.1 时间获取
time() | 获取当前时间,即计算机内部时间,浮点数;import time库,用time.time()调用 |
ctime() | 获取当前时间并以易读方式表示,返回字符串;time.ctime() |
gmtime() | 获取当前时间,表示为计算机可处理的时间格式;time.gtime() |
4.2 时间格式化
strftime(tpl,ts) | 将时间以合理的方式展示出来(格式化) tpl是格式化模板字符串,用来定义输出效果 ts是计算机内部时间类型变量 |
strptime(str,tpl) | 转化为计算机内部可以操作的时间(反格式化) str 是字符串形式的时间值 tpl 是格式化模板字符串,用来定义输入效果 |
4.3 程序计时应用
perf_counter() | 返回一个CPU级别的精确时间计数值,单位为秒 计数值起点不确定,连续调用差值才有意义 |
sleep(s) | s为拟休眠的时间,单位是秒,可以是浮点数 |
5.文本进度条
采用字符串方式打印可以动态变化的文本进度条
import time
scale=10
print("------执行开始------")
for i in range(scale+1):
a='*'*i #复制i次
b='·'*(scale-1)
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="") #end=""可以避免换行
time.sleep(0.1)
(注:idle会屏蔽\r,需要用其他运行环境)
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,'-'))