本篇介绍python基本数据类型及操作,以及字符串类型以及基本操作;如下几个模块:
一、数字类型及基本操作;
在python中数字类型不用准确的定义,如何区分有效的几种数字类型呢?
首先分析一下我们常用的数字类型:
- 整数类型;
- 浮点数类型;
- 复数类型;
然后加上我们常用的几种操作符,以及平方函数,下面分开介绍;
整数:
1、在python中整数类型与数学中整数概念一致没有去取值范围限制,而且可正可负;
2、常用函数:计算平方函数使用pow(x,y)即可;
3、对于进制的数据类型使用如下方法表示:
十进制:正常表示即可;
二进制:以0B或者0b开头:0b010、-0B010
八进制:以0O或者0o开头:0O123、0o456
十六进制:以0X或者0x开头:0X9a、0X89
浮点数:
与数学中实数概念一致;带有小数点及小数的数字;
浮点数和小数取值都存在精度限制,常规计算可以忽略;
浮点数和小数取值范围数量级在-10的307次方和10的308次方;精度数量级10的-16次方;
注意:浮点数间计算存在不确定位数;
针对尾数问题python提供了round函数;
用法:round(x,d) 表示对x四舍五入,取d位小数;
浮点数间运算比较一般使用round函数辅助;
不确定位数一般发生在10的-16次方左右,round函数十分有效;
浮点数也可以采用科学计数法表示:
使用字母E或e作为幂的符号,以10为基数格式如下:
<a>e<b> 表示a*10的b次方
例如:4.3e-3值为:0.0043 9.6E5的值为:960000.0
——————————————————————————————————————
复数:
与数学中复数概念一致;
数值运算操作符:
二元操作符对应的增强赋值操作;
数字类型的关系:
类型间可以进行混合运算,生成结果为最宽类型;
三种类型间存在一种渐渐”扩展“或”变宽“的关系;
整数-》浮点数-》复数
常用的函数形式提供的数值运算符:
二、实例:天天向上体验数字类型的魅力;
需求描述:如果A每天努力进步百分之一,B每周工作五天休息两天,休息日下降百分之一,问B工作日需要多努力才能达到和A同样的水平?
问题分析:
代码实现:
#daydaycompleta
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))
三、字符串类型及基本操作;
字符串定义:由零个或多个字符组成的有序字符序列;
表示:字符串是由一对单引号或者双引号表示的字符串;
字符串是字符有序序列,可以对字符串进行索引;
字符串有两类四种表示方法;由一对单双引号表示,或者一对三单引号或三双者引号表示;
字符串可以使用正向递增或者反向递减进行索引和切片操作;
python中字符串的特殊转译符:,转译符表示特定字符的本意;
字符串常见操作:
x + y:表示拼接字符串;
n * x :表示复制n次字符串x;
x in y:表示判断x是否在字符串y中;
字符串处理函数:
字符串相关的方法:
字符串类型的格式化:format()方法的格式控制:
四、time库的基本使用;
time库包含三类函数:
具体如下:
时间格式化:
时间格式化控制符:
程序计时函数:
五、绘制简单的文本进度条;
需求:根据时间函数绘制一个文本进度条;
实现如下:
简单实现
#textprobar1.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("_______执行结束_______")
根据时间进度动态实现如下:
#textprobar2.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("r"+"执行结束".center(scale//2,'-'))