河南海绵城市建设网站做个网站得投入多少
一、运算符与表达式
运算符 就是对字面量或者变量进行操作的符号;表达式 是指用运算符把字面量或者变量连接起来,符合 Python 语法的式子。不同运算符连接的表达式体现的是不同类型的表达式;Python 中的运算符主要包括 算术运算符、赋值运算符、比较(关系)运算符、逻辑运算符 和 位运算符。
二、算数运算符
算术运算符是用来处理四则运算的符号。
| 算数运算符 | 运算 | 范例 | 结果 | 
|---|---|---|---|
| + | 加 | 5 + 2 | 7 | 
| - | 减 | 5 - 2 | 3 | 
| * | 乘 | 5 * 2 | 10 | 
| / | 除 | 5 / 2 | 2.5 | 
| % | 取模(取余) | 5 % 2 | 1 | 
| // | 取整除,返回商的整数部分 | 5 // 2 | 2 | 
| ** | 幂,即返回 x 的 n 次方 | 5**2 | 25,即 $ 5^{2}$ | 
a = 5
b = 2
print(a, "+", b, "=", (a + b))      # 5 + 2 = 7
print(a, "+", b, "=", (a - b))      # 5 - 2 = 3
print(a, "+", b, "=", (a * b))      # 5 * 2 = 10
print(a, "+", b, "=", (a / b))      # 5 / 2 = 2.5
print(a, "+", b, "=", (a % b))      # 5 /% 2 = 1
print(a, "+", b, "=", (a // b))     # 5 // 2 = 2
print(a, "+", b, "=", (a ** b))     # 5 ** 2 = 25a = "hello"
b = "world"
print(a, b, "=", (a + b))           # hello + world = helloworld
 
在代码中,如果有小数参与运算,其结果可能是不精确的;
% 取模运算结果的正负与被模数一致,即:a%b 等价于 a-a/b*b,取模结果的正负与 a 的正负一致;
字符串之间也可以进行加法运算。如果将两个字符串相加,则会自动将两个字符串拼接为一个字符串;
如果将字符串和数字相乘,则会对字符串进行复制操作,即把字符串重复指定的次数并返回,例如:“字符串”*m,表示将字符串复制 m 次;
使用除法运算符(/ 或 //)和取余运算符时,除数不能为 0,否则会报以下异常:ZeroDivisionError: division by zero
三、赋值运算符
赋值运算符 用于将右侧表达式的值赋值给左侧变量。
| 赋值运算符 | 运算 | 范例 | 结果 | 
|---|---|---|---|
| = | 赋值 | a = 10 | 将 10 赋值给变量a | 
| += | 加后赋值 | a += b | 将 a + b 的值给 a | 
| -= | 减后赋值 | a -= b | 将 a - b 的值给 a | 
| *= | 乘后赋值 | a *= b | 将 a * b 的值给 a | 
| **= | 幂运算后赋值 | a **= b | 将 a b a^b ab 的值给 a | 
| /= | 除后赋值 | a /= b | 将 a / b 的值给 a | 
| //= | 整除后赋值 | a //= b | 将 a//b 的值给 a | 
| %= | 取余后赋值 | a %= b | 将 a % b 的值给 a | 
# 多个变量赋值时使用逗号分隔
a,b = 10,5a += b
print("a = ",a)         # 15
print("b = ",b)         # 5
print()a = 10
b = 5a -= b
print("a = ",a)         # 5
print("b = ",b)         # 5
print()a = 10
b = 5a *= b
print("a = ",a)         # 50
print("b = ",b)         # 5
print()a = 10
b = 5a **= b
print("a = ",a)         # 100000
print("b = ",b)         # 5
print()a = 10
b = 5a /= b
print("a = ",a)         # 2.0
print("b = ",b)         # 5
print()a = 10
b = 5a //= b
print("a = ",a)         # 2
print("b = ",b)         # 5
print()a = 10
b = 5a %= b
print("a = ",a)         # 0
print("b = ",b)         # 5 
四、关系运算符
关系运算符 也被称为 比较运算符;它用于表达式的 比较,并返回一个 真值 或 假值。
| 关系运算符 | 运算 | 范例 | 结果 | 
|---|---|---|---|
| == | 比较两个对象的值是否相等 | 4 == 3 | False | 
| != | 比较两个对象的值是否不相等 | 4 != 3 | True | 
| < | 比较左侧值是否小于右侧值 | 4 < 3 | False | 
| > | 比较左侧值是否大于右侧值 | 4 > 3 | True | 
| <= | 比较左侧值是否小于等于右侧的值 | 4 <= 3 | True | 
| >= | 比较左侧值是否大于等于右侧的值 | 4 >= 3 | True | 
a = 4
b = 3print(a, " == ", b, ": ", (a == b))     # False
print(a, " != ", b, ": ", (a != b))     # True
print(a, " <  ", b, ": ", (a < b))      # False
print(a, " <= ", b, ": ", (a <= b))     # False
print(a, " >  ", b, ": ", (a > b))      # True
print(a, " >= ", b, ": ", (a >= b))     # Truea = "1"
b = "2"
print(a, " < ", b, ": ", (a < b))       # True  a = "abc"
b = "ab"
print(a, " > ", b, ": ", (a > b))       # Truea = 1
b = True
print(a, " == ", b, ": ", (a == b))     # True
 
在 Python 中,关系运算符可以连的使用。
result = 1 < 2 < 3	# 相当于 1 < 2 and 2 < 3
print(result)result = 10 < 20 > 15   # 相当于 10 < 20 and 20 > 15
print(result)
 
在 Python 中可以对字符串进行大于(等于)或小于(等于)的运算,当对字符串进行比较时,实际上比较的是字符串的 Unicode 编码,比较两个字符串的 Unicode 编码时,是逐位比较的;
如果不希望比较两个字符串的 Unicode 编码,则需要将其转换为数字然后进行再进行比较;
相等和不等比较的是对象的值,而不是 id
五、逻辑运算符
逻辑运算符 用于根据表达式的值返回 真值 或 假值。对于非布尔值进行逻辑运算,会将数据转换为布尔值,然后再进行逻辑运算。
在 Python 中,所有的对象都可以进行真值测试,其中只有下面列出的几种情况得到的值为假。
- False 或 None
 - 数值中的零,包括 0、0.0、虚数0
 - 空序列,包括 字符串、空元组、空列表、空字典
 - 自定义对象的实例,该对象的 
__bool__方法返回 False 或者__len__方法返回 0 
| 逻辑运算符 | 功能 | 
|---|---|
| and | 逻辑与,全真为真,有假为假 | 
| or | 逻辑或,有真为真,全假为假 | 
| not | 逻辑非,非假为真,非真为假 | 
运算结果:
| a | b | a and b | a or b | not a | 
|---|---|---|---|---|
| True | True | True | True | False | 
| True | False | False | True | False | 
| Flase | True | False | True | True | 
| False | False | False | False | True | 
a = True
b = True
c = False
d = Falseprint(a, " and ", b, ": ", (a and b))   # True
print(a, " and ", c, ": ", (a and c))   # False
print(c, " and ", d, ": ", (c and d))   # False
print()print(a, " or ", b, ": ", (a or b))     # True
print(a, " or ", c, ": ", (a or c))     # True
print(c, " or ", d, ": ", (c or d))     # False
print()print("not ", a, ": ", (not a))         # False
print("not ", c, ": ", (not c))         # True
print()# 对于非布尔值进行逻辑运算,会先将数据转化为布尔值,然后再进行逻辑运算
a = 1
print("not ", a, ": ", (not a))         # False
 
在 Python 中 与运算 和 或运算 都具有短路效果,即当左边的表达式能确定最终结果时,那么右边就不会参与运算了;
- 与运算符;与运算是找 False的,如果第一个值为 False,则不再看第二个值。
 - 或运算符:或运算是找 True 的,如果第一个值为 True,则不再看第二个值。
 
print("与运算的短路运算")
True and print("我执行了")
False and print("我不会执行")
print()print("或运算的短路运算")
True or print("我不会执行")
False or print("我执行了")
 
当我们对非布尔值进行与或运算时,Python 会将其当作布尔值运算,最终会返回原值。与运算是找 False 的,如果第一个值是 False,则直接返回第一个值,否则返回第二个值。或运算是找 True 的,如果第一个值是 True,则直接返回第一个值,否则返回第二个值。
print("非布尔值的与运算")
# Ture and True
print("1 and 2: ", (1 and 2))        # 2
# True and False
print("1 and 0: ", (1 and 0))        # 0
# False and True
print("0 and 1: ", (0 and 1))        # 0
# False and False
print("0 and None: ", (0 and None))  # 0
print()print("非布尔值的或运算")
# Ture or True
print("1 or 2: ", (1 or 2))        # 1
# True or False
print("1 or 0: ", (1 or 0))        # 1
# False or True
print("0 or 1: ", (0 or 1))        # 1
# False or False
print("0 or None: ", (0 or None))  # None
 
六、身份运算符
| 身份运算符 | 功能 | 
|---|---|
| is | 判断两个表示是否引用同一个对象,若引用的是同一个对象则返回 True,否则返回 False | 
| is not | 判断两个表示是否引用同一个对象,若引用的不是同一个对象则返回 True,否则返回 False | 
a = 123
b = 123
c = -123
d = -123print("id(a): ",id(a))
print("id(b): ",id(b))
print("id(c): ",id(c))
print("id(d): ",id(d))
print(f"a = {a},b = {b},c = {c},d = {d}")
print()print("a is b: ", (a is b))             # True
print("a is c: ", (a is c))             # False
print()print("a is not b: ", (a is not b))     # False
print("a is not c: ", (a is not c))     # True
print()print("a is b: ",(a is b))
print("c is d: ",(c is d))
 
在 Python 解释器启动的那一刻开始,就会在内存中实现申请好一系列内存空间存放好常用的整数,范围为 [-5,256]。
如果用 Pycharm 等 IDE,会自动优化;
七、成员运算符
| 成员运算符 | 功能 | 
|---|---|
| in | 在指定序列中找到值时返回 True,否则返回 False | 
| not in | 在指定序列中没有找到值时返回 True,否则返回 False | 
a = "s"
b = "a"
c = "Sakura"print("a = ", a,", b  = ", b,", c = ", c)
print()print("a in c: ", (a in c))                 # False
print("a not in c: ", (a not in c))         # True
print()print("b in c: ", (b in c))                 # True
print("b not in c: ", (b not in c))         # False
 
八、位运算符
位运算符是直接对整数的二进制进行的运算; 所有数字在计算机底层都以二进制形式执行;所有的整数值底层都以补码的方式存储;
- 正数:三码合一,符号位为 0;
 - 负数:符号位为 1 
- 原码:直接将数值转成二进制数,最高位是符号位;
 - 反码:对原码按位取反,符号位不变;
 - 补码:其反码加 1;
 
 
| 位运算符 | 运算 | 范例 | 
|---|---|---|
| << | 左移,空位补0,被移除的高位舍弃 | 3 << 2 = 12 | 
| >> | 右移,空位使用符号位填充,被移除的低位舍弃 | 3 >> 1 = 1 | 
| & | 与运算,二进制位进行与运算,全1为1,有0为0 | 6 & 3 = 2 | 
| | | 或运算,二进制位进行或运算,有1为1,全0为0 | 6| 3 = 7 | 
| ^ | 异或运算,二进制位进行异或运算,相同为0,不同为1 | 6 ^ 3 = 5 | 
| ~ | 按位取反,二进制位进行取反运算,非0为1,非1为0 | ~6 = -7 | 
print("3 << 2: ", (3 << 2))        # 12
print("3 >> 1: ", (3 >> 1))        # 1
print("-3 >> 1: ", (-3 >> 1))      # -2
print("6 & 3: ", (6 & 3))          # 2
print("6 | 3: ", (6 | 3))          # 7
print("6 ^ 3: ", (6 ^ 3))          # 5
print("~6: ", (~6))                # -7
 
<<:在一定范围内,每向左移一位,相当于乘以2;
>>:在一定范围内,每向右移一位,相当于除以2;
九、三元运算符
三元运算符的格式如下:
语句1 if 条件表达式 else 语句2
 
它的执行流程如下:
- 条件运算符在执行时,会先对条件表达式进行求值判断 
- 如果判断结果为 True,则执行语句1,并返回执行结果
 - 如果判断结果为 False,则执行语句2,并返回执行结果
 
 
num = int(input("请输入一个数:"))
print("你输入的数比10大") if num > 10 else print("你输入的数不大于10")a = 10
b = 20max = a if a > b else b
print(max)
 
三元运算符一定可以改成 if-else 语句,反之不成立;
如果程序既可以使用三元运算符又可以使用 if-else 语句,优先使用三元运算符;
十、运算符的优先级
我们可以使用小括号来提升运算符的优先级;
| 优先级 | 运算符 | 名称或含义 | 使用形式 | 结合方向 | 说明 | 
|---|---|---|---|---|---|
| 1 | (expressions...) | 圆括号 | (表达式) | 左到右 | |
| [expressions...] | 列表 | [表达式] | 左到右 | ||
| {key:value} | 字典 | {键:值} | 左到右 | ||
| {expressions...} | 集合 | {表达式} | 左到右 | ||
| 2 | [index] | 索引 | [常量] | 左到右 | |
| [start:end:step] | 切片 | [起始索引:结束索引:步长] | 左到右 | ||
| x(arguments...) | 方法调用 | 方法名(形参列表) | 左到右 | ||
| x.attribute | 属性访问 | 对象.属性 | 左到右 | ||
| 3 | ** | 乘方 | 表达式**表达式 | 左到右 | |
| 4 | + | 正号运算符 | +表达式 | 右到左 | 单目运算符 | 
| - | 负号运算符 | -表达式 | 单目运算符 | ||
| ~ | 按位取反 | ~表达式 | 左到右 | ||
| 5 | * | 乘 | 表达式 * 表达式 | 左到右 | 双目运算符 | 
| / | 除 | 表达式 / 表达式 | 双目运算符 | ||
| // | 整除 | 表达式 // 表达式 | 双目运算符 | ||
| % | 取余 | 表达式 % 表达式 | 双目运算符 | ||
| 6 | + | 加 | 表达式 + 表达式 | 左到右 | 双目运算符 | 
| - | 减 | 表达式 - 表达式 | 双目运算符 | ||
| 7 | << | 左移 | 变量 << 表达式 | 左到右 | 双目运算符 | 
| >> | 右移 | 变量 >> 表达式 | 双目运算符 | ||
| 8 | & | 按位与 | 表达式 & 表达式 | 左到右 | 双目运算符 | 
| 9 | ^ | 按位异或 | 表达式 ^ 表达式 | 左到右 | 双目运算符 | 
| 10 | | | 按位或 | 表达式 | 表达式 | 左到右 | 双目运算符 | 
| 11 | > | 大于 | 表达式 > 表达式 | 左到右 | 双目运算符 | 
| >= | 大于等于 | 表达式 >= 表达式 | 双目运算符 | ||
| < | 小于 | 表达式 < 表达式 | 双目运算符 | ||
| <= | 小于等于 | 表达式 <= 表达式 | 双目运算符 | ||
| == | 等于 | 表达式 == 表达式 | 双目运算符 | ||
| != | 不等于 | 表达式 != 表达式 | 双目运算符 | ||
| is | is 运算符 | 变量 is 变量 | 左到右 | 双目运算符 | |
| is not | is not 运算符 | 变量 is not 变量 | 双目运算符 | ||
| in | in 运算符 | 元素 in 序列 | 左到右 | 双目运算符 | |
| not in | not in 运算符 | 元素 not in 序列 | 双目运算符 | ||
| 12 | not | 逻辑非 | not 表达式 | 左到右 | 单目运算符 | 
| 13 | and | 逻辑与 | 表达式 and 表达式 | 左到右 | 单目运算符 | 
| 14 | or | 逻辑与 | 表达式 and 表达式 | 左到右 | 单目运算符 | 
| 15 | if-else | 三元表达式 | 语句1 if 条件表达式 else 语句2 | ||
| 16 | = | 赋值运算符 | 变量=表达式 | 右到左 | |
| /= | 除后赋值 | 变量/=表达式 | |||
| *= | 乘后赋值 | 变量*=表达式 | |||
| %= | 取模后赋值 | 变量%=表达式 | |||
| += | 加后赋值 | 变量+=表达式 | |||
| -= | 减后赋值 | 变量-=表达式 | |||
| <<= | 左移后赋值 | 变量<<=表达式 | |||
| >>= | 右移后赋值 | 变量>>=表达式 | |||
| &= | 按位与后赋值 | 变量&=表达式 | |||
| ^= | 按位异或后赋值 | 变量^=表达式 | |||
| |= | 按位或后赋值 | 变量|=表达式 | 
