day3 分支和循环
流程控制
# 流程控制 - 代码的执行数据
"""
根据控制代码执行方式的不同,将流程控制分为三种:
1) 顺序结构(默认)- 代码按顺序执行 从上往下按顺序执行,并且每条语句只执行一次
2)分析结构 - 根据条件选择执行代码
3)循环结构(for while) 代码重复执行 代码只写一遍 执行多次
"""
顺序结构代码
#顺序结构代码
a = 10
print(a)
print('111')
print("222")
# 执行结果
# 10
分支结构
# 分支结构
age = 34
print("成年")
print("未成年")
if age >=18:
print("成年")
else:
print("未成你")
循环结构
# 循环体
print("hello world")
for x in range(10):
print("hello world!")
分支结构
# 1.if单分支结构 - 如果xxx就xxx
"""
语法:
if 条件语句:
代码段
说明:
1)if 关键字:固定写法
2)条件语句 可以是任何有结果得表达式 《例如 :具体数据,已经赋值过得变量,有结果得某种
运算。
3) 固定写法: 必须是英文输入法下面得冒号:
4) 代码段 - 结构上就是和if保持一个缩进1条或者多条语法(至少1条)
# 1)条件语句可以式任何有结果的表达式
if 19:
print("满足条件才执行的代码")
if 'abc':
print("满足条件才执行的代码")
if 10 + 20:
print("满足条件才执行的代码")
# if a=10: XXXX
# if age >= 18: X
# print("")
1)条件语句可以是任何结果的表达式 记得缩进
age = 15
if age > 18:
print("abc0")
print("----")
print(1023)
# 练习1:根据年龄值打印’‘成年
age = 25
if age >= 18:
print("成年")
if age < 18:
print("未成年")
# 根据num能被4整除就打印“4的倍数”
num = 24
if (num % 4 == 0):
print("4的倍数")
# num = eval(input("请输入一个整数"))
# T = type(num)
# print(T)
2).if双支结构 - 如果xxx就xxx否则就xxx
if 条件语句:
代码段1
else:
代码段2
# 练习1:根据num的奇偶性打印“奇数” 或者 “偶数”
num = 31
if num % 2 == 0:
print("偶数")
else:
print("奇数")
# 练习2:根据year对应的年份打印“平年“或者”闰年“
year = 2000
if ((year % 4 == 0 and year % 100 != 0) or year % 400 == 0):
print("闰年")
else:
print("平年")
# 补充:当条件类型不是布尔值,条件成立还是不成立看条件语句的结果转换成布尔后市True 还是False
# 布尔类型转换 - 所有的类型的数据都可以转换程布尔, 转换的时候所有的零值和空值
# 会转换程False ,其他都是True
print(bool(0), bool(0.0), bool(None), bool(''), bool([]), bool({}))
# 数列 列表 字典 集合 元组
print(bool(23), bool(-231), bool("sdf"))
# 练习3:如果字符串str1 是空串就打印"空字符串"否则打印"非空字符串"
str1 = ""
# 方法1:
if str1 == "":
print("空字符串")
else:
print("非空字符串")
# 方法2:
if str1:
print("非空字符串")
else:
print("空字符串")
if not str1:
print("空字符串")
else:
print("非空字符串")
3)if多分支结构 - 根据不同条件做不同的事情,如果xxx就xxx,
# 方式1:
# if条件语句1:
# 代码段1
# if条件语句2:
# 代码段2:
# if条件语句3:
# 代码段3:
# 方法1
# 如果考试100分 -买车,如果90多分 - 买电脑,如果80多分,买鞋,如果低于80分打死
score = 82
if score == 100:
print("买车")
if 90 <= score <= 100:
print("买电脑")
if 80 <= score <= 90:
print("买鞋")
if score < 80:
print("打死")
# 这种一直会执行判断 效率会变慢
# 方法2
"""
if 条件语句1:
代码段1
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3
...
else:
代码段N
"""
if score == 100:
print("买车")
elif 90 <= score < 100:
print("买电脑")
elif 80 <= score < 90:
print("买鞋")
elif score < 80:
print("打死")
# 这种一符合条件就马上退出
# 练习:根据年龄范围打印:儿童,少年,青年,中年,老年
# 幼年 0-3岁, 少年4017岁,青年18-38岁,中年39069 -老年 70岁以上
age = 56
if 0 <= age <= 3:
print("幼年")
elif 3 < age <= 17:
print("少年")
elif 17 < age <= 38:
print("青年")
elif 38 < age <= 69:
print("中年")
else:
print("老年")
#优化结构
age = 56
if age <= 3:
print("幼儿")
elif age <= 17:
print("少年")
elif age <= 38:
print("青年")
elif age <= 69:
print("中年")
else:
print("老年")
4)if嵌套
# 练习:根据num的值打印"偶数","奇数"和4的倍数:
# 例如 1-> "奇数" 2->"偶数" 16->"偶数","4的倍数"
num = 23
if num % 2 == 1: # if num % 2
print("奇数")
else:
print("偶数")
if num % 4 == 0:
print("4的倍数")
循环结构
1)for循环 - 让代码重复执行
"""
print("hello world!")
# 1.for循环 - 让代码重复执行
"""
for 变量 i 序列:
循环体
说明:
1) for , in - 关键字: 固定写
2) 变量 - 变量名
3) 序列 - 容器型数据类型的数据,
例如:字符串,列表,字典,元组,集合,迭代器,生成器,range
4) : -固定写法
5) 循环体 - 结构上,循环体就是和for保持一个缩进的一条或者多条语句(至少1条);
逻辑上,循环体中的代码就是需要重复执行的代码
执行过程:
让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环任务.
for循环次数和序 列中元素的个数有关
"""
# 变量 序列
for x in 'abc':
print(x, "hello world!")
# 结果
# a hello world!
# b hello world!
# c hello world!
2)
"range 是等差数列"
"1,2,3,4,5;" "2,4,6,8,10"
"""
1)rang(N) - 产生[0,n)的等差数列,差是1:例如:range(3
- 0 1,2, range(10) - 0,1,2,3,4,5,6,7,8,9
2)range(M,N) ,差是1 :例如:range(2,8) - 2,3,4,5,6,7
3)range (M,N,step) - 产生[M,N)的等差序列,差事step;例如 ;range(1,10,3) - 1 ,4 ,7
""
print("=======")
for i in range(5):
print(i)
for x in range(9):
print("x1:", x)
for x in range(2, 8):
print("x2", x)
for x in range(-5, 5):
print("x3", x)
for x in range(1, 10, 3):
print("x4", x)
# 练习 :利用range函数产生一个数字序列: -1,1,3,5,7
for i in range(-1, 8, 2):
print(i)
# 练习:利用range函数产生一个数字序列:0,1,2,3,4,5,6,7,8,9,10
for i in range(11):
print(i)
# 练习:利用range函数产生一个数字序列:0,3,6,9,12,15
for i in range(0, 16, 3):
print(i)
# 产生: 15,13,11,9,7,
# M:15 N:6 step:-2
for x in range(15, 6, -2):
print("x9", x)
实战
# 实战
# 1)求和问题
# 练习1:用代码计算:1+2+3+ ...+ 100
# 第一步:定义一个变量保存最后的和,初始值是0
num = 0
# 通过for循环获取到需要求和的每个数据:1,2,3,4,5,...,100
for i in range(1, 101):
# 第三步:每取到一个需要求和的数据,就往保存最后的和的变量中加一个
num += i
print(num)
# 2)练习2:求nums种所有元素的和
nums = [10, 29, 30, 40]
# for x in [10, 29, 30, 40]:
# print(x)
num = 0
for i in nums:
num += i
print(num)
# 3)练习:求100以内所有奇数的和
# 1+3+5+7+9+11+...+99
num = 0
for i in range(1, 100, 2):
num += i
print(num)
# 4)练习:求nums中所有的奇数的和
s = 0
# 29+25+1
nums = [10, 29, 30, 25, 40, 8, 1]
for i in nums:
if i % 2:
s += i
print(s)
# 5)计算100以为能被3整除或者能被5整数的数的和
s = 0
for i in range(100):
if i % 3 == 0 or i % 5 == 0:
s += i
print(s)
2)统计个数
# 练习1:统计100以内偶数的个数
# 第一步:定义变量保存最后的个数,初始值是0
count = 0
# 第二部:用for循环获取所有的统计对象
for i in range(2, 99, 2):
# 渠道一个统计对象,保存个数的变量就在原来基础上加1
count += 1
print(count)
# 练习2 统计100以内能被3整除或者能被4整除的数的个数
# 3,4,6,8,9,12,15,16,...
count = 0
for i in range(1, 100):
if i % 3 == 0 or x % 4 == 0:
count += 1
print(count)
#
# a = int(input())
# b = int(input())
# if (a - b) % 2:
# print(a - b)
# else:
# print("a-b的结果不是奇数")