第三章:基本数据类型

一、数字类型及操作

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,'-'))
posted @ 2019-10-15 18:46  wps168  阅读(343)  评论(0编辑  收藏  举报