目录
声明:本文只是个人的学习笔记,代码来源于中国大学mooc中的内容
1.时间获取:time() ctime() gmtime()
声明:本文只是个人的学习笔记,代码来源于中国大学mooc中的内容
3.1数字类型及其操作
一整数类型
1可正可负,没有取值范围限制
2.pow(x,y)函数:计算x^y,想算多大算多大
3.十进制;二进制(0b或0B开头):0b010,-0B101;八进制(0o或0O开头);十六进制(0x或0X开头)
二浮点数类型
1.浮点数取值范围和小数精度都存在限制,但常规计算可忽略;取值范围数量级约-10^307至10^308,精度数量级10^-16.
2.浮点数间运算存在不确定尾数,不是bug
3.二进制表示小数,可以无限接近,但不完全相同
>>0.1+0.2==0.3
False
4.round(x,d):对x四舍五入,d是小数截取位数;浮点数间运算与比较用round()函数辅助
5.浮点数可以采用科学计数法表示:使用字母e或E作为幂的符号,以10位基数,格式如下:<a>e<b>表示a*10^b
三复数类型
1.定义j=√-1,a+bj被称为复数,a是实部,b是虚部
2.z.real获得实部,z.imag获得虚部
四数值运算操作符
x//y 整数除,x与y之整数商,10//3结果是3
+x x本身
-y y的负值
x**y 幂运算,x的y次幂,x^y
当y是小数时,开方运算10**0.5结果是√10
x op=y 即x=x op y,其中,op为二元操作符
(数字类型的关系:类型间可进行混合运算,生成结果为“最宽”类型:整数->浮点数->复数)
五数值运算函数
abs(x) | x的绝对值 |
divmod(x,y) | 商余,(x//y,x%y) |
pow(x,y[,z]) | 幂余,(x**y)%z,[...]表示参数z可省略 |
round(x[,d]) | 四舍五入,d是保留小数位数,默认值为0 |
max(x1,x2,...,xn) | 最大值,n不限 |
min(x1,x2,...,xn) | 最小值,n不限 |
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 |
3.2 实例3:天天向上的力量
def dayUP(df):#def保留字用于定义函数
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 字符串类型及操作
一字符串类型的表示
由一对单引号或双引号表示,仅代表单行字符串
由一对三单引号或三双引号表示,可代表多行字符串
二字符串的序号(正向递增序号和反向递减序号)
三字符串的使用:[]
字符串切片高级用法:<字符串>[M:N],M缺失表示至开头,N缺失表示至结尾
<字符串>[M:N:K],根据步长K对字符串切片
"0一二三四五六七八九十“[1:8:2]结果是”一三五七“
“0一二三四五六七八九十”[::-1]结果是“十九八七六五四三二一0”
四字符串的特殊字符(转义符\)
-转义符表达特定字符的本意
-转义符形成一些组合,表达一些不可打印的含义
五字符串操作符
x+y | 连接两个字符串x和y |
n*x或x*n | 复制n次字符串x |
x in s | 如果x是s的字符串,返回True,否则返回False |
六字符串处理函数
len(x) | 返回字符串x的长度 |
str(x) | 任意类型x所对应的字符串形式 |
hex(x)或oct(x) | 整数x的十六进制或八进制小写形式字符串 |
chr(u) | x为Unicode编码,返回其对应的字符 |
ord(x) | x为字符,返回其对应的Unicode编码 |
Unicode编码(Python字符串的编码方式)
-统一字符编码,即覆盖了几乎所有字符的编码方式
-从0到1114111(0x10FFFF)空间,每个编码对应一个字符
-Python字符串中每个字符都是Unicode编码字符
七字符串处理方法("方法"在编程中是一个专有名词)
-"方法"特指<a>.<b>()风格中的函数<b>()
-方法本身也是函数,但与<a>有关
-字符串或字符串变量是<a>
(一些以方法形式提供的字符串处理功能)
str.lower()或str.upper() | 返回字符串的副本,全部字符小写/大写 |
str.split(sep=None) | 返回一个列表,由str根据sep被分隔的部分组成 “A,B,C".split(",")结果为['A','B','C'] |
str.count(sub) | 返回字串sub在str中出现的次数 |
str.replace(old,new) | 返回字符串str副本,所有old字串被替换为new |
str.center(width[,fillchar]) | 字符串str根据宽度 width居中,fillchar可选 “python".center(20,"=")结果为 '=======python=======' |
str.strip(chars) | 从str中去掉在其左侧和右侧chars中列出的字符 "=python=".strip(" =np")结果为 |
str.join(iter) | 在iter变量除最后元素外每个元素后增加一个str ",".join("12345")结果为 "1,2,3,4,5"#主要用于字符串分隔等 |
八字符串类型的格式化
1.使用.format()方法:<模块字符串>.format(<逗号分隔的参数>)
"{1}:计算机{0}的cpu占用率为{2}%".format("2018-10-10","c",10)
'c:计算机2018-10-10的cpu占用率为10%'
"{}:计算机{}的cpu占用率为{}%".format("2018-10-10","c",10)
'2018-10-10:计算机c的cpu占用率为10%'
2.槽内部对格式化的配置方式{<参数序号>:<格式控制标记>}
: | <填充> | <对齐> | <宽度> | <,> | <.精度> | <类型> |
引号符号 | 用于填充的 单个字符 | <左对齐 >右对齐 ^居中对齐 | 槽设定的输 出宽度 | 数字的 千位分隔符 | 浮点数小数精度 或字符串最大输 出长度 | 整数类型 b,c,d,o,x,X 浮点数类型 e,E,f,% |
"{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%'
>>>
3.4模块2:time库的使用
一time库
是Python中处理时间的标准库,import time
time.<b>()
1.时间获取:time() ctime() gmtime()
time() | 获取当前时间,及计算机内部时间值,浮点数 >>> time.time()
|
ctime() | 获取当前时间并以易读方式表示,返回字符串 >>> time.ctime() |
gmtime() | 获取当前时间,表示为计算机可处理的时间格式 >>> time.gmtime() tm_mday=15, tm_hour=4, tm_min=53, tm_sec=43, tm_wday=2, tm_yday=197, tm_isdst=0) |
2.时间格式化:strftime() strptime()
1.格式化:类似于字符串格式化,与要有展示模板
展示模板由特定的格式化控制符组成
2.strftime(tpl,ts) tql是格式化模板字符串,用来输出结果;ts是计算机内部时间类型变量
>>> t=time.gmtime()
>>> time.strftime("%Y-%m-%d %H:%M:%S",t)
'2020-07-15 09:44:29'
格式化控制符 %Y 年份 0000~9999 %m 月份 01~12 %B 月份名称 January~December %b 月份名称缩写 Jan~Dec %d 日期 01~31 %A 星期 Monday~Sunday %a 星期缩写 Mon~Sun %H 小时(24h制) 00~23 %l 小时(12h制) 01~12 %p 上/下午 AM,PM %M 分钟 00~59 %S 秒 00~59
3.strptime(str,tql) str是字符串形式的时间值;tql是格式化模板字符串,用来定义输入结果
>>> timeStr='2018-01-26 12:55:20'
>>> time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=26, tm_hour=12, tm_min=55, tm_sec=20, tm_wday=4, tm_yday=26, tm_isdst=-1)
3.程序计时:sleep(),perf-counter()
程序计时指测量起止动作所经历时间的过程
测量时间:perf_counter() 返回一个CPU级别的精确时间计数值,单位为秒
由于这个计数值起点不确定,连续调用差值才有意义
>>> start=time.perf_counter()
>>> end=time.perf_counter()
>>> end-start
24.802861599997414产生时间:sleep(s) s拟休眠的时间,单位是秒,可以是浮点数
3.5 实例4:文本进度条
1.“文本进度条”简单的开始
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("------执行结束------")
2.“文本进度条”单行动态刷新
-刷新的本质:用之后打印的字符覆盖之前的字符
-不能换行:print()需要被控制
-要能回退:打印后光标退回到之前的位置\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,'-'))