Variate(变量)
变量
Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会背创建。
在Python中,变量就是变量,它没有类型,之所以说的“类型”是所指的内存中对象的类型。
Python3中有六个标准的数据类型:
- number (数字)
- string(字符串)
- list(列表)
- tuple(元组)
- sets(集合)
- dictionary(字典)
number(数字)
数字分为:int(整型)、float(浮点型)、bool(布尔型)、complex(复数)
内置的 type() 函数可以用来查询变量所指的对象类型。
注意:
- Python可以同时为多个变量赋值,如a,b = 1,2 。
- 一个变量可以通过赋值指向不同类型的对象。
- 数值的除法(/)总是返回一个浮点数,要获取整数使用 // 操作符。
- 在混合计算时,Python会把整型转换成为浮点数。
string(字符串)
Python中的字符串 str 用单引号(' ')或双引号(" ")括起来,同时使用反斜杠(\) 转义特殊字符;也可单双引号同时用。
>>> s = 'Yes,he doesn\'t'
>>> print(s, type(s), len(s))
Yes,he doesn't <class 'str'> 14
或者
>>> a = "Yes,he doesn't "
>>> print(a, type(a), len(a))
Yes,he doesn't <class 'str'> 15
如果不想反斜杠发生转义,可以在字符串前添加一个 r ,表示原始字符串:
>>> print("C:\some\name")
C:\some
ame
# 这里 \n 是换行的意思
>>> print(r"C:\some\name")
C:\some\name
另外,反斜杠可以作为续行符,表示下一行是上一行的延续,还可以使用 """..."""或者 '''...''' 跨越多行。
字符串可以使用 + 运算符连接在一起,或者用 * 运算符重复:
>>> print("str" + "ing", my * 3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyboardInterrupt
# 注意对字符串 "my" 也要加引号,不然程序会报错!
>>> print("str" + "ing", "my" * 3)
string mymymy
Python中的字符串有两种索引方式,第一种是从左往右,从0开始依次增加;第二种是从右往左,从-1开始依次减少。注意,没有单独的字符类型,一个字符就是长度为1的字符串。
>>> word = 'Python'
>>> print(word[0], word[5])
P n
>>> print(word[-1], word[-6])
n P
还可以对字符串进行切片,获取一段子段。用冒号分隔两个索引,形式为变量[头下标:尾下标]。
截取的范围是前闭后开的 ,并且两个索引都可以省略:
>>> word = 'Ilovepython'
>>> word[1:5]
'love'
>>> word[:]
'Ilovepython'
>>> word[5:]
'python'
>>> word[-10:-6]
'love'
Python字符串不能被改变。向一个索引位置赋值,比如 word[0] = 'm' 会导致错误。
注意:
- 反斜杠可以用来转义,使用 r 可以让反斜杠不发生转义。
- 字符串可以用 + 运算符连接在一起,用 * 运算符重复。
- Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
- Python中的字符串不能改变。
list(列表)
list (列)是Python中使用最频繁的数据类型。
列表是写在方括号之间,用逗号分隔开的元素列表。列表中元素的数据类型可以不相同:
>>> a = ['hiim', 88, 9.8, 'her']
>>> print(a)
['hiim', 88, 9.8, 'her']
和字符串一样,列表同样可以被索引和切片,列表被切片后返回一个包含所需元素的新列表。详细另讲。
列表还支持串联操作,使用 + 操作符:
>>> a = [1, 2, 3, 4, 5]
>>> a + [6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
与Python字符串不一样的是,列表中的元素是可以改变的:
>>> a = [1, 2, 3, 4, 5]
>>> a + [6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
>>> a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = [] # 删除
>>> a
[9, 2, 6]
list 内置有很多方法,列入append()、pop(),见详解!
注意:
- list 写在方括号之间,元素用逗号隔开。
- 和字符串一样,list 可以被索引和切片。
- list 可以使用 + 操作符进行拼接。
- list 中的元素是可以改变的。
元组
tuple(元组)与列表类似,不同之处在与元素不能修改。元组写在小括号里,元素之间用逗号隔开。元组中的类型也可以不相同:
>> a = (1991, 2019, 'pythsics', 'math')
>> print(a, type(a), len(a))
(1991, 2019, 'pythsics', 'math') <class 'tuple'> 4
元组与字符串类似,可以被索引且下标索引从0开始,也可以进行截取/切片。其实,可以把字符串看做一种特殊的元组。
>> tup = (1, 2, 3, 4, 5, 6)
>> print(tup[0], tup[1:5])
1 (2, 3, 4, 5)
>>> tup[0]
>>># 上一行代码修改元组元素的操作是非法的
1
虽然tuple的元素不可变,但它可以包含可变的对象,比如list列表。
构造包含0个或1个元素的tuple是个特殊的问题,所以有些额外的语法规则:
>>tup1 = () # 空元组
>>tup2 = (20) # 不是元组,相当于tup2 = 20,给tup2赋值20
>>tup2 = (20,) # 表示元组,单个元素时,需要在元素后加个逗号 ,
另外,元组也支持用 + 操作符:
>>tup1, tup2 = (1, 2, 3), (4, 5, 6)
>>print(tup1 + tup2)
(1, 2, 3, 4, 5, 6)
string、list和tuple都属于sequence(序列)。
注意:
- 与字符串一样,元组的元素不能修改。
- 元组也可以被索引和切片,方法都一样。
- 注意构造包含0或1个元素的元组的特殊语法规则。
- 元组也可以使用 + 操作符进行拼接。
sets(集合)
set(集合)是一个无序不重复的元素集。
基本功能是进行成员关系测试和消除重复元素。
可以使用大括号或 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 {} ,因为 {} 是用来创建一个空字典。
>> student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
>> print(student) # 重复的元素被自动去掉
{'Jim', 'Jack', 'Mary', 'Tom', 'Rose'}
>> 'Rose' in student # membership testing(成员测试)
True
>> # set可以进行集合运算
...
>> a = set('abracadabra')
>> b = set('alacazam')
>> a
{'a', 'b', 'c', 'd', 'r'}
>> a - b # a 和 b 的差集
{'b', 'd', 'r'}
>> a | b # a 和 b 的并集
{'l', 'm', 'a', 'b', 'c', 'd', 'z', 'r'}
>> a & b # a 和 b 的交集
{'a', 'c'}
>> a ^ b # a 和 b 中不同时存在的元素
{'l', 'm', 'b', 'd', 'z', 'r'}
dictionary 字典
dictionary 字典是Python中另一个非常有用的内置数据类型。
字典是一种映射类型(mapping type),它是一个无序的键:值对集合。
关键字必须使用不可变类型,也就是说list和包含可变类型的tuple不能做关键字。
在同一个字典中,关键字还必须互不相同。
>> dic = {} # 创建空字典
>> tel = {'Jack':1557, 'Tom':1320, 'Rose':1886}
>> tel
{'Jack': 1557, 'Tom': 1320, 'Rose': 1886}
>> tel['Jack'] # 主要的操作:通过key查询
1557
>>> del tel['Rose'] # 删除一个键值对
>>> tel['Mary'] = 4127 # 添加一个键值对
>>> tel
{'Jack': 1557, 'Tom': 1320, 'Mary': 4127}
>>> list(tel.keys()) # 返回所有key组成的list
['Jack', 'Tom', 'Mary']
>>> sorted(tel.keys()) # 按key排序
['Jack', 'Mary', 'Tom']
>>> 'Tom' in tel # 成员测试
True
>>> 'Mary' not in tel # 成员测试
False
构造函数 dict() 直接从键值对sequence中构建字典,当然也可进行推导,如下:
>>> dict([('sape', 4139), ('guido', 4127), ('jack',4098)])
{'sape': 4139, 'guido': 4127, 'jack': 4098}
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
>>> dict(sape=4139, guido=4127,jack=4098)
{'sape': 4139, 'guido': 4127, 'jack': 4098}
另外,字典类型也有一些内置函数,如 clear()、keys()、walues()等。
要避免 key 不存在的错误,有两种办法,一是通过 in 判断 key 是否存在:
> d = {'Michael':95,'Bob':78,'Tracy':100}
>>> 'Tomas' in d
False
二是通过dict提供的 get() 方法,如果 key 不存在,可以返回 None ,或者自己指定的value :
>>> d = {'Michael':95,'Bob':78,'Tracy':100}
>>> d.get('Tomas')
>>> # 返回一个空值时Python 在交互式环境中不显示结果
>>> d.get('Tomad', -1)
-1
要删除一个 key ,用 pop(key) 方法,对应的 value 也会从 dict 中删除:
>> d = {'Michael':95,'Bob':78,'Tracy':100}
>> d.pop('Bob')
78
>> d
{'Michael': 95, 'Tracy': 100}
通过key 计算位置的算法称为哈希算法(Hash)
注意:
- 字典是一种映射类型,它的元素是键值对。
- 字典的关键字必须为不可变类型,且不能重复。
- 创建空典使用{}。
1、变量的使用
使用交互式方式,如果要查看变量内容,直接输入变量名即可,不需要使用print函数。
使用解释器执行,如果要输出变量的内容,必须要使用print函数。
1)变量的演练1
# 定义 qq_number 的变量用来保存 qq 号码
>>qq_number = "1234567"
# 输出 qq_number 中保存的内容
>>qq_number
'1234567'
# 定义 qq_password 的变量用来保存 qq 密码
>>qq_password = "123"
# 输出 qq_password 中保存的内容
>>qq_password
'123'
使用交互式方式,如果要查看变量内容,直接输入变量名即可,不需要使用print函数。
2)变量演练2--PyCharm
# 定义 qq 号码变量
qq_nujmber = "1234567"
# 定义qq密码变量
qq_password = "123"
# 在程序中,如果要输出变量的内容,需要使用print函数
print(qq_number)
print(qq_paddword)
# 这时控制台就会输出结果
1234567
123
变量名只有在第一次出现才是定义变量。
变量名再次出现,不是定义变量,而是直接使用之前定义过的变量。
在程序开发中,可以修改之前定义变量中保存的值吗?
可以!
变量中存储的值,就是可以变的。
# 定义苹果价格变量
price = 8.5
# 定义购买重量
weight = 7.5
# 计算金额
money = price * weight
# 只要购买就返5元
money = money - 5
# --------------------不算定义变量
print(money)
2、变量的类型
- 在python中定义变量是不需要知道类型(其他很多高级语言中都需要)
- 数据类型可分为数字型和非数字型
- 数字型
整形 (int)
浮点型 (float)
布尔型 (bool)
- 真 True --非 0(零) 即真
- 假False
复数型 (complex)
-主要用于科学计算,例如:平面场问题、波动问题、电容电感等问题
- 非数字型
字符串
列表
元组
字典
提示:在python2.0中, 整数根据保存数值的长度还分为:
- int (整数)
-long (长整数)
使用 type 函数可以查看一个变量的类型
1)变量的名称
2)变量保存的数据
3)变量存储数据的类型
4)变量的地址(标示)
image.png
image.png
type() 函数在交互式环境下查看变量的类型:
image.png
3、不同变量之间的计算:
1) 数字型变量之间可以直接计算
- 在python中,两个数字型变量是可以直接进行算数运算的
- 如果变量是 bool 型,在计算时
True 对应的数字是1
False 对应的数字0
演练步骤:
# 定义整数 i = 10
>>i = 10
# 定义浮点数 f =10.5
>>f = 10.5
# 定义布尔型 b = True
>>i + f
20.5
>>i + b
11
>>f + b
11.5
2)字符串变量之间使用 + 拼接字符串
- 在python中,字符串之间可以使用 + 拼接生成新的字符串
>>first_name = "三"
>>tast_name = "张"
>>firsr_name + tast_name
'三张'
3) 字符串变量可以和整数 * 使用重复凭借相同的字符串
>>"-"*20
'-------------------------'
4) 数字型变量 和 字符串 之间不能进行其他计算

4、变量的输入
所谓 输入,就是用代码获取用户通过键盘输入的信息
例如:去银行取钱,在ATM上输入密码
在Python中,如果要获取用户在键盘上的输入信息,需要使用input函数
1)关于函数
一个提前准备好的功能(别人或者自己写的代码),可以直接使用,而不用关心内部细节input() 函数
- 在Python中可以使用 input() 从键盘等待用户的输入
- 用户输入的任何内容Python都认为是一个字符串
语法如下:
字符串变量 = input(“提示信息:”)
image.png
5、类型转换函数
函数 | 说明 |
---|---|
int(x) | 将x转换为一个整型 |
float(x) | 将x转换为一个浮点型 |

字符串之间要么做加法,要么字符串接数字做对指定的字符串重复拼接,两个字符串之间是不能做乘法操作的。所以上述的程序要把两个字符串进行类型转化的,重新定义两个变量,然后进行类型转换:

进行改进:

定义一个浮点变量 接收用户输入的同时,就使用float函数进行转换
price = float(“input(“请输入价格:”)”)
改进后的好处:
1、节约空间,只需为一个变量分配空间
2、起名字方便,不需要为中间变量起名字
6、变量的格式化输
格式化字符串后面的小括号'()' 本质上就是就是元组!
格式符为真实值预留位置,并控制显示的格式。格式符可以包含有一个类型码,用以控制显示的类型,如下:
格式化字符 | 含义 |
---|---|
%s | 字符串 (采用str()的显示) |
%r | 字符串(采用repr()的显示) |
%d | 整数,%06d表示输出的整数不够6位,前面用0补全,超过6位该是多少是多少 |
%f | 浮点数,%.2f表示输出的小数只显示2位 |
%F | 浮点数,与上相同 |
%% | 输出% |
%c | 单个字符 |
%b | 二进制整数 |
%i | 十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数 |
%e | 指数 (基底写为e) |
%E | 指数 (基底写为E) |
%g | 指数(e)或浮点数 (根据显示长度) |
%G | 指数(E)或浮点数 (根据显示长度) |
语法如下:
print(“格式化字符串” % 变量) =====> 一个变量时
print(“格式化字符串” % (变量1,变量2,变量3...)) =====> 多个变量时,将所有变量括起来,中间用逗号隔开
7、变量的命名
标识符和关键字
1)标识符
标识符就是程序员定义的变量名、函数名
名字需要有见名知意的效果
- 标识符可以由字母、下划线和数字组成
- 不能以数字开头
- 不能与关键字重名
2)关键字
- 关键字就是在Python内部已经使用的标识符
- 关键字具有特殊的功能和含义
- 开发者不允许定义和关键字相同的名字的标识符
可以通过以下命令在交互式环境中查看Python中的关键字:
import keyword
Print(keyword.lwlist)

- import 关键字可以导入一个“工具包”
- 在Python中不同的工具包,提供有不同的工具
8、变量的命名规则
命名规则 可以备被视为一种惯例,并无绝对与强制
目的是为了 增加代码的识别和可读性
注意 python 中的 标识符是区分大小写的
命名规范:
全局变量 用全大写
定义类 用大驼峰
一般变量 用小写字母加下划线再加小写字母,例如:temp_str

- 在定义变量时,为了保证代码格式, = 的左右应该各保留一个空格
- python中,如果 变量名 需要由 二个 或 多个单词组成时,可以按照以下方式命名
a. 每个单词都使用小写字母
b. 单词语单词之间使用 _ 下划线 连接
c. 例如:first_name、last_name、qq_number、qq_password
驼峰命名法- 当 ** 变量名** 是由二个或多个单词组成时,还可以李勇驼峰命名法来命名
- 小驼峰式命名法
。第一个单词以小写字母开始,后续单词的首字母大写
例如:firstName、lastName
- 大驼峰式命名法
。每一个单词的首字母都采用大写字母
。 例如:FirstName、LastName
image.png
- 当 ** 变量名** 是由二个或多个单词组成时,还可以李勇驼峰命名法来命名