一.python运算符
1.算术运算符
运算符 | 描述 | 实例 |
+ | 加 | 1+1 输出结果为 2 |
- | 减 | 1 - 1 输出结果为 0 |
* | 乘 | 2 * 2 输出结果为 4 |
/ | 除 | 10 / 2 输出结果为 5 |
// | 取整 | 9//输出结果唯一 |
% | 取余(取模) | 9%4输出结果为1 |
** | 幂指数 | 2 ** 4 输出结果为 16,即2的4次方,2 * 2 * 2 * 2 |
() | 小括号 | 小括号用来提高运算优先级,即 (1 + 2) * 3 输出结果为 9 |
#例一
num1 = 10
num2 = 2
# 四则运算 + - * /
print(f'加:{num1 + num2}')
print(f'减:{num1 - num2}')
print(f'乘:{num1 * num2}')
print(f'除:{num1 / num2}')
#例二
num1 = 20
num2 = 6
num3 = 5
# 1、整除
print(f'整除:{num1 // num2}')
# 2、求余数
print(f'余数:{num1 % num2}')
# 3、幂指数
print(f'幂指数:{num2 ** 3}')
# 4、圆括号
print(f'优先级:{(num1 + num2) * num3}')
2.赋值运算符
= | 赋值 | 将=右侧的结果赋值给等号左侧的变量 |
n = 5
f = 10.88
s = 'hello world'
3.复合赋值运算符
运算符 | 描述 | 实例 |
+= | 加法赋值运算符 | i + =1 == i=i+1 |
- = | 减法赋值运算符 | i - =1 == i=i-1 |
*= | 乘法赋值运算符 | i*=1 == i= i*i |
/= | 除法赋值运算符 | i/=1 == i=i /1 |
//= | 整除赋值运算符 | i//=1 == i= i//1 |
%= | 取余赋值运算符 | i%=1 == i= i%1 |
**= | 幂赋值运算符 | i**=1 == i=i**1 |
i = 1
# 相加并赋值,先加1,然后把结果赋值给左边的变量
i += 1
print(f'更新后,i的值为:{i}')
num1 = 9
# 取模并赋值,先求余数,然后在把结果赋值给左边的变量
num1 %= 2
print(f'更新后,num1的值为:{num1}')
num2 = 2
# 幂指数并赋值,先求幂指数,然后把结果赋值给左边的变量
num2 **= 3
print(f'更新后,num2的值为:{num2}')
4.比较运算符
> | 判断左边值是否大于右边值,返回结果为真(TRUE)或假(FALSE) |
< | 判断左边值是否小于右边值,返回结果为真(TRUE)或假(FALSE) |
>= | 判断左边值是否大于等于右边值,返回结果为真(TRUE)或假(FALSE) |
<= | 判断左边值是否小于等于右边值,返回结果为真(TRUE)或假(FALSE) |
== | 判断左边值是否等于右边值,返回结果为真(TRUE)或假(FALSE) |
!= | 判断左边值是否不等于右边值,返回结果为真(TRUE)或假(FALSE) |
num1 = 10
num2 = 20
print(num1 > num2) # False
print(num1 < num2) # True
print(num1 >= num2) # False
print(num1 <= num2) # True
print(num1 == num2) # False
print(num1 != num2) # True
5.逻辑运算符(或与非)
and | 逻辑与,只有当两边的表达式全部为真,则最终结果返回为真,否则返回为假。 |
or | 逻辑或,只要有一方为真,则整个表达式的返回结果就为真。除非两边的表达式都为假,则整个结果返回为假 |
not | 逻辑非,如果x为true,返回false 如果x为false,返回true |
① 女孩子要求比较高,要求男孩子必须要有房且有车
表达式1 and 表达式2
当表达式1为True且表达式2为True时,则整个表达式返回结果为True
当表达式1或表达式2中有一个表达式为假,则整个表达式返回结果为False
有房 and 有车 则 牵手成功
有房 and 没车 则 牵手失败
没房 and 有车 则 牵手失败
② 女孩子要求一般,要求男孩子有房或者有车即可
表达式1 or 表达式2
当表达式1为True或表达式2为True时,则整个表达式返回结果为True
当表达式1与表达式2都为False时,则整个表达式才会返回False
有房 or 有车 则 牵手成功
有房 or 没车 则 牵手成功
没房 or 有车 则 牵手成功
没房 or 没车 则 牵手失败
案例:
a = 1
b = 2
c = 3
print((a > b) and (b > c)) # False
print((a > b) or (b > c)) # False
print((a < b) or (b > c)) # True
print(not (a > b)) # True
6.短路运算
在Python代码中,逻辑运算符的运算,要遵循==短路运算==原则。
① 表达式1 and 表达式2,如果表达式1条件为真,则最终的运算结果由右边的表达式2来决定。如果表达式1条件为假,则最终结果为假。其右边的表达式2不需要在进行运算。
② 表达式1 or 表达式2,如果表达式1为真,则最终的运算结果由表达式1来决定,为真。如果表达式1为假,则最终结果由表达式2来决定。如果表达式2为真,则最终结果为真,如果表达式2为假,则最终结果为假。
print(3 and 4 and 5) # 5 print(5 and 6 or 7) # 6 4 > 3 and print('hello world') # 输出hello world
在逻辑运算中,不一定逻辑运算符的两边都是纯表达式,也可以是数值类型的数据或字符串类型的数据。
Python把0、空字符串和None看成 False,其他数值和非空字符串都看成 True==,所以:
① 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
print(3 and 4) # 4 print(0 and 1) # 0
② 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。 所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。
print(6 or 7) # 6 print(6 and 7 or 8) # 7
7. 运算符优先级(由高到低)
运算符 | 描述 |
** | 幂 |
* / // % | 乘 除取整取余 |
+ - | 加减 |
< > < => | 大于 小于 小于等于 大于等于 |
== != | 等于 不等于 |
+= *= -= /= //= %= **= | 赋值运算符 |
and or not | 逻辑运算符 |
二.if选择判断结构
1.IF结构
if 条件判断:
则执行某段代码...
print()if True: print('条件成立执行的代码1') print('条件成立执行的代码2') # 下方的代码没有缩进到if语句块,所以和if条件无关 print('我是无论条件是否成立都要执行的代码')
age = 18 if age >= 18: print('满足18岁要求,可以正常上网') age = int(input('请输入您的年龄:')) if age >= 18: print('满足18岁要求,可以正常上网')
2.if .....else...结构
if 条件判断:
当条件判断为True时,则执行这个语句段
else:
当条件判断为False时,则执行这个语句段age = int(input('请输入您的年龄:')) if age >= 18: print('满足18岁要求,可以正常上网') else: print('不满足18岁要求,回家好好学习,天天向上')
3. if...elif...else多条件判断结构
if 条件判断1:
如果此条件为True,则执行这个语句段
elif 条件判断2:
如果此条件为True,则执行这个语句段
elif ...:
...
else:
如果以上所有条件判断都不满足时,则执行这个语句段
案例:
① 中国合法工作年龄为18-60岁,即如果年龄小于18的情况为童工,不合法;
② 如果年龄在18-60岁之间为合法工龄;
③ 大于60岁为法定退休年龄。
# 定义一个变量,接收用户输入的年龄 age = int(input('请输入您的年龄:')) if age < 18: print('你还是一个童工,回去好好学习') elif 18 <= age <= 60: print('合法工龄,可以正常工作') else: print('您已经达到了退休年龄,回家好好休息')
4.if嵌套结构
if 外层条件判断:
# 如果条件为True,则执行以下语句段
if 内层条件判断:
# 如果内层条件为True,则执行以下语句段
else:
# 如果条件为False,则执行以下语句段"""案例:法律规定,车辆驾驶员的血液酒精含量小于 20mg/100ml 不构成酒驾;酒精含量大于或等于 20mg/100ml 为酒驾;酒精含量大于或等于 80mg/100ml 为醉驾。编写 Python 程序判断是否为酒后驾车。""" proof = int(input('请输入驾驶员100ml血液中的酒精含量:')) # 判断proof酒精含量是否小于20mg if proof < 20: print('驾驶员不构成酒驾') else: # 已经构成酒驾 => 两种类型(酒驾与醉驾) if proof >= 80: print('驾驶员已构成醉驾') else: print('驾驶员已构成酒驾')
#猜拳游戏 import random # 第一步:提示输入输入石头剪刀布,0-代表石头,1代表剪刀,2代表布 player = int(input('请输入您的出拳0-代表石头,1代表剪刀,2代表布:')) # 第二步:电脑随机出拳(后续解决) computer = random.randint(0, 2) print(computer) # 第三步:根据用户以及计算机的出拳判断输赢 # 什么情况,玩家会赢 # player==0且computer==1 或 palyer==1且computer==2 或 player==2且computer==0 if (player == 0 and computer == 1) or (player == 1 and computer == 2) or (player==2 and computer == 0): print('玩家获胜') elif player == computer: print('平局') else: print('电脑获胜')
三 .while循环
1.while循环基本语法
# ① 定义一个计数器(初始化一个计数器)
i = 0或1
# ② 编写while循环结构
while 循环条件(判断 计数器 是否达到了目标位置):
循环体1
循环体2
...
# ③ 在循环内部更新计数器
i = i + 1 或 i += 1总结:while循环三步走
==① 初始化计数器==
==② 编写循环条件(判断计数器是否达到了目标位置)==
==③ 在循环内部更新计数器==
# ① 初始化计数器 i = 0 # ② 编写循环条件(判断计数器是否达到了100) while i < 100: print('老婆大人,我错了') # ③ 在循环体内部更新计数器 i += 1
2.whille循环案例
#求1--100的值
# 第一步:初始化计数器
i = 1
# 第四步:定义一个result变量,用于接收累加后的结果
result = 0
# 第二步:编写循环条件
while i <= 100:
# 第五步:循环累加变量i
result += i
# 第三步:更新计数器的值
i += 1
print(f'1~100累加后的结果:{result}')
#求1--5000的所有偶数的和
# 初始化计数器
i = 1
# 定义result,用于接收所有偶数的和
result = 0
# 编写循环条件
while i <= 100:
# 将来写代码的位置
if i % 2 == 0:
# 代表变量i是一个偶数
result += i
# 更新计数器
i += 1
print(f'1~100之间所有偶数的和:{result}')
3.循环的关键词
break() 终止循环程序
# 初始化计数器 i = 1 # 编写循环条件 while i <= 5: # 当变量i == 4的时候,终止循环 if i == 4: print('我已经吃饱了,实在吃不下了...') break # 正在吃第几个苹果 print(f'正在吃第{i}个苹果') # 更新计数器 i += 1
continue () 跳过本次循环接着向下循环
# 初始化计数器 i = 1 # 编写循环条件 while i <= 5: # 当变量i == 3的时候,中止当前循环,继续下一次循环 if i == 3: # 手工更新计数器(非常重要) i += 1 print('吃到了一只大虫子,这个苹果不吃了...') continue print(f'正在吃第{i}个苹果') # 更新计数器 i += 1
注意:continue需要手工更新计数器
4 .while循环嵌套
# 初始化计数器
i = 0 或 i = 1
# 编写循环条件
while i < 边界值:
循环体代码
# 更新计数器
i += 1# 第一步:初始化外层循环计数器 i = 1 # 第二步:编写外层循环的条件 while i <= 3: # 第四步:初始化内层循环计数器 j = 1 # 第五步:编写内层循环的条件 while j <= 3: #循环体代码 # 第六步:更新内层循环计数器 j += 1 # 第三步:更新外层循环计数器 i += 1
案例:
#打印直角三角形 # 定义外层循环计数器 i = 1 # 编写外层循环的循环条件 while i <= 5: # 定义内层循环计数器 j = 1 # 编写内层循环的循环条件 while j <= i: print('* ', end='') j += 1 print('') # 更新外层循环计数器 i += 1 #打印 9 x 9乘法表 # 初始化外层循环计数器 i = 1 # 编写外层的循环条件 while i <= 9: # 初始化内层循环计数器 j = 1 # 编写内层的循环条件 while j <= i: print(f'{j} x {i} = {i * j}', end=' ') # 更新内层循环的计数器 j += 1 print('') # 更新外层循环计数器 i += 1
四.for循环
1.for循环基本语法
for循环结构主要用于(序列 => 字符串、列表、元组、集合以及字典)类型数据的遍历(循环)操作, 当循环次数未知的情况,建议使用for循环。
for 临时变量 in 序列:
重复执行的代码1
重复执行的代码2
2.range方法(函数)
基本语法:
range(stop)
range(start, stop[, step])start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0,5) 是 [0, 1, 2, 3, 4] 没有 5
step:步长,默认为1。例如:range(0,5) 等价于 range(0, 5, 1)for i in range(5): print(i)
3.for循环案例
#求1--100的和
# 定义一个变量,用于接收1~100的和
result = 0
# 从1开始循环,循环100次
for i in range(1, 101):
result += i
print(f'1~100的和为{result}')
#求1 ~ 100之间所有偶数的和
# 定义一个变量,用于接收1~100之间所有偶数的和
result = 0
# 从1开始循环,循环100次
for i in range(1, 101):
if i % 2 == 0:
result += i
print(f'1~100之间所有偶数的和为{result}')
4.循环中的两大关键字
#案例:遇到字符'a',则终止整个循环
str1 = 'zhangsan'
for i in str1:
if i == 'a':
break
print(i)
#案例:遇到字符'a',跳过循环,继续下一次循环
str1 = 'zhangsan '
for i in str1:
if i == 'a':
continue
print(i)
5.for循环嵌套
基本语法
# 外层循环
for i in 序列1:
# 内层循环
for j in 序列2:
循环体#案例:使用for循环嵌套实现打印九九乘法表 #分析:外层循环主要用于控制循环的行数,内层循环用于控制列数 for i in range(1, 10): for j in range(1, i+1): print(f'{j} x {i} = {i * j}', end=' ') # 打印换行符 print('')
五. while循环与for循环中的else结构
1.为什么需要在while循环中添加else 结构
循环可以和else配合使用,else下方缩进的代码指的是当循环正常结束之后要执行的代码
强调:'正常结束',非正常结束,其else中的代码时不会执行的。(如遇到break的情况)
2. while循环中else的基本语法
# 初始化计数器
i = 0
# 编写循环条件
while i < 5:
print('老婆大人,我错了')
# 更新计数器
i += 1
# 循环结束后,女朋友就原谅我了
else:
print('好开森,女朋友原谅我了...')
3.break对while....else结构的影响
需求:女朋友生气,要求道歉5遍:老婆大人,我错了。道歉到第三遍的时候,媳妇埋怨这一遍说的不真诚,是不是就是要退出循环了?这个退出有两种可能性:
第一种情况:更生气,不打算原谅,也不需要道歉了,程序如何书写?
第二种情况:只有这一遍不真诚,可以忍受,继续下一遍道歉,程序如何书写?
# 初始化计数器
i = 0
# 编写循环条件
while i < 5:
if i == 2:
print('这遍说的不够真诚')
break
print('老婆大人,我错了')
# 更新计数器
i += 1
# 循环结束后,女朋友就原谅我了
else:
print('好开森,女朋友原谅我了...')
#由运行结果可知,如果我们在while循环中,使用了break,一旦break语句执行了,则else语句则不会输出。
4.continue对while...else结构的影响
# 初始化计数器
i = 0
# 编写循环条件
while i < 5:
if i == 2:
i += 1
print('这遍说的不够真诚')
continue
print('老婆大人,我错了')
# 更新计数器
i += 1
# 循环结束后,女朋友就原谅我了
else:
print('好开森,女朋友原谅我了...')
#由运行结果可知,如果我们在while循环中,使用了continue,虽然continue语句执行了,但循环属于正常结束,else语句会输出。
5.for循环结构中的else结构
for 临时变量 in 序列:
循环体
else:
当for循环正常结束后,返回的代码
str1 = 'zhangsan'
for i in str1:
if i == 's':
print('遇s不打印')
break
print(i)
else:
print('循环正常结束之后执行的代码')
#由运行结果可知,如果我们在for循环中,使用了break,一旦break语句执行了,循环就属于非正常结束,else语句则不会输出。
str1 = 'zhangsan'
for i in str1:
if i == 's':
print('遇s不打印')
continue
print(i)
else:
print('循环正常结束之后执行的代码')
#由运行结果可知,如果我们在for循环中,使用了continue,虽然continue语句执行了,但循环属于正常结束,else语句会输出。
6.循环的选择
① 对于循环次数已知的情况,建议使用while循环
② 对于循环次数未知的情况,建议使用for循环