Python语言程序设计_3

学习过程主要依照中国MOOC课程,感谢MOOC,感谢北理授课大佬。

数字类型及操作

整数类型

-与数学中整数概念一致,可正可负,没有取值范围限制。
-pow(x,y)函数:计算xy,想算多大就算多大。
-4种进制表示形式:

  1. 十进制;
  2. 二进制,以0b或0B开头;
  3. 八进制,以0o或0O开头;
  4. 十六进制,以0x或0X开头;

浮点数类型

-与数学中实数概念一致,带有小数点及小数的数字。
-浮点数间的运算存在不确定尾数,不是bug(原因:计算机二进制表示小数,可以无限接近,但不完全相同)。

1
2
3
4
5
#浮点数运算及比较用round函数辅助
>>>0.1+0.2 == 0.3
False
>>>round(0.1+0.2,1)== 0.3
True

-使用字母e或E作为幂的符号,以10为基数,格式如下:
< a >e< b >表示a*10b

复数类型

-与数学中复数概念一致。
-z.real获得实部;z.imag获得虚部。

数值运算操作符

+、-、、/、 //(整数除) 、%、*(幂运算)
-类型间可进行混合运算,生成结果为“最宽”类型,整数–>浮点数–>复数。

数字运算函数

abs(x)、divmod(x,y)同时输出商和余数、pow(x,y[,z])幂余(x**y)%z、round(x[,d])、max()、min()、int(x)、float(x)

实例:天天向上的力量

1
2
3
4
#DayDayUpQ1.py
dayup = pow(1.001, 365)
daydown = pow(0.999, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
1
2
3
4
5
#DayDayUpQ2.py
dayfactor = 0.005
dayup = pow(1+dayfactor, 365)
daydown = pow(1-dayfactor, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
1
2
3
4
5
6
7
8
9
#DayDayUpQ3.py
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))
1
2
3
4
5
6
7
8
9
10
11
12
13
#DayDayUpQ4.py
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))

字符串类型及操作

字符串类型的表示

-由一对单引号或者双引号表示,仅表示单行字符串。
-由一对三单引号或三双引号表示,可表示多行字符串。
-转义符\,表达特定字符的本意。

字符串操作符

x+y;n*x;x in s

字符串处理函数

len(x)、str(x)、hen(x)或oct(x)转换为十六进制和八进制、chr(u)u为Unicode编码、ord(x)与前一相反

字符串处理方法

“方法”特指< a >.< b >()风格中的函数< b >(),方法本身也是函数,但与< a >有关。
-str.lower()或str.upper():字符串字符全部大写或者小写;
-str.split():返回一个列表,由str根据sep被分割的部分组成;
-str.count(sub):sub在str中出现的次数;
-str.replace(old,new):所有old子串被替换为new;
-str.center(width[,fillchar]):字符串str根据宽度width居中,fillchar可选;
-str.strip(chars):从str中去掉在其左侧和右侧chars中列出的字符;
-str.join(iter):在iter变量除最后元素外每个元素后增加一个str “,”;

字符串类型的格式化

-字符串格式化使用.format()方法,用法为:<模板字符串>.format(<逗号分隔的参数>)
-模板字符串中只用槽{}来占位,与后边format()中参数的顺序一一对应。
-槽内部对格式化的配置方式:{<参数序号>:<格式控制标记>}

:| <填充> | <对齐> | <宽度> | <,> |<.精度> | <类型>
-|-|-
引导符号 | 用于填充的单个字符 | <左对齐 >右对齐 ^居中对齐 | 槽设定的输出宽度 | 数字的千位分隔符 | 浮点数小数精度 或 字符串最大输出长度 | 整数类型 b、c、d、o、x、X 浮点数类型e、E、f、%

模块2:time库的使用

time库基本情况

-python中处理时间的标准库。

1
2
import time
time.<b>()

-time库包含三类函数:

  1. 时间获取:time()、ctime()、gmtime()
  2. 时间格式化:strtime()、strptime()
  3. 程序计时:sleep()、perf_counter()

时间获取

-time():获取当前时间戳,及计算机内部时间值,浮点数;
-ctime():获取当前时间并以易读方式表示,字符串;
-gmtime():获取当前时间,表示为计算机可处理的时间格式;

时间格式化

将时间以合理的方式展示出来。
-strtime(tpl,ts):tpl是格式化模板字符串,用来定义输出效果;ts是计算机内部时间类型变量;
-strptime(str,tpl):与上互补,将时间字符串处理成计算机内部可操作的;

程序计时应用

-sleep(s):s是休眠时间,单位为秒,可以是浮点数;
-perf_counter():返回一个CPU级别的精确时间计数值,单位为秒,由于这个计数值起点不确定,连续调用计算差值才有意义;

实例:文本进度条

1
2
3
4
5
6
7
8
9
10
11
#TextProBarV1.py简单的开始
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("------执行结束------")
1
2
3
4
5
#TextProBarV2.py单行动态刷新
import time
for i in range(101):
print("\r{:3}%".format(i), end="")
time.sleep(0.1)
1
2
3
4
5
6
7
8
9
10
11
12
13
#TextProBarV3.py完整实例
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,'-'))

以上。

:转载文章请注明出处,谢谢~