1.数字类型及操作
1.1 整数类型:与数学中整数的概念一致。可正可负,没有取值范围限制
· pow(x,y) 函数:计算x^y
· 整数类型的4种进制表示形式:
十进制:1020,99,-217
二进制:以0b或0B开头,0b010,-0B101
八进制:以0o或0O开头,0o123,-0O456
十六进制:以0x或0X开头,0x9a,-0X89
1.2 浮点数类型:与数学中实数的概念一致
· 带有小数点及小数的数字
· 浮点数取值范围和小数精度都存在限制,但常规计算可忽略
· 取值范围数量级约10^-307 至 10^308,精度数量级10^-16
· 浮点数间运算存在不确定尾数,由于计算机内部机制导致,不是bug
· round(x,d):对 x 四舍五入,d 是小数截取尾数
· 浮点数间运算与比较用round()函数辅助
· 不确定尾数一般发生在10^-16左右,round()十分有效
· 使用字母e或E作为幂的符号,以10为基数,格式: <a>e<b> 表示a*10^b
1.3 复数类型:与数学中复数的概念一致
例: z = 1.23e-4+5.6e+89j
z.real获得实部 z.imag获得虚部
1.4 数值运算操作符
数字类型的关系:类型间可进行混合运算,生成结果为"最宽"类型
整数是特殊的浮点数,浮点数是特殊的复数
1.5 数值运算函数
实例:天天向上的力量
第一问:一年365天,每天进步1‰,累计进步多少呢?一年365天,每天退步1‰,累计剩下多少呢?
#DayDayUpQ1.py
dayup = pow(1.001, 365)
daydown = pow(0.999, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
第二问:一年365天,每天进步5‰或1%,累计进步多少呢?一年365天,每天退步5‰或1%,累计剩下多少呢?
#DayDayUpQ2.py
dayfactor = 0.005 #使用变量的好处,一处修改即可
dayup = pow(1+dayfactor, 365)
daydown = pow(1-dayfactor, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
第三问:一年365天,一周5个工作日,每天进步1%,一周2个休息日,每天退步1%。这种工作日的力量,如何呢?
#DayDayUpQ3.py
dayup = 1.0
dayfactor = 0.01
for i in range(365): #采用循环模拟365天的过程 抽象 + 自动化
if i % 7 in [6,0]:
dayup = dayup*(1-dayfactor)
else:
dayup = dayup*(1+dayfactor)
print("工作日的力量:{:.2f} ".format(dayup))
第四问:工作日模式要努力到什么水平,才能与每天努力1%一样? - A君: 一年365天,每天进步1%,不停歇 - B君: 一年365天,每周工作5天休息2天,休息日下降1%,要多努力呢?
#DayDayUpQ4.py
def dayUP(df):
dayup = 1
for i in range(365): #根据df参数计算工作日力量的函数 参数不同
if i % 7 in [6,0]: #这段代码可共用 def保留字用于定义函数
dayup = dayup*(1 - 0.01)
else:
dayup = dayup*(1 + df)
return dayup
dayfactor = 0.01
while dayUP(dayfactor) < 37.78: #while保留字判断条件是否成立 条件成立时循环执行
dayfactor += 0.001
print("工作日的努力参数是:{:.3f} ".format(dayfactor))
2.字符串类型及操作
2.1 字符串类型的表示
由一对单引号或双引号表示,仅表示单行字符串
eg: 'adfvsad' "vfdvfdva"
由一对三单引号或三双引号表示,可表示多行字符串
eg: ''' sfdsf
f dsf '''
如果希望在字符串种包含双引号或单引号?
'' dfsfsafd ' dsfds '' or ' ds fdsa '' dsfa '
如果希望在字符串中既包含单引号又包含双引号?
''' dsafdsaf 'dfs dsafd '' dsfsfsfd '''
字符串的使用:
索引:返回字符串中单个字符 格式: < 字符串 >[ M ]
切片:返回字符串中一段字符字串从第M个字符到N-1个字符 格式: < 字符串 >[ M:N ]
切片的高级用法:
< 字符串 >[ M : N ] M缺失表示至开头,N缺失表示至结尾
< 字符串 >[ M : N : K ] 根据步长 K 对字符串切片
字符串的特殊字符
转义符 \ 转义符表达特定字符的本意,通过加 \ 可以输出 \ 后的字符
转义符形成一些特殊组合,表示一些不可打印的含义 eg: \b 表示回退 \n 表示换行 \r表示回车
2.2 字符串操作符
由0个或多个字符组成的有序字符序列
2.3 字符串处理函数
一些以函数形式提供的字符串处理功能
Python使用的是Unicode编码
有趣的例子:输出十二星座图案代码
for i in range(12):
print(chr(9800+i),end=' ')
2.4 字符串处理方法
2.5 字符串类型的格式化
字符串格式化使用.format()方法,用法如下:
< 模板字符串 >.format(< 逗号分割的参数 >)
3.模块time库的使用
time库是python中处理时间的标准库
import time
time.<b>( )
time库中包括三类函数:
时间获取:time() ctime() gmtime()
时间格式化: strftime() strptime()
程序计时: sleep() perf_counter()
3.1 时间获取
3.2 时间格式化
3.3 程序计时
实例:文本进度条
采用字符串方式打印可以动态变化的文本进度条,进度条需要能在一行中逐渐变化
刷新:在print()中使用 \r 打印后让光标退回到之前的位置
#简单的文本进度条
import time
for i in range(101):
print("\r{:>3}%".format(i),end='')
time.sleep(0.1)
#文本进度条
import time
scale = 50
s = time.perf_counter()
print("执行开始".center(scale//2,'-'))
for i in range(scale + 1):
a = '*'* i
b = '.'* (scale - i)
n = (i / scale) * 100
dur = time.perf_counter() - s
print("\r{:^3.0f}%[{}->{}{:.2f}".format(n,a,b,dur),end='')
time.sleep(0.1)
print("\n"+"执行结束".center(scale//2,'-'))