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级别的精准时间,单位为秒,需要连续调用差值才有意义。