Day3
重点
for循环中的序列 - 可以是任何容器型数据类型的数据,例如:字符串、列表、字典、集合、迭代器、生成器、range
分支结构
python实现分支结构的工具只有:if
1.单分支结构
1)应用场景:如果 xxx 就 xxx(满足条件才执行某个操作,如果这个条件不满足这个操作就不执行
2)语法:
if 条件语句:
代码段
3)说明:
a. if - 关键字,固定写法
b. 条件语句 - 判断语句(可以是任何结构的表达式)
c. : - 固定写法
d. 代码段 - 结构上是和if保持一个缩进的一条或者多条语句(至少一条)
逻辑上代码段就是满足条件才会执行的代码
2.双分支结构
1)应用场景:如果xxx就xxx否则xxx(满足条件才执行某个操作,如果这个条件不满足就执行另一个操作
2)语法:
if 条件语句:
代码段1
else:
代码段2
# 案例:根据age值打印'成年'或者'未成年'
age = 8
if age < 18:
print('未成年')
else:
print('成年')
3.多分支结构
1)应用场景:如果xxx就xxx 如果xxx就xxx 如果xxx就xxx。。。。(根据不同条件做不同的事)
2)语法:
a.
if 条件语句1:
代码段1
if 条件语句2:
代码段2
if 条件语句3:
代码段3
…
b.
if 条件语句1
代码段1
elif 条件语句2
代码段2
elif 条件语句3
代码段3
…
else:
代码段N
…
#根据年龄值打印:幼儿(0, 3]、儿童(3, 12]、青少年[13, 18]、青年[19, 28]、壮年[29, 39]、中年[40, 65]、老年(>65)
age = 2
# 方法1:
if age <= 3:
print('幼儿')
elif age <= 12:
print('儿童')
elif age <= 18:
print('青少年')
elif age <= 28:
print('青年')
elif age <= 39:
print('壮年')
elif age <= 65:
print('中年')
else:
print('老年')
for循环
1)语法:
for 变量 in 序列:
循环体
2)说明
a. for - 关键字;固定写法
b. 变量 - 变量名(已经定义过的,或者没有定义过的变量都可以)
c. in - 关键字;固定写法
d. 序列 - 可以是任何容器型数据类型的数据,例如:字符串、列表、字典、集合、迭代器、生成器、range
e. : - 固定写法
f. 循环体 - 结构上循环体就是和for保存一个缩进1一条或者多条语句(至少一句);
逻辑上循环体就是需要重复执行的代码
3)执行过程
让变量去序列中取值,一个一个的取,取完为止;每取一个值就执行一次循环体。
如果要控制for循环的循环次数,只需要控制序列中元素的个数。
for x in 'mak'
print(x,'hello world')
#m hello world
#a hello world
#k hello world
4)range函数 - 创建等差数列的函数
- range(N) - 产生[0,N)的等差数列,差是1;range(5): 0、1、2、3、4
for x in range(5):
print(x)
- range(N,M) - 产生[M,N)的等差数列,差是1;range(5,10): 5、6、7、8、9
for x in range(5,10):
print(x)
- range(N,M,step) - 产生[M,N)的等差数列,差是step;range(1,25,5):1、6、11、16、21
range(6,1,-1):6、5、4、3、2
for x in (6,1,-1):
print(x)
range(M,N,step)
M:对应等差数列的首项,默认是0
N:对应等差数列的尾项(但是和尾项不相等)
step:差,默认是1
5)应用
1.累计求和
套路:
a.定义变量保存最后的和,变量的默认值是0
b.用循环依次获取所有需要求和的数据
c.在循环体中获取到一个需要求和的数据就用保存最后的变量加上这个数据
#用循环求1+2+3+.....+100的和
s = 0
for i in range(1, 101):
s = i + s
#i = 100 无论i在这个地方取值多少,最后用的重新取值循环序列的值
#i +=1
print(s)
# 求scores所有及格学生的总分
scores = [98, 34, 78, 89, 23, 56]
total_score = 0
for x in scores:
if x >= 60:
total_score += x
print(total_score)
# 练习3:求100以内所有能被3整除但是不能被2整除的数的和
#方法一
s = 0
for i in range(100):
if i % 3 == 0 and i % 2 != 0:
s = s + i
print(s)
#方法二 3 6 9 12 15 18....99
sum1 = 0
for x in range(0, 100, 3):
if x % 2 != 0:
sum1 += x
print(sum1)
2.统计个数
a.定义变量保存最后的个数,默认值0
b.通过循环获取统计对象
c.获得一个统计对象的个数就加一
# 根据scores统计不及格学生的人数
scores = [98, 34, 78, 89, 78, 23, 56]
count = 0
for x in scores:
if x < 60:
count += 1
print(count)
# 练习:统计1000以内能被3整除的数的个数(不包括0)
#方法一
count = 0
for x in range(1, 1000):
if x % 3 == 0:
count += 1
print(count)
#方法二
count = 0
for x in range(3, 1000, 3):
count += 1
print(count)
while循环
1.语法:
while 条件语句:
代码段(循环体)
2.执行过程:
先判断条件语句是否成立,如果成立就执行循环体,执行完循环再判断条件语句是否成立,成立就再执行循环体
条件语句里的条件是True
1.
#打印1、2、3、4、5、....10
num = 1
while num <= 10:
print(num)
num += 1
#打印10个hello world
count = 0
while count < 10:
print('hello world')
count += 1
2. for循环和while的选择
1)原则:能用for循环的时候尽量用for,for解决不了的问题才考虑使用while循环。
2)for循环能够解决的问题:循环次数确定的时候
3)for循环不能解决的问题:
a.死循环
b.循环次数不确定(程序员在写代码的时候无法得知循环的次数 - 这个循环的次数由使用者行为来决定)
# 写程序提示用户输入密码,直到密码输入正确为止
# password=123456
pw= '123456'
value = None
while value != pw: # 输入的密码不等于系统保存的密码时
value = input('请输入密码:')
print('登录成功')
3.有了break的while循环:
while True:
需要重复执行操作
if 循环结束的条件:
break
# 写程序提示用户输入密码,直到密码输入正确为止
pw = '13244'
while True:
value = input('请输入密码:')
if pw == value:
break
循环关键字:continue、break
continue和break只能在循环体中使用
1. continue
作用:结束一次循环(结束当次循环) - 执行循环体的时候如果遇到了continue,那么这次循环直接结束。
for x in range(5):
print('+++++')
continue # 打印5行+++++ 不再执行后面的语句,直接从for里面再次
print('-----')
print('*****')
for x in range(10):
if x % 2 == 0: #0 2 4 6 8整除2,continue,不再执行print语句,回到for循环继续
continue
print(x) #1 3 5 7 9不整除2,则不执行continue,执行print语句,输出1 3 5 7 9
2. break
作用:结束整个循环 - 执行循环体的时候遇到break整个循环直接结束
for x in range(10):
if x > 4: # 0 1 2 3 4 在if语句中,为False,则不会break,则print出
break
print(x)