5-1 什么是变量
A=[1,2,3,4,5,6]
B=[1,2,3]
A*3+B+A
A=[1,2,3,4,5,6]
B=[1,2,3]
print(A,B)
[1, 2, 3, 4, 5, 6] [1, 2, 3]
A*3+B+A
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 1, 2, 3, 4, 5, 6]SKILL=['新月打击','苍白之瀑']
print(SKILL[0])
新月打击
5-2 变量的命名规则
变量名的首字符不能是数字
变量名只能由字母,数字,下划线组成
_2=2
A1=2
a_2=2
系统保留关键字不能用在变量名中
and = 1
SyntaxError: invalid syntax
if = 1
SyntaxError: invalid syntax
import = 1
SyntaxError: invalid syntax
变量名区分大小写
变量没有类型限制,可以将数字,字符,元组,集合,列表赋值给变量
5-3 值类型与引用类型
int值类型
list引用类型
值类型赋值过程
引用类型赋值过程
a = 1
b = a
a = 3
print(a,b)
3 1
a = [1,2,3,4]
b = a
a[0]='1'
print(a,b)
['1', 2, 3, 4] ['1', 2, 3, 4]
int str truple(不可改变)值类型
list set dict(可变)引用类型
5-4 列表的可变与元组的不可变
列表的可变,支持修改:
a= [1,2,3]
id(a)
52198336
a[0]='5'
id(a)
52198336
元组的不可变性,不支持修改:
a=(1,2,3)
a[0]=5
Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
a[0]=5
TypeError: 'tuple' object does not support item assignment
列表支持元素追加,元组不支持追加
append追加
b=[1,2,3]
b.append(4)
print(b)
[1, 2, 3, 4]
a=(1,2,3)
a.append(4)
Traceback (most recent call last):
File "<pyshell#42>", line 1, in <module>
a.append(4)
AttributeError: 'tuple' object has no attribute 'append'
多维元组访问
a=(1,2,3,[1,2,4])
a[3][2]
4
a=(1,2,3,[1,2,['a','b']])
a[3][2][1]
'b'
元组中的列表可变
a[3][1]='1'
print(a)
(1, 2, 3, [1, '1', ['a', 'b']])
a[3][2][0]=1
print(a)
(1, 2, 3, [1, '1', [1, 'b']])
5-5 运算符号
'hello'+'world'
'helloworld'
[1,2,3]*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
3-1
2
3/2
1.5
整除:
3//2
1
求余数:
5%2
1
求次方:
2**5
32
5-6 赋值运算符
先做运算再赋值,c=c+1是c+=1的简写
c=1
c=c+1
print(c)
2
c+=1
print(c)
3
b=2
a=3
b+=a
print(b)
5
b-=a
print(b)
2
b*=a
print(b)
6
b//=a
print(b)
2
b%=a
print(b)
2
5-7 比较运算符
比较运算符运算结果是布尔值
!=代表不等于
1==1
True
1>1
False
1>=1
True
2<=1
False
1<=1
True
1!=1
False
5-8 不只是数字才能做比较运算
'a'>'b'
False
ord('a')
97
ord('b')
98
比较的是两个字符的ascll码
有很多字母的字符串,先比较第一个,如果不能判断,再比较第二个,如果还是不能判断,再判断第三个
'abc'<'abd'
True
如果第一个就可以判断出结果,则输出结果,不用继续比较
[1,2,3]<[2,1,1]
True
5-9 逻辑运算符
逻辑运算符:and or not
逻辑运算符的操作对象是布尔类型,返回结果也是布尔类型
and(且)
True and True
True
True and False
False
or(或)
True or False
True
not(非)
not True
False
not False
True
not not True
True
int float ,0被认为是False,非0被认为是True
字符串,空字符串被认为是False,其余为True
列表,空列表被认为是False,其余为True
元组,集合字典和列表一样
'a' and 'b'
'b'
'a' or 'b'
'a'
not 'a'
False
1 and 1
1
not[]
True
not[0]
False
[1] or []
[1]
and运算计算机只有读完第二个才知道结果,当两个输出结果意义一样,则直接返回最后一个
1 and 2
2
2 and 1
1
or运算计算机读完第一个值就知道结果了,则直接输出第一个
'a'or'b'
'a'
'b'or'a'
'b'
5-9 成员运算符
成员运算符:in, not in
用来判断一个元素是否在另外一组元素之中
返回结果为布尔类型
a=1
a in [1,2,3,4,5]
True
b=6
b in [1,2,3,4,5]
False
b not in [1,2,3,4,5]
True
字符,元组,列表,集合都可以用成员运算符
字典的成员运算符是针对key的
b='a'
b in {'c':1}
False
b = 1
b in {'c':1}
False
b='c'
b in {'c':1}
True
5-11身份运算符
身份运算符:is, is not
返回结果是布尔值
如果两个变量取值相等,则返回True
a=1
b=2
a is b
False
==比较两个变量的值是否相等,is比较的是两个变量的身份(内存地址)是否相等
a=1
b=1.0
a==b
True
a is b
False
5-12 如何判断变量的值、身份与类型
对象三个特征:值,身份,类型
==值判断
is身份判断
isinstance类型type判断
a='hello'
isinstance(a,str)
True
isinstance(a,int)
False
判断a的类型是不是后面3个中的任何一个
a='hello'
isinstance(a,(int,str,float))
True
5-13 位运算符
位运算符把数字当做二进制进行运算
&按位与
|按位或
^按位异或
~按位取反
<<左移动
右移动
&按位与运算举例
a=2
b=3
a&b
2
a的二进制数为10
b的二进制数为11
a,b的第一位都为1,结果为1
a,b的第二位不都为1,结果为0
则最终结果为二进制数10,输出2