基本数据类型和变量
基本数据类型和变量
Pupper基本数据类型和变量
1. 数值类型
1.1 整数(int)
- 整数跟我们平常认识的整数一样,包括正整数、负整数和零,是没有小数点的数字
- Python 可以处理任意大小的整数,例如:1,100,-8080,0,等等
1 | print(1 + 2) # 3 |
1.2 浮点型(float)
print(2/6)
: 小数点后默认只保留 16 位小数0.3333333333333333
- 使用
round()
函数可以指定输出有效位数(四舍五入)print(round(2/6,3))
—->0.333
1 | print(0.55+0.41) # 0.96 |
因为计算机对浮点数的表达本身是 不精确
的。
保存在计算机中的是二进制数,二进制对有些数字不能准确表达,只能非常接近这个数。
所以我们在对浮点数做运算和比较大小的时候要小心
1.3 算术运算符
运算符 | 描述 | 案例 |
---|---|---|
+ | 加法 | print(2+3) 结果为5 |
- | 减法 | print(2-3) 结果为-1 |
* | 乘法 | print(2*3) 结果为6 |
/ | 除法 | print(2/3) 结果为0.6666666666666666 |
// | 取商 | print(2//3) 结果为0 |
% | 取余 | print(2%3) 结果为2 |
** | 次方 | print(2**3) 结果为8 |
1.4 布尔类型
一个布尔值只有 True 、 False 两种值,可以直接用(请注意大小写),也可以通过布尔运算计算出来。
布尔值可以用 and、or 和 not 运算。
and(与)
运算, True and True 结果就是 True。or(或)
运算, True or False 结果就是 True。not(非)
运算, not True 结果就是 False。
- 布尔对象只有两种取值: True 和 False
- 布尔类型 True 真,也可以用 1 表示 False 假 也可以用 0 表示
- 字母之间的比较,是根据 ASCII 码 来比较的,
a=97
,A=65
1.5 空值
基本上每种编程语言都有自己的特殊值——空值,在 Python 中,用 None
来表示
2. 字符串
凡是被引号(单引号:'***'
,双引号:"***"
,三引号:'''***'''
或"""***"""
)引起来的数据都叫字符串。
当字符串中本身有双引号时,为了避免出现语法错误,可以用单引号拉长表示这个字符串, 如: print('He said:"Hello!"')
转义符 \n
是换行符的意思,\t
是制表符的意思
如果想让换行符或者其他有特殊含义的符号不生效,则可以在\
之前再加上一个\
,或者在字符串最前边加上r
1 | print('c:\\totel.txt') |
在 python 中,写路径时可以使用/
来代替\
2.1 三引号的作用
- 三引号可以保留字符串的格式,包括换行符和空格等
1
2
3print('''曾经沧海难为水,
除却巫山不是云。
''') - 三引号不予关键字连接时,则表示为注释,一般用在函数及方法里。
1
2
3
4'''
曾经沧海难为水,
除却巫山不是云。
'''
2.2 字符串拼接
字符串的拼接为直接拼接,不进行任何运算, print('1'+'5')
—-> 15
字符串拼接时有*
加 int 数字,则表示将字符串重复拼接 int 遍。
1 | print("a" *3) |
2.3 下标
字符串的下标由左往右为0
开始,右右往左为从-1
开始。
1 | a = '刘总你好啊' |
2.4 切片
字符串通过下标,得到字符串中特定的内容就叫切片
切片的完整写法,是[起始值:终止值:步长]
,步长是每几位取一次值,当步长省略时,默认为 1
- 切片的区间为 左闭右开
- 字符串切片前面的索引是切片开始的元素的 索引,后面的索引是切片结束的元素的 索引 + 1
通过切片,切出 你好 的字符串。
1 | print(a[2:4]) |
通过切片,切出 你好啊 的字符串
1 | print(a[2:]) |
如果 后面的索引 空着不写,表示到整个字符串的结束,如果 前面的索引 不写,可以表示 从字符串的开头切片。
使用切片可以将字符串 倒序 输出
1 | a = 'ABCDEFGHIJKLMN' |
2.5 获取字符串长度
内置函数 len()
可以用来获取字符串的长度,也是获取字符串中字符的个数.
1 | a = 'abcdefghijklmn' |
2.6 获取字符下标
内置函数intdex()
可以根据字符找到在字符串中的下标,默认返回第一次出现时的下标。
1 | a = 'dsaldfjlsakdfjaldsjfx' |
2.7 字符串格式化
2.7.1 %
格式化
%s
:表示 字符串%d
:表示 十进制 整数%f
:表示 浮点数
1 | info='我叫%s,今年是%d年,还有%f元'%('刘德华', 2020, 19.8) |
- 可以使用
%09d
对不足部分进行补位,默认为 0 。 - 0 :代表 要补位的符号,如果不写,默认为 空格 。
- 9 :代表 输出的 位数,不写则不会进行补位。
1 | print('税前薪资:%09d元'%(19)) # 税前薪资:000000019元 |
如果为小数时,可以使用 .2
表示需要 保留的小数位 。
1 | print('税前薪资:%012.2f元'%(19.8864)) # 税前薪资:000000019.89元 |
使用 %
作为格式化符号时,输出结果默认为 右对齐,如果希望 左对齐 则需要使用补位符改为 -
1 | print('税前薪资:%-12.2f元'%(19.8864)) # 税前薪资:19.89元 |
2.7.2 format
格式化
基本格式:字符串.format(参数,参数,…)
字符串中使用 {}
作为占位符,占位符内填写 format 中的元素 下标(下标从 0 开始)
1 | s = "PYTHON" |
通过 字典 的形式进行赋值
1 | print("{HELLO}".format(HELLO= '你好')) # 你好 |
可以对每个 参数 单独设置格式。
格式:{<参数序号>: <格式控制标记>}
: | 填充 | 对齐 | 宽度 | , | .精度 | 类别 |
---|---|---|---|---|---|---|
补位填充符号 | < 左对齐 > 右对齐 ^ 居中对齐 | 输出的宽度 | 数字千位分隔符 | 小数的精度或字符串最大长度 | 整数类别 |
1 | print("{HELLO:-^30,.3f}".format(HELLO= 12312345.67890)) |
2.7.3 f
格式化
f
格式化和 format
格式化 参数相同。
1 | int1 = 12312345.67890 |
三组大括号嵌套,可以让格式化输出中有 大括号
2.8 字符串的方法
2.8.1 统计count
count
方法:可以返回字符串对象包含了多少个 参数指定的 字符串。
第二个参数为开始位置,第三个参数为结束位置。
1 | str1 = '我们今天不去上学,我们去踢足球' |
2.8.2 查找find
find
方法:会在字符串中查找 参数 字符串,并返回该 参数字符串 在其中 第一个
出现的位置索引。
如果字符串对象中 没有
要查找的参数字符串,就会返回 -1
。
第二个参数为开始位置,第三个参数为结束位置。
1 | str1 = '我们今天不去上学,我们去踢足球' |
2.8.3 分割split
、splitlines
split
方法:以参数字符串为 分隔符,将字符串 切割为多个 字符串,并返回列表,分隔符本身会被丢弃掉。
1 | str1 = '小张:79 | 小李:88 | 小赵:83' |
splitlines
方法:将字符串按 换行符 进行切割,为元素存入一个 列表 并返回这个列表。
1 | str1 = ''' |
splitlines
方法经常用在文件处理中,读出文件内容存入字符串,然后把每行内容依次存入列表。
2.8.4 拼接join
join
方法和 split
方法正好相反json
方法:将列表中的字符串元素 以某个字符串为连接符,拼接 为一个新的字符串
1 | list1 = [ |
2.8.5 去除空格strip、lstrip、rstrip
strip
方法:删除字符串 前后 的空格。lstrip
方法:删除字符串 前面(左边)的空格。rstrip
方法:删除字符串 后面(右边)的空格。
1 | str1 = ' 你好 ! ' |
2.8.6 替换replace
replace
方法:用来 替换 字符串中所有 指定的 字符。
1 | str1 = ' 你好 ! ' |
2.8.7 startswith
、endswith
startswith
方法:检查字符串是否以指定的字符串 开头,如果是,则返回 True, 否则返回 False。endswith
方法:检查字符串是否以指定的字符串 结尾, 如果是,则返回 True,否则返回 False。
1 | str1 = '我们今天不去上学,我们去踢足球' |
2.8.8 isdigit
、isalpha
isdigit
方法:检查字符串是否全部由 数字 构成,如果是,返回 True,否则返回 False。isalpha
方法:检查字符串是否全部由 字母 构成,如果是,返回 True,否则返回 False。
1 | print('123'.isdigit()) # True |
2.8.9 字符串倒序
通过 切片 [::-1]
操作可以将字符串 倒序 排列。
1 | str1 = '字符串的倒序' |
3. 变量
3.1 命名规则
- 组成:字母、数字、下划线
- 一般以字母(大写、小写均可)开头
- 大小写敏感
- 不能与关键字相同
if=1
- 不能与内置函数相同
print=1
- 不能以数字开头
- 不能以中文命名
3.2 变量指向问题
1 | a = 'Hello World' |
变量指向说明:
- a —-> Hello World
- b —-> a —-> Hello World
- a —-> 123
- b —-> Hello World
3.3 赋值
python 中变量的类型由所赋值的数据类型决定。
- 任何变量赋值都不会改变变量原来指向对象的值;
- 如果原来的对象有其他变量指向他,也不会改变其他变量的指向
1 | a = 3 ---> a = 3 |
操作
1 | a += 1 // a = a + 1 |
4. 可变与不可变数据类型
可变与不可变数据类型的区别:
- 可变数据类型: 当变量对应的数据值发生变化时,对应的 内存地址
不变
.- 数值类型(int、float、bool)、string(字符串)、tuple(元组)
- 不可变数据类型: 当变量对应的数据值发生变化时, 对应的 内存地址 发生
变化
.- 列表(list)、字典(dict)、集合(set)
可变数据类型更改值后,内存地址不发生改变;不可变数据类型更改值后,内存地址发生改变
1 | # 不可变数据类型 |
5. 基本数据类型转换
方法 | 说明 |
---|---|
int(x [,base ]) | 将 x 转换为一个整数 |
float(x ) | 将 x 转换到一个浮点数 |
complex(real [,imag ]) | 创建一个复数 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效 Python 表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个字符 |
unichr(x ) | 将一个整数转换为 Unicode 字符 |
ord(x ) | 将一个字符转换为它的整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |