一、三目运算符
1. 分支结构的简写
- 单分支结构
if 条件语句: 代码段(只有一条语句的时候)
总结: 冒号换行一个缩进后面的代码如果只有一条语句,那么唯一的这条语句可以直接放在冒号后边
示例:
age = 19
if age >= 18 : print('成年')
- 双分支与多分支结构
示例
# 单分支
if age >= 18: print('成年')
else:print('未成年')
# 多分支
if age <= 3:print('幼儿')
elif age <= 12:print('儿童')
elif age <= 18:print('青少年')
else:print('成年')
2. 三目运算符
- C语言的三目运算符:
条件?值1:值2 - 判断条件语句是否为真,如果整个运算表达式的结果是值1,否则是值2
- Python三目运算符:
值1 if 条件 else 值2 - 判断条件语句是否为真,如果整个运算表达式的结果是值1,否则是值2
示例: 判断是否成年
age = 9
result = '成年' if age >= 18 else '未成年'
print(result)
二、 for循环
1. 循环结构
循环结构 - 让代码重复执行(代码只写一遍,重复执行多次)
示例: 打印5次 hello!
for _ in range(5):
print('hello')
2. for循环
- 语法:
for 变量 in 序列:
循环体
- 说明:
内容 | 说明 |
---|---|
for、in | 关键字,固定写法 |
变量 | 合法的变量名 |
序列 | 容器型数据类型对应的数据,例如:字符串、列表、字典、元组、集合、迭代器、生成器、range等 |
: | 固定写法 |
循环体 | 结构上,和for保持一个缩进的一条或者多条语句(至少一条); 逻辑上,需要重复执行的代码 |
- 执行过程
让变量在序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环体。(for循环循环次数,由序列中元素个数决定)
示例: 结果 - a 你好! b 你好! c 你好!
for i in 'abc':
print(i,'你好!')
示例中的执行过程:
循环次数 | 内容 | 结果 |
---|---|---|
1 | ‘a’:print(i,‘你好!’) | a 你好! |
2 | ‘b’:print(i,‘你好!’) | b 你好! |
3 | ‘c’:print(i,‘你好!’) | b 你好! |
示例: 取nums中的元素并扩大10倍
nums = [10,86,45,13]
for i in nums:
print(i * 10)
3. range函数
range函数是创建一个等差数列
- range函数三种书写类型
类型 | 解释 | 示例 | 取值 |
---|---|---|---|
range(N) | 产生[0,N)的等差数列,差是1 | rang(5) | 0,1,2,3,4 |
range(M,N) | 产生[M,N)的等差数列,差是1 | rang(5,11) | 5,6,7,8,9,10 |
range(M,N,step) | 产生[M,N)的等差数列,差是step | range(3,16,3) | 3,6,9,12,15 |
注意: step 可以取负数,但此时的M>N
三、求和和统计个数的套路
1. 累计求和
求和套路步骤:
- 在循环外面定义个变量来保存最后的和 ( 变量默认值为0 )
- 通过循环依次获取所有需求和的对像
- 在循环中获取到一个求和的对象,就往保存和的变量中加一个数据(+=)
- 循环结束的时候保存和的变量中的数据就是最后的和
示例
- 求1+2+3+…+100的和
sum1 = 0
for i in range(1,101):
sum1 += i
print(sum1)
- 求100到200中所有偶数的和(包含100和200)
sum2 = 0
for i in range(100,201,2):
sum2 += i
print(sum2)
- 求scores中所有分数
sum3 = 0
scores = [89, 56, 78, 70]
for i in scores:
sum3 += i
print(sum3)
- 求100以内所有能被3整除但是不能被5整除的数的和
# 方法1:
sum4 = 0
for i in range(101):
if i % 3 == 0 and i % 5 != 0:
sum4 += i
print(sum4)
# 方法2:
sum4 = 0
for i in range(0,101,3):
if i % 5 != 0:
sum4 += i
print(sum4)
2. 统计个数
- 案例1: 统计scores中不及格的人数
scores = [89, 56, 78, 99, 48, 79, 30]
count = 0
for i in scores:
if i < 60:
count += 1
print(count)
- 案例2: 统计100 ~ 200中能被7整除的偶数
count1 = 0
for i in range(100,201,2):
if i % 7 == 0:
count1 += 1
print(count1)
四、while循环
1. while循环
- 语法:
while 条件语句:
循环体
- 执行过程:
不断判断条件语句是否为True,为True就执行循环体。直到条件语句为False,整个循环直接结束!
(先条件语句是否为True,为True就执行循环体,执行完循环体再判断条件条件语句是否为True,为True再执行循环体,…以此类推,直到条件语句为False,整个循环直接结束)
2. for循环和while循环的选择
基本原则: 能用for循环解决的问题都使用for循环,for循环解决不了的才使用while循环。
for解决不了的问题: 循环次数不确定(程序员在写代码的时候无法确定循环次数 - 次数由使用者决定)
案例: 提示用户输入密码,直到正确为止
pw = '123456'
value = None
while value != pw:
value = input('请输入密码:')
print('密码正确')
五、continue和break
注意continue和break是关键字,只能在循环中使用
1. continue
作用: 结束一次循环。
场景: 执行循环体的时候如果遇到了continue那么这次循环结束,直接进入下一次循环
下列代码只打印5行 ======
for i in range(5):
print('======')
continue
print('++++++')
print('------')
下列代码只打印1,3,5,7,9
for i in range(10):
if i % 2 == 0:
continue
print(i)
2. break
作用: 结束整个循环
场景: 执行循环体的时候如果遇到break,整个循环直接结束
下列代码只打印一行 ======
for i in range(5):
print('======')
break
print('++++++')
print('------')
下列代码打印结果 - 0
for x in range(10):
if x != 0:
break
print(x)
下列代码打印结果 - 0 1 2
for x in range(10):
if x == 3:
break
print(x)
3. 当while遇上break
- while循环使用的固定结构
while True:
需要重复执行的操作
if 循环结束条件:
break
- 示例:
输入密码:
pw = '123456'
while True:
value = input('请输入密码:')
if value == pw:
break
猜数字游戏(randint是导入一个随机数)
from random import randint
value = randint(0, 100)
count = 0
while True:
num = int(input('请输入一个数'))
if num < value:
print('小了')
elif num > value:
print('大了')
else:
print('回答正确')
break
六、循环的else
1. 完整的for结构
- 完整的for循环
for 变量 in 序列:
循环体
else:
循环体
- 完整的while循环
while 条件语句:
循环体
else:
代码段
else的作用:
- else的存在不会影响原来循环的执行
- 如果前边的循环是自然死亡的,在循环结束后会执行else中的代码段;如果循环是因为遇到break而结束的,else中的代码就不会执行
示例:打印5遍 ==== 一遍
****
for x in range(5):
print('====')
else:
print('****')
示例: 打印结果 - 0 1 2 3 4 15
sum1 = 0
for i in range(10):
sum1 += i
if i == 5:
break
print(i)
else:
print('!!!!')
print(sum1)