Variate(变量)

2018-12-23  本文已影响0人  HuiningBinla

变量

Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会背创建。

在Python中,变量就是变量,它没有类型,之所以说的“类型”是所指的内存中对象的类型。
Python3中有六个标准的数据类型:

number(数字)

数字分为:int(整型)、float(浮点型)、bool(布尔型)、complex(复数)
内置的 type() 函数可以用来查询变量所指的对象类型。

注意:

  1. Python可以同时为多个变量赋值,如a,b = 1,2 。
  2. 一个变量可以通过赋值指向不同类型的对象。
  3. 数值的除法(/)总是返回一个浮点数,要获取整数使用 // 操作符。
  4. 在混合计算时,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(),见详解!

注意:

  1. list 写在方括号之间,元素用逗号隔开。
  2. 和字符串一样,list 可以被索引和切片。
  3. list 可以使用 + 操作符进行拼接。
  4. 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(序列)。

注意:

  1. 与字符串一样,元组的元素不能修改。
  2. 元组也可以被索引和切片,方法都一样。
  3. 注意构造包含0或1个元素的元组的特殊语法规则。
  4. 元组也可以使用 + 操作符进行拼接。

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. 字典是一种映射类型,它的元素是键值对。
  2. 字典的关键字必须为不可变类型,且不能重复。
  3. 创建空典使用{}。

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) 数字型变量之间可以直接计算

# 定义整数 i = 10
>>i = 10
# 定义浮点数 f =10.5
>>f = 10.5
# 定义布尔型 b = True
>>i + f
20.5
>>i + b
11
>>f + b
11.5

2)字符串变量之间使用 + 拼接字符串

>>first_name = "三"
>>tast_name = "张"
>>firsr_name + tast_name
'三张'

3) 字符串变量可以和整数 * 使用重复凭借相同的字符串

>>"-"*20
'-------------------------'

4) 数字型变量 和 字符串 之间不能进行其他计算

image.png

4、变量的输入

所谓 输入,就是用代码获取用户通过键盘输入的信息
例如:去银行取钱,在ATM上输入密码
在Python中,如果要获取用户在键盘上的输入信息,需要使用input函数

1)关于函数
一个提前准备好的功能(别人或者自己写的代码),可以直接使用,而不用关心内部细节

input() 函数

  • 在Python中可以使用 input() 从键盘等待用户的输入
  • 用户输入的任何内容Python都认为是一个字符串
  • 语法如下:
    字符串变量 = input(“提示信息:”)


    image.png

5、类型转换函数

函数 说明
int(x) 将x转换为一个整型
float(x) 将x转换为一个浮点型
image.png
字符串之间要么做加法,要么字符串接数字做对指定的字符串重复拼接,两个字符串之间是不能做乘法操作的。所以上述的程序要把两个字符串进行类型转化的,重新定义两个变量,然后进行类型转换:
image.png
进行改进:

定义一个浮点变量 接收用户输入的同时,就使用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中的关键字:
import keyword
Print(keyword.lwlist)


image.png

8、变量的命名规则

命名规则 可以备被视为一种惯例,并无绝对与强制
目的是为了 增加代码的识别和可读性
注意 python 中的 标识符区分大小写的

命名规范:

全局变量 用全大写
定义类 用大驼峰
一般变量 用小写字母加下划线再加小写字母,例如:temp_str

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

猜你喜欢

热点阅读