运算符
基本运算符
算术运算符也即数学运算符,用来对数字进行数学运算,比如加减乘除。下表列出了Python支持所有基本算术运算符。
运算符 | 说明 | 实例 | 结果 |
---|---|---|---|
+ | 加 - 两个对象相加 | 12.45 + 15 | 27.45 |
- | 减 - 得到负数或是一个数减去另一个数 | 4.56 - 0.26 | 4.3 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | 5 * 3.6 | 18.0 |
/ | 除 - x除以y(和数学中的规则一样) | 7 / 2 | 3.5 |
// | 整除(只保留商的整数部分) | 7 // 2 | 3 |
% | 取余,即返回除法的余数 | 7 % 2 | 1 |
** | 幂运算/次方运算,即返回 x 的 y 次方 | 2 ** 4 | 16,即 24 |
比较运算符
比较运算符,也称关系运算符,用于对常量、变量或表达式的结果进行大小比较。如果这种比较是成立的,则返回 True(真),反之则返回 False(假)。
比较运算符 | 说明 |
---|---|
> | 大于,如果> 前面的值大于后面的值,则返回 True,否则返回 False。 |
< | 小于,如果< 前面的值小于后面的值,则返回 True,否则返回 False。 |
== | 等于,如果== 两边的值相等,则返回 True,否则返回 False。 |
>= | 大于等于(等价于数学中的 ≥),如果>= 前面的值大于或者等于后面的值,则返回 True,否则返回 False。 |
<= | 小于等于(等价于数学中的 ≤),如果<= 前面的值小于或者等于后面的值,则返回 True,否则返回 False。 |
!= | 不等于(等价于数学中的 ≠),如果!= 两边的值不相等,则返回 True,否则返回 False。 |
is | 判断两个变量所引用的对象是否相同,如果相同则返回 True,否则返回 False。 |
is not | 判断两个变量所引用的对象是否不相同,如果不相同则返回 True,否则返回 False。 |
多变量赋值:
x , y, z= 30, 20, 10 x = y = z = 10
赋值运算符
赋值运算符用来把右侧的值传递给左侧的变量(或者常量);可以直接将右侧的值交给左侧的变量,也可以进行某些运算后再交给左侧的变量,比如加减乘除、函数调用、逻辑运算等。
运算符 | 说 明 | 用法举例 | 等价形式 |
---|---|---|---|
= | 最基本的赋值运算 | x = y | x = y |
+= | 加赋值 | x += y | x = x + y |
-= | 减赋值 | x -= y | x = x - y |
*= | 乘赋值 | x *= y | x = x * y |
/= | 除赋值 | x /= y | x = x / y |
%= | 取余数赋值 | x %= y | x = x % y |
**= | 幂赋值 | x **= y | x = x ** y |
//= | 取整数赋值 | x //= y | x = x // y |
&= | 按位与赋值 | x &= y | x = x & y |
|= | 按位或赋值 | x |= y | x = x | y |
^= | 按位异或赋值 | x ^= y | x = x ^ y |
<<= | 左移赋值 | x <<= y | x = x << y,这里的 y 指的是左移的位数 |
>>= | 右移赋值 | x >>= y | x = x >> y,这里的 y 指的是右移的位数 |
逻辑运算符
高中数学中我们就学过逻辑运算,例如 p 为真命题,q 为假命题,那么“p且q”为假,“p或q”为真,“非q”为真。
逻辑运算符 | 含义 | 基本格式 | 说明 |
---|---|---|---|
and | 逻辑与运算,等价于数学中的“且” | a and b | 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。 |
or | 逻辑或运算,等价于数学中的“或” | a or b | 当 a 和 b 两个表达式都为假时,a or b 的结果才是假,否则为真。 |
not | 逻辑非运算,等价于数学中的“非” | not a | 如果 a 为真,那么 not a 的结果为假;如果 a 为假,那么 not a 的结果为真。相当于对 a 取反。 |
基本示例
print(True and False) # False print(True or False) # Ture
什么情况下是False
print(1 or False) # 在python中Ture是1,False是0 print('int(True):'+str(int(True))) print('int(False):'+str(int(False))) # 在python中0表示False print('bool(0):'+str(bool(0))) print('bool(1):'+str(bool(1))) print('bool(2):'+str(bool(2))) print('bool(3):'+str(bool(3))) # 在python中没有null,只有None,而None也是False print('bool(none):'+str(bool(None)))
短路与和短路或
-
短路或:or如果碰到了True就直接返回
-
短路与:and如果碰到了False就直接返回
print(1 or 0 and 1 and 2 and 3 and 4) print(0 and 1)
根据速度完成对等级的判断:
假设对成长速度显示规定如下: 成长速度为5显示等级1; 成长速度为10显示等级2; 成长速度为12显示等级3; 成长速度为15显示等级4; 其他都显示都显示等级0;
# 方式一:if条件判断 # 方式二: level=(speed==5 and 1) or \ (speed==10 and 2) or \ (speed==15 and 3) or \ (speed==20 and 4) or 5 print("level="+str(level)) # 方式三: obj={ "5":1, "10":2, "15":3, "20":4 } print(obj.get(str(speed)) or -1)
位运算符
Python位运算按照数据在内存中的二进制位(Bit)进行操作,它一般用于底层开发(算法设计、驱动、图像处理、单片机等),在应用层开发(Web 开发、Linux 运维等)中并不常见。
位运算符 | 说明 | 使用形式 | 举 例 |
---|---|---|---|
& | 按位与 | a & b | 4 & 5 |
| | 按位或 | a | b | 4 | 5 |
^ | 按位异或 | a ^ b | 4 ^ 5 |
~ | 按位取反 | ~a | ~4 |
<< | 按位左移 | a << b | 4 << 2,表示整数 4 按位左移 2 位 |
>> | 按位右移 | a >> b | 4 >> 2,表示整数 4 按位右移 2 位 |
-
按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。
-
按位或运算符: 只要对应的二个二进位有一个为1时,结果位就为1。
-
按位异或运算符:当两对应的二进位相异时,结果为1
-
左移动运算符:运算数的各二进位全部左移若干位,由右边的数字指定了移动的位数,高位丢弃,低位补0。
-
右移动运算符:把左边的运算数的各二进位全部右移若干位,右边的数字指定了移动的位数
三元运算符
Python提供了一种更加简洁的写法,如下所示:
max = a if a>b else b
这是一种类似于其它编程语言中三目运算符? :
的写法。Python 是一种极简主义的编程语言,它没有引入? :
这个新的运算符,而是使用已有的 if else 关键字来实现相同的功能。
使用 if else 实现三目运算符(条件运算符)的格式如下:
exp1 if condition else exp2
condition 是判断条件,exp1 和 exp2 是两个表达式。如果 condition 成立(结果为真),就执行 exp1,并把 exp1 的结果作为整个表达式的结果;如果 condition 不成立(结果为假),就执行 exp2,并把 exp2 的结果作为整个表达式的结果。
条件判断
在Python中,可以使用 if else 语句对条件进行判断,然后根据不同的结果执行不同的代码,这称为选择结构或者分支结构。Python 中的 if else 语句可以细分为三种形式,分别是 if 语句、if else 语句和 if elif else 语句。
# 0=剪刀 1=石头 2=布 nums = ["剪刀","石头","布"] # 你出的 ops = int(input("请输入剪刀石头布:")) # 电脑出的 cpu = random.randint(0,2) # 计算必赢结果 win = ops + 1 win = 0 if win == 3 else win print("你出%s,电脑出%s,输赢结果:%s" %(nums[ops],nums[cpu])) if cpu==win: print("电脑赢了") elif ops == cpu: print("平局") else: print("你赢了")
Python 提供了一种更加专业的做法,就是空语句 pass。pass 是 Python 中的关键字,用来让解释器跳过此处,什么都不做。
循环结构
for循环
Python中的循环语句有 2 种,分别是 while 循环和 for 循环,而for循环它常用于遍历字符串、列表、元组、字典、集合等序列类型,逐个获取序列中的各个元素。
for 循环的语法格式如下:
for 迭代变量 in 字符串|列表|元组|字典|集合: 代码块
示例一:通过for循环计算100以内的和
sum = 0 for i in range(100): print(i) sum+=i+1 print(sum)
示例二:通过for循环计算100以内的奇数和
sum = 0 for i in range(100)[1::2]: print(i) sum+=i print(sum)
while循环
而while 循环和 if 条件分支语句类似,即在条件(表达式)为真的情况下,会执行相应的代码块。不同之处在于,只要条件为真,while 就会一直重复执行那段代码块。
while 语句的语法格式如下:
while 条件表达式: 代码块
这里的代码块,指的是缩进格式相同的多行代码,不过在循环结构中,它又称为循环体。
while 语句执行的具体流程为:首先判断条件表达式的值,其值为真(True)时,则执行代码块中的语句,当执行完毕后,再回过头来重新判断条件表达式的值是否为真,若仍为真,则继续重新执行代码块...如此循环,直到条件表达式的值为假(False),才终止循环。
sum = 0 # 求和 num = 0 # 当前数值 while num <= 100: sum += num num = num + 1 break else: print("OK") print(sum)
无论是 while 循环还是 for 循环,其后都可以紧跟着一个 else 代码块,它的作用是当循环条件为 False 跳出循环时,程序会最先执行 else 代码块中的代码。