一、数字类型及操作
1、整数类型
-
- 与数学中整数的概念一致
- 可正可负,无取值范围限制
- pow(x, y):计算x ^ y
- 有十进制、二进制(以0b或0B开头)、八进制(以0o或0O开头)、十六进制(以0x或0X开头)
>>> pow(2,100) 1267650600228229401496703205376 >>> pow(2,pow(2,15)) 141546103104495478900155302774495160134813071147238816
2、浮点数类型:
- 带有小数点及小数的数字
- 浮点数的取值范围数量级约为 -10307至10308,精度数量级10-16
- 浮点数间运算存在不确定尾数,这不是bug
- 为消除不确定尾数影响,浮点数间运算与比较用round( )函数辅助
- round(x, d):对x四舍五入,d是小数截取位数
- 浮点数可以采用科学计数法表示,使用e或E作为幂的符号:<a>e<b>表示a*10b
>>> 0.1 + 0.2 0.30000000000000004 >>> 0.1 + 0.2 == 0.3 False >>> round(0.1+0.2,1) == 0.3 True >>> 4.3e-3 0.0043 >>> 9.6E5 960000.0
3、复数类型:
- 与数学中复数概念一致
- 通过指令 z.real 获得实部,z.imag 获得虚部
>>> z = 1.23e-4 + 5.6e89j >>> z.real 0.000123 >>> z.imag 5.6e+89
4、数值运算操作符:




5、数值运算函数



二、实例分析—天天向上的力量
1 # 1‰ 的力量
2 #DayDayUpQ1.py
3 dayup = pow(1.001, 365)
4 daydown = pow(0.999, 365)
5 print('向上:{:.2f},向下:{:.2f}'.format(dayup,daydown))
>>>向上:1.44,向下:0.69
1 # 5‰和1%的力量
2 #DayDayUpQ2.py
3 dayfactor = 0.005 #dayfactor可设为0.005或0.01
4 dayup = pow(1+dayfactor, 365)
5 daydown = pow(1-dayfactor, 365)
6 print('向上:{:.2f},向下:{:.2f}'.format(dayup,daydown))
>>>向上:6.17,向下:0.16
1 # 工作日的力量,工作日(5天)每天进步1%,休息日(2天)每天退步1%
2 #DayDayUpQ3.py
3 dayup = 1.0
4 dayfactor = 0.01
5 for i in range(365):
6 if i % 7 in [6,0]:
7 dayup = dayup * (1 - dayfactor)
8 else:
9 dayup = dayup * (1 + dayfactor)
10 print('工作日的力量:{:.2f}'.format(dayup))
工作日的力量:4.63
1 # 工作日的努力,工作日模式在工作日每天要努力到什么水平才能与每天进步1%一样?
2 #DayDayUpQ4.py
3 def Dayup(df):
4 dayup = 1.0
5 for i in range(365):
6 if i % 7 in [6,0]:
7 dayup = dayup * (1-0.01)
8 else:
9 dayup = dayup * (1+df)
10 return dayup
11
12 everydayup = pow(1.01,365)
13 dayfactor = 0.01
14 while Dayup(dayfactor) < everydayup:
15 dayfactor += 0.001
16 print('工作日的努力参数是:{:.3f}'.format(dayfactor))
>>>工作日的努力参数是:0.019
三、字符串类型及操作
1、字符串
- 由一对单引号或双引号表示单行字符串
- 由一对三单引号或三双引号表示多行字符串(常用来多行注释)
- 字符串中有双引号,用单引号表示字符串;字符串中有单引号,用双引号表示字符串;字符串中既有单引号也有双引号,用三单引号表示字符串
2、字符串的序号

3、字符串的使用



4、字符串操作符

1 # 输入整数(1~7),输出对应的中文星期几
2 #WeekNamePrint.py
3 WeekStr = '一二三四五六日'
4 WeekId = eval(input('请输入星期数字(1-7):'))
5 print('星期' + WeekStr[WeekId-1])
5、字符串处理函数


>>> for i in range(26):
print(chr(ord('A')+i),end='')
ABCDEFGHIJKLMNOPQRSTUVWXYZ
>>> '1 + 1 = 2' + chr(10004)
'1 + 1 = 2✔'
6、字符串处理方法



7、字符串类型的格式化
- 格式化是对字符串进行格式表达的方式
- 字符串格式化使用.format()方法:<字符串>.format(<逗号分隔的参数>)


>>> '{0:=^20}'.format('PYTHON')
'=======PYTHON======='
>>> '{0:*>20}{1:&^10}'.format('BIT','TAB')
'*****************BIT&&&TAB&&&&'
>>> '{:,.2f}'.format(1234567.89)
'1,234,567.89'
>>> '{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}'.format(425)
'110101001,Ʃ,425,651,1a9,1A9'
>>> '{:e},{:E},{:f},{:%},{:1f}'.format(3.141)>>> '{0:e},{0:E},{0:f},{0:%},{0:.1f}'.format(3.141)'3.141000e+00,3.141000E+00,3.141000,314.100000%,3.1'
四、time库的使用
1、time库概述
time库是Python中处理时间的标准库
time库包括三类函数:
- 时间获取:time() ctime() gmtime()
- 时间格式化:strftime() strptime()
- 程序计时: sleep() perf_counter()
2、时间获取


>>> import time >>> time.time() 1571133568.9642112 >>> time.ctime() 'Tue Oct 15 17:59:46 2019' >>> time.gmtime() time.struct_time(tm_year=2019, tm_mon=10, tm_mday=15, tm_hour=10, tm_min=0, tm_sec=4, tm_wday=1, tm_yday=288, tm_isdst=0)
3、时间格式化




>>> t = time.gmtime()
>>> time.strftime('%Y-%m-%d %H:%M:%S',t)
'2019-10-15 10:09:31'
>>> timeStr = '2019-10-15 10:09:31'
>>> time.strptime(timeStr,'%Y-%m-%d %H:%M:%S')
time.struct_time(tm_year=2019, tm_mon=10, tm_mday=15, tm_hour=10, tm_min=9, tm_sec=31, tm_wday=1, tm_yday=288, tm_isdst=-1)
4、程序计时
- 程序计时指测量起止动作所经历的时间的过程
- 测量时间:perf_counter()
- 产生时间:sleep()


import time
def wait():
time.sleep(10.1258)
start = time.perf_counter()
wait()
end = time.perf_counter()
print('{:.3f}s'.format(end-start))
五、文本进度条实例
1 #该文件应该在cmd下运行,实现单行刷新文本进度条的效果
2 #TextProBar.py
3 import time
4 scale = 50
5 print('执行开始'.center(scale//2,'-'))
6 start = time.perf_counter()
7 for i in range(scale+1):
8 a = '*' * i
9 b = '.' *(scale-i)
10 c = (i/scale)*100
11 dur = time.perf_counter() - start
12 print('\r{:^3.0f}%[{}->{}]{:.2f}s'.format(c,a,b,dur),end='')13 time.sleep(0.5) 14 print('\n'+'执行结束'.center(scale//2,'-'))