参考
Python从零开始系列连载,by 王大伟 Python爱好者社区
Hellobi Live | 1小时破冰入门Python
《简明python教程》
《小甲鱼零基础入门学python》
Python进阶系列连载(1)——那些容易被忽略的问题(上)
Note
变量名、变量类型、赋值。
NBA_star #变量没有赋值
报错
NameError: name ‘NBA_star’ is not defined
NBA_star = 'Kobe' #给变量赋值
NBA_star
‘Kobe’
NBA_star = 'James' #给变量重新赋值
NBA_star
‘James’
del NBA_star #删除变量
NBA_star
报错
NameError: name ‘NBA_star’ is not defined
下面看看不同类型变量之间的运算
'1314' + 520 #类型不相同,不能运算
报错
TypeError: must be str, not int
1314 + '520' #观察报错信息
报错
TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’
1314+520 #int之间运算
1834
1314.0+520 #int和float运算得到float结果
1834.0
如果是不同类型的数据运算,会发生隐式类型转换
转换的规则是:低等类型向高等类型转换,前提是可以进行算术运算
等级从低到高是:bool-int-float-complex
Note:在算术运算时,True代表1,False代表0
False + 1 #bool + int = int
1
False + 1.0 #bool + float = float
1.0
(1+1j) + True #bool + complex = complex
(2+1j)
True + (1+1j)
(2+1j)
int 和 float 运算得到 float 结果,上述例子就可以看出
1 + (1+1j) #int + complex = complex
(2+1j)
(1+1j) + 1
(2+1j)
(1+1j) + 1.1 #float + complex = complex
(2.1+1j)
complex的实部和虚部都是int类型的,int/float + complex = int/float+实部,虚部不变,int/float * complex = int/float分别乘以实部和虚部。
(1+1j) * 2
(2+2j)
float()函数,将其他类型数据转为浮点数
str()函数,将其他类型数据转为字符串
int()函数,将其他类型数据转为整型
float(123) #int转为float
123.0
float('123') #str转为float
123.0
float(1.23e-4) #科学计数法转为float
0.000123
str(123) #int转为str
‘123’
str(1.23e5) #科学计数法转为str
‘123000.0’
float 转为 int 的时候,往0靠近,不是进一法,也不是四舍五入,简单来说就是保留整数部分,截去小数部分
int(1.23) #float转为int,往0靠近的整数
1
int(-1.23)
-1
int('123') #str转int
123
int('Kobe')
报错
ValueError: invalid literal for int() with base 10: ‘Kobe’
float('Kobe')
报错
ValueError: could not convert string to float: ‘Kobe’
算数运算符的优先级(按照从低到高排序,同一行优先级相同)
x = 123
123
-x
-123
取余,余数的符号根据除数来决定。
9 % 2 #取余数
1
-9 % 2
1
9 % -2
-1
-9 % -2
-1
注意幂运算的优先级比正负号的优先级高。
- 2 ** 2 #乘方
-4
(- 2) ** 2
4
还有 pow(a,b)
也可以进行幂运算,参考下一小节内容
逻辑运算符有三种,与 或 非
and:逻辑‘与’运算符,只有当and两边都是真,结果才是真
or:逻辑‘或’运算符,只要当or一边的是真的,结果就是真
not:逻辑非运算符,反转逻辑值
Note:and 和 or的使用细节
只要左边的表达式为真,整个表达式返回的值是右边表达式的值,否则,返回左边表达式的值
1 and 5
结果为5
只要两边的表达式为真,整个表达式的结果是左边表达式的值。
如果是一真一假,返回真值表达式的值。
如果两个都是假,比如空值和0,返回的是右边的值。(空值或0)
1 or 5
结果为1
优先级顺序为not > and > or
not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
结果为4
根据上面知识点,求解过程如下:
0 or 0 or 4 or 6 or 8 and 9
0 or 0 or 4 or 6 or 9
0 or 4 or 6 or 9
4 or 6 or 9
4 or 9
4
Python中的对象包含三要素:id、type、value
id用来唯一标识一个对象,即在内存开辟了一块空间暂时存放这个变量
type标识对象的类型,如之前说过的str,int,float等
value是对象的值
a = 2
b = 2
a == b
True
a is b
True
c = 2.0
a == c
True
c is a
False
id(a) #查看变量在内存中的位置
94918783982752
id(b)
94918783982752
id(c)
139717705123520
表中可以看出,数字的ASCII小于大写字母,大大写字母小于小写字母
规则:按ASCII表中排列顺序比较大小,表中越后面的越大
.
流程:
• 首先取两个字符串的第1个字符比较,较大的字符所在的字符串更大
• 如果第一个字符相同,再取两个字符串的第2个字符比较,较大的字符所在的字符串更大
• 其余以此类推
• 如果比到最后都相同,则两个字符串相等
• 如果某个字符串已经被比较完了,另一个还剩一部分,则剩一部分的字符串比较大
• 特别要注意的,如果是空字符串和非空字符串比较,空串小
a = 5
print(4 < a < 6)
print(1==a<20)
print(3<a>4)
output
True
False
True
Note:更多连载请查看【python】