Python基础学习笔记(二)基本数据类型
- 数字类型
- 基本类型
- 数字运算
- 示例
- 字符串类型
- 字符串类型表示
- 字符串处理操作
- 字符串类型格式化
- 示例
- 附-Time库
数字类型
基本类型
1、整数类型:可正可负,没有取值范围限制。有四种表现形式,十进制、二进制(0b/0B)、八进制(0o/0O)、十六进制(0x/0X)。
2、浮点数类型:有小数和小数的数字,取值范围存在范围。浮点数类型间的运算存在不确定尾数,原因是二进制表示小数是无限接近小数而不是等于小数。
0.1+0.2 == 0.3
#输出False
round(0.1+0.2,1)==0.3
#输出True
round(x,d)#对x四舍五入,d是小数截取位数
3、复数类型:a+bj,a为实部,b为虚部。空间变换中常用。
z = 1.23+96j
a=z.real()
b=z.imag()
数字运算
1、数字运算操作符
不同的数据类型进行运算结果是“最宽”的类型:整数<浮点数<复数
操作符 | 描述 |
x+y | 加,求和 |
x-y | 减,求差 |
x*y | 乘,求积 |
x/y | 除,求商 10/3=3.33333333335 |
x//y | 整数除,10//3=3 |
x%y | 求余数,模运算,10%3=1 |
x**y | 幂运算,x^y,y为小数时是开方 |
增强运算 | x+=y x-=y x*=y x/=y x//=y x%=y x**=y |
2、数字运算函数
函数 | 描述 |
abs(x) | 求x的绝对值 |
divmod(x,y) | 同时求出x/y的商和余数 |
pow(x,y[,z]) | 幂余操作,z可选,设置z则求x的y次幂除以z的余数 |
round(x[,d]) | 对x四舍五入,d可选,默认取整 |
max(x1,x2) | 求最大值 |
mim(x1,x2) | 求最小值 |
int(x) | 将x变为整数,舍去小数部分 |
float(x) | 将x变为浮点数,增加小数部分 |
complex(x) | 将x变为复数,增加虚部 |
示例
#每天进步千分之一,一年进步多少?
#每天退步千分之一,一年还剩多少?
dayup=pow(1.001,365)
daydown=pow(0.999,365)
print("dayup:{:.2f}, daydown:{:.2f}".format(dayup,daydown))
#结果是:dayup:1.44, daydown:0.69
#如果是千分之五,百分之一?
dayfactor=0.005 #可修改
dayup=pow(1+dayfactor, 365)
daydown=pow(1-dayfactor, 365)
#如果是工作日进步1%,休息日退步1%?
dayup = 1.0
dayfactor = 0.01
for i in range(365):
if 1%7 in [6,0]:
dayup = dayup*(1-dayfactor)
else:
dayup = dayup*(1+dayfactor)
#工作日要努力到什么程度才能与每天努力1%相同
def dayUP(df):
dayuo = 1
for i in range(365):
if 1%7 in [6,0]:
dayup = dayup*(1-0.01)
else:
dayup = dayup*(1+df)
return dayup
dayfactor = 0.01
while dayUP(dayfactor) < pow(1.01, 365)
dayfactor += 0.001
字符串类型
字符串类型表示
0个或者多个字符组成的有序序列,可以对其中的字符进行索引。
1、表示:
- 单引号或者双引号:单行字符串
- 三引号:多行字符串
如果希望字符串本身有单引号/双引号,那么两侧应该使用双引号/单引号来表示字符串。
2、截取
- 正向递增序号:从左到右,从0开始
- 反向递减序号:从右到左,从-1开始
索引:<字符串>[m]
切片:<字符串>[m:n:k]:m表示开始位置,缺失则默认至开头;n表示结束位置缺失则默认至结尾,但是不包括n;k表示步长。
3、转义符
用于表达字符的本意。
字符 | 意义 |
\b | 回退 |
\n | 换行(光标移动带下行首) |
\r | 回车(光标移动到本行首) |
字符串处理操作
1、操作符
操作符 | 描述 |
x+y | 连接两个字符串 |
xn nx | n为整数,表示复制n次字符串x |
x in s | 如果x是s的子串,返回True,否则返回False |
2、字符串处理函数
函数 | 描述 |
len(x) | 返回字符串x的长度 |
str(x) | 将任意类型的变量x转换为对应的字符串形式 |
hex(x) oct(x) | 将整数x的十六进制或者八进制小写形成字符串 |
chr(u) | 将Unicode编码返回其对应字符串形式 |
ord(x) | 将字符串x返回其Unicode编码 |
3、处理方法
方法使用 | 描述 |
str.lower() str.upper() | 返回字符串的全小写/大写 |
str.split(sep=None) | 返回列表,由str根据sep分割而成 |
str.count(sub) | 返回sub在str中出现的次数 |
str.replace(old,new) | 将字符串中的old替换为new |
str.center(wedth[,fillchar]) | 字符串根据宽度width居中,fillchar可选 |
str.strip(chars) | 将字符串左右两侧chars中的字符去掉 |
str.join(iter) | 在iter变量除最后元素外的每个元素后都添加一个str |
字符串类型格式化
<模板字符串>.format(<逗号分割的参数>),注意设置宽度时,如果字符串本身长度超过宽度则按照字符串本身长度输出。
print("{}:计算机{}的CPU的占用率为{}%".format("2021.5.11","A",10))
print("{1}:计算机{0}的CPU的占用率为{2}%".format("A","2021.5.11",10))
#控制格式:
"{:<>}"#填充
"{:<}"#左对齐
"{:>}"#右对齐
"{:^}"#居中对齐
"{:<d>}"#宽度
"{0:=^20}".format("python")
#输出字符串宽度为20,居中python,其他空余用=填充
"{:<,>}"#千位分隔符
"{:.d}"#精度或者字符串输出最大长度
"{:<leixing>}"#整数:bcdoxX 浮点数:eEf%
"{0:,.2f}".format(12345.6789)
#输出12,345.68
示例
#文本进度条:
#采用字符串方式打印可以动态变化的文本进度条
#进度条需要能在一行中逐渐变化
#简单框架
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("------执行结束------")
#单行动态刷新(后打印的字符覆盖之前的字符)\r
import time
for i in range(101)
print("\r{:3}%".format(i), end="")
#\r控制光标退回当前行首,end=""控制print()函数输出后不换行。end=输出后在结尾增加信息。
time.sleep(0.1)
#完整效果的文本进度条
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}".format(c,a,b,dur), end="")
print("\n"+"执行结束".center(scale//2, '-'))
附-Time库
处理时间的标准库,表达计算机时间,提取系统的时间,进行精确计时。
1、 获取时间
- time():获取计算机内部时间值(浮点数)
- ctime():获取可读的当前时间(字符串)
- gmtime():获取当前时间,计算机可以读取操作的格式
2、时间格式化:
- strftime(tpl, ts):tpl是格式化模板字符串,定义输出效果;ts是计算机内部时间类型变量。
符号 | 意义 |
%Y | 年份 |
%m | 月份(数字) |
%B、%b | 月份(英文、英文缩写) |
%d | 日期(数字) |
%A、%a | 星期(英文、英文缩写) |
%H、%h | 时(24、12) |
%p | 上午或者下午标识符 |
%M | 分钟 |
%S | 秒 |
- strptime(str,tpl):将字符串变成时间,str字符串形式的时间,tpl格式化模板字符串。
3、程序计时:
- sleep(s):s是休眠的时间,单位为秒,可以是浮点数。
- perf_counter():测量时间,返回一个CUP级别的精准时间,单位为秒,需要连续调用差值才有意义。