文章目录
- 一、数字类型
- 1. 整数类型
- 2. 浮点数类型
- tips:为什么浮点数计算的小数部分经常“错误”?如 为什么0.1+0.2==0.3在计算机中不为真
- 3. 复数形式<class'complex'>
- 4. 数字类型的操作符与部分函数
- tips: 数字类型的类型提升
- tips:Python中除法
- 基本数据类型使用的小实验
- 二、字符串类型
- 1. 字符串序号与基本操作
- 2. 字符串的一些常用格式操作
- tips:Python字符串中每个字符都是Unicode编码字符
- 3. 字符串的一些常用字符处理函数
- 4. 字符串的格式化
- 一些字符串操作的小实验
- 回文数判断
- 模拟一个进度条实现
一、数字类型
表示数字或数值的数据类型称为数字类型。
Python中提供了3种数字类型:
- 整形
- 浮点数
- 复数
1. 整数类型
Python比较特别的一点在于:其可以处理任意大小的(负)整数,没有取值范围限制。
整数的表达按习惯有四种进制
- 十进制(default)
- 16进制(以
0x/0X
作为前缀,如-0X89) - 8进制(以
0o/0O
作为前缀,如0o123) - 2进制(以
0b/0B
作为前缀,如0B101)
2. 浮点数类型
Python中浮点数指数学中带有小数点的数字,“浮”指的是小数点的位置可以浮动。
- 十进制表示:有数字和小数点组成(小数点必须存在)
- 科学计数法表示:以字母e/E表示以10为底的指数,e/E之前为数字部分,之后为指数部分
- 需要强调的是,科学计数法表示时,e/E前面必须有数字,后面必须是整数
- eg:0.000012即1.2e-5;e-5、1.2e、1.2e-5.0的表示都是错误的
- 需要强调的是,科学计数法表示时,e/E前面必须有数字,后面必须是整数
tips:为什么浮点数计算的小数部分经常“错误”?如 为什么0.1+0.2==0.3在计算机中不为真
另外由于二进制表示十进制小数存在无法准确表示的情况,如0.1转化为二进制:(图转自小林coding)
可以看出0.1并不能使用二进制有限的位数进行存储,即其存储在内存中时就已经不是准确的0.1,而是为了存储而设置的一个近似值。同理像0.2等等之类的数存储的都是近似值。
由此,我们也不难理解为什么0.1+0.2在计算机中往往!=0.3
而关于浮点数在计算机中的存储方式,可以详见【计组】数据存储与计算(暂定)
3. 复数形式<class’complex’>
遵从数学中的复数定义 j2(J2)=-1;以a+bj/a+bJ形式的数字被称为复数,a为实部,b为虚部。
取x=a+bj,此时x为复数
- real函数获取复数实部,如x.real ==a
- image函数获取复数虚部,如 x.image==b
4. 数字类型的操作符与部分函数
操作符
运算符 | 作用 |
---|---|
+ | “加法,正号” |
- | “减法,负号” |
* | 乘法 |
/ | 除法 |
// | 求商 |
% | 求余数 |
** | 幂运算 |
+=、-=、*=、/= | 算术赋值 |
//= | 整除赋值 |
%= | 取模赋值 |
**= | 乘方赋值 |
部分运算函数
函数及使用 | 功能 |
---|---|
abs(x) | 绝对值,x的绝对值 abs(-10.01)结果为 10.01 |
divmod(x,y) | 商余,(x//y,x%y),同时输出商和余数 divymod(10,3)结果为(3,1) |
pow(x, y[, z]) | 幂余,(x**y)%z, […]表示参数z可省略 pow(3, pow3,99) 10000)结果为4587 |
round(x[, d]) | 四舍五入,d是保留小数位数,默认值为0 round(-10.123, 2)结果为-10.12 |
max(x1,x2,x3…xn) | 最大值,返回最大值,n不限 |
min(x1,x2,x3…xn) | 最小值,返回最小值,n不限 |
tips: 数字类型的类型提升
当不同数字类型之间可以进行混合运算,运算后生成结果为最宽类型,整数—>浮点数—>复数
如 1+2.5=3.5;2+(4+1j)=6+1j;
当然也可对类型进行显示转换
函数 | 描述 |
---|---|
int(x) | 将x变成整数,舍弃小数部分 int(123.45)结果为123;int(""123"")结果为123 |
float(x) | 将x变成浮点数,增加小数部分 float(12)结果为12.0 |
complex(x) | 将x变成复数,增加虚数部分 complex(4)结果为4+0j |
但是复数不可转换为int和float
tips:Python中除法
与传统的计算方式不同(如c/c++),python中运算符“/”可以在两个作用数都为整数时,结果输出浮点数;而“//”运算符功能则是与c/c++中的“/”效果相同
基本数据类型使用的小实验
计算一个三角形面积
x=eval(input("x="))
y=eval(input("y="))
z=eval(input("z="))
if (x+y>z and x+z>y and z+y>x):
p=(x+z+y)/2
S=(p*(p-x)*(p-y)*(p-z))**(0.5)
print(S)
值得注意的是,input()函数返回的默认为字符串类型,需要转换为数字类型在此处使用。
二、字符串类型
字符串:由0个或多个字符组成的有序字符序列
-
字符串由可以由一对单引号/双引号/三(单双)引号表示
- 其中由单引号或双引号表示的,仅表示单行字符串
- 由一对三单引号或三双引号表示,可表示多行字符串
- 如果希望在字符串中包含双引号或单引号:
' 这里有个双引号(")'
或者“这里有个单引号(')"
- 如果希望在字符串中既包括单引号又包括双引号呢?
'''这里既有单引号(')又有双引号(")'''
-
字符串是字符的有序序列,可以对其中的字符进行索引
如“请”
是“请输入带有符号的温度值:”
的第0个字符
1. 字符串序号与基本操作
python中字符串除了一般的正向序列,还存在反向序号(递减)。
需要注意的是,反向序列从末尾出发(下标为-1)直到字符串串头(下标为-length)
那么该如何利用下标对字符串进行操作呢
- 索引:返回字符串中单个字符
<字符串>[index] - 切片:返回字符串中一段字符子串 <字符串>[head_index:tie_index[: 步长]]
- 头下标和尾下标都是整数型数值,该子序列从索引头下标开始直到索引尾下标结束,但不包括尾下标位置。
- 头下标是可选项,省略时默认为0;
- 尾下标是可选项,省略时默认为字符串长度;
- 步长是可选项,省略时默认为1,步长为2时表示间隔一个位置来截取字符串。
值得一提的是
<字符串>[::-1]的形式可以直接将字符串反向输出(见后文回文数判断)
2. 字符串的一些常用格式操作
-
转义字符
\
:用转义符可以在字符串中表达一些不可直接打印的信息,如- 字符串 "这里有个双引号(
\"
)"的打印结果为这里有个双引号(")
\b
回退\n
换行(光标移动到下行首)\r
回车(光标移动到本行首)- 假如想将其作为普通字符打印出来,可以采用
\\
对转义字符进行转义,或者在字符串前面添加一个r或R,表示原始字符串。
- 字符串 "这里有个双引号(
-
一些功能函数
- len(x):返回字符串x的长度
- str(x):返回任意类型x所对应的字符串形式。如str(1.23)结果为"1.23" str([1,2])结果为"[1,2]"
- hex(x) 或 oct(x)返回整数x的十六进制或八进制小写形式字符串。如hex(425)结果为"Ox1a9" oct(425)结果为"0o651"
- chr(u) :u为Unicode编码,返回其对应的字符
- ord (c):c为字符,返回其对应的Unicode编码
操作符及使用 | 描述 |
---|---|
x+y | 连接两个字符串x和y |
n*str | 复制n次字符串str |
x (not)in s | 如果x(不是)是s的子串,返回True,否则返回False |
tips:Python字符串中每个字符都是Unicode编码字符
3. 字符串的一些常用字符处理函数
-
str.lower():返回字符串的副本,全部字符小写
-
str.upper():返回字符串的副本,全部字符大写
-
str.split(sep=None):返回一个列表,由str根据sep被分隔的部分组成如
"A,B,C".split(",")
结果为['A','B','C']
-
str.count(sub):返回子串sub在str中出现的次数
-
str.replace(old, new):返回字符串str副本,所有old子串被替换为new
-
str.center(widh
[,fillchar]
):字符串: str根据宽度width居中,fllchar可选 ,用于替换其他字符。如"python" .center(10,"=")
结果为"==python=="
-
str.strip(chars):从st中去掉在其左侧和右侧chars中列出的字符 如
"= python= ".strip(" =np")
打印结果为 “ytho” -
str.join(iter):在iter变量中除最后元素外每个元素后增加一个str。如
",".join("12345")
结果为"1,2,3,4,5"
(主要用于字符串分隔等)
4. 字符串的格式化
字符串格式化使用.format()方法,
用法如下: <模板字符串>…format(<逗号分隔的参数>)
- 占位符/槽:
{ }
如果不在槽内加序号
如果在槽内加序号
槽内部对格式化的配置方式(不常用)
一些字符串操作的小实验
回文数判断
判断任意一个数是不是回文数
str=input("请输入数字:")
print(str)
print(str[::-1])
if(str==str[::-1]):
print("是回文数")
else:
print("不是回文数")
模拟一个进度条实现
在这里插入代码片