1. 分支结构
Python实现分支结构的工具只有:if
1.1 单分支结构
1.1.1 应用场景
如果xxx就xxx(满足条件才执行某个操作,如果这个条件不满足这个操作就不执行)
1.1.2 语法
if 条件语句:
代码段
1.1.3 说明
a. if —— 关键字,固定写法
b.条件语句 —— 判断语句(可以是任何有结果的表达式)
c. “ : ” —— 固定写法(注意:必须是英文输入法的冒号)
d.代码段 —— 结构上是和if保持一个缩进的一条或者多条语句(至少一条);一个tab键或者4个空格
逻辑上代码段就是满足条件才会执行的代码
# 案例1:如果age大于等于18就打印成年
if age >= 18:
print("成年")
# 案例2:如果year对应的是闰年,就打印闰年
year = 1998
if (year % 400 == 0 or (year % 100 != 0 and year % 4 ==0)):
print("闰年")
# 练习1:根据num的值打印'偶数'
num = 209
if num % 2 == 0:
print("打印偶数")
# 练习2:如果num不能被3整除就让num加1
num = 23
if num % 3 != 0:
num += 1
print(num)
1.2 双分支结构
1.2.1 应用场景
如果xxx就xxx否则就xxx(满足条件执行某个操作,条件不满足的时候执行另外的一个操作)
1.2.2 语法
if 条件语句:
代码段1(满足条件需要执行的代码)
else:
代码段2(条件不满足的时候执行的代码)
# 案例:根据age值打印“成年”或者“未成年”
age = 8
if age >= 18:
print("成年")
else:
print("未成年")
#案例:判断是基数还是偶数
num = int(input("请输入一个数字:"))
print(type(num))
if num % 2 == 0:
print(str(num) + "是偶数")
else:
print(str(num) + "是基数")
1.3 多分支结构
1.3.1 应用场景
如果xxx就xxx,如果xxx就xxx,如果xxx就xxx,···(根据不同的条件做不同的事情)
1.3.2 语法
语法1:
if 条件语句1:
代码段1
if 条件语句2:
代码段2
if 条件语句3:
代码段3
···
语法2:——多个条件之间存在:其中一个条件成立,别的条件一定不会成立的关系
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 = 34
# 方法1:
if age <= 3:
print("幼儿")
if 3 < age <=12:
print("儿童")
if 12 < age <= 18:
print('青少年')
if 18 < age <= 28:
print('青年')
if 28 < age <= 39:
print('壮年')
if 39 < age <= 65:
print('中老年')
if age > 65:
print('老年')
# 方法2:
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('老年')
# 练习:根据分数打等级:A(>=90)、B[80,90)、C[60,80)、D(<60)
grade = int(input('请输入你的成绩:'))
if grade >= 90:
print('A')
elif grade >= 80:
print('B')
elif grade >= 60:
print('C')
else:
print('D')
2. 循环结构
2.1 for循环
2.1.1 语法
for 变量 in 序列:
循环体
2.1.2 说明
a.for —— 关键字;固定写法
b.变量 —— 变量名(已经定义过的,或者没有定义过的变量都可以)
c.in —— 关键字;固定写法
d.序列 —— 可以是任何容器型数据类型的数据,例如:字符串、列表、元组、字典、集合、迭代器、生成器、range
e. : —— 固定写法
f.循环体 —— 结构上循环体就是和for保持一个缩进的一条或者多条语句(至少一条);
逻辑上循环体就是需要重复执行的代码
2.1.3 执行过程
让变量取序列找那个取值,一个一个的取,取完为止;每取一个值就执行一次循环体。
如果要控制for循环的次数,只需要控制序列中元素的个数。
# 思考:控制’hello word‘打印100遍
for x in range(100):
print('hello word!')
2.2 range函数-创建等差数列的函数
a.range(N) —— 产生[0,N)的等差数列,差是1;
b.range(M,N) —— 产生[M,N)的等差数列,差是1
c.range(M,N,step) —— 产生[M,N)的等差数列,差是step;
range(M,N,step) M: 对应等差数列的首项,默认是0 ,N:默认是等差数列的尾项(但是和尾项不相等),step:差,默认是1
# 练习1:使用range创建等差数列:0 1 2 3 4 5 6 7
for x in range(8):
print(x)
# 练习2:使用range创建等差数列:0 10 20 30 40
for x in range(0,41,10):
print(x)
# 练习3:使用range创建等差数列:5 10 15 25
for x in range(5,26,5):
print(x)
# 练习4:使用range创建等差数列:25 20 15 5
for x in range(25,4,-5):
print(x)
# 练习5:使用range创建等差数列:-1 0 1 2
for x in range(-1,3,1):
print(x)
2.3 for循环的应用
2.3.1 累积求和
"""
套路:
1)定义变量保存最后的和,变量的默认值是0
2)用循环依次获取所有需要求和的数据
3)在循环体中获取到一个需要求和的数据就用保存最后的变量加上这个数据
"""
# 案例:用循环求1+2+3+....+100的和
sum1 = 0
for x in range(1,101):
sum1 += x
print(sum1)
# 案例2:求scores中所有分数的和
sum2 = 0
scores = [98, 34, 78, 89, 78, 23, 56]
for x in scores:
sum2 += x
print(sum2)
# 练习1:计算1+3+5+7+···+99
sum3 = 0
for x in range(1,100,2):
sum3 += x
print(sum3)
# 练习2:求scores所有及格学生的总分
sum4 = 0
scores = [98, 34, 78, 89, 78, 23, 56]
for x in scores:
if x >= 60:
sum4 += x
print(sum4)
# 练习3:求100以内所有能被3整除但是不能被2整除的数的和
# 方法1:
sum5 = 0
for x in range(0,100):
if x % 3 == 0 and x % 2 != 0:
sum5 += x
print(sum5)
# 3 6 9 12 15···99
# 方法2:
sum5 = 0
for x in range(3,100,3):
if x % 2 != 0:
sum5 += x
print(sum5)
2.3.2 统计个数
"""
1)定义变量保存最后的个数,默认值0
2)通过循环获取统计对象
3)获得一个统计对象个数就加1
"""
#根据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)
# 方法1:
count = 0
for x in range(1,1000):
if x % 3 == 0:
count += 1
print(count)
# 方法2:
count = 0
for x in range(3,1000,3):
count += 1
print(count)
2.4 while循环
2.4.1 while循环
"""
1)语法:
while 条件语句:
代码段(循环体)
2)执行过程:
先判断条件语句是否成立,如果成立就执行循环体,执行完循环体在判断条件语句是否成立,成立就在执行循环体···以此类推,直到条件不成立循环就结束。
"""
#案例1: 打印1.2.3.4.5.6···10
num = 1
while 1 <= num <= 10:
print(num)
num += 1
for x in range(1,11):
print(x)
# 案例2:打印10个’hello word!‘
x = 0
while x < 10:
print("hello word")
x += 1
for x in range(1,11):
print("hello word")
2.4.2 for循环和while循环的选择
"""
1)原则:能用for循环的时候尽量用for,for解决不了的问题才考虑使用while循环。
2)for循环能够解决的问题:循环次数确定的时候
3)for循环不能解决的问题:
a.死循环
b.循环次数不确定(程序员在写代码的时候无法得知循环的次数 - 这个循环的次数由使用者行为来决定
"""
# 案例:写程序提示用户输入密码,直到密码输入正确为止
pw = '123abc' #系统密码
value = None #输入的密码
while value != pw:
value = input('请输入密码:')
2.4.3 有了break的while的循环
"""
while True:
需要重复执行操作
if 循环结束的条件:
break
"""
pw = '124'
while True:
value = input('请输入密码:')
if pw == value:
break
2.5 循环关键字
2.5.1 continue关键字
"""
作用:结束一次循环(结束当次循环) - 执行循环体时候如果遇到了continue,那么这次循环直接结束。
"""
for x in range(5):
print('OOOOOO')
continue
print('------')
for x in range(10):
if x % 2 == 0:
continue
print(x)
2.5.2 break关键字
"""
作用:结束整个循环 - 执行循环体的时候如果遇到break整个循环直接结束
"""
for x in range(5):
print('OOOOOO')
break
print('------')
for x in range(10):
if x > 4:
break
print(x)
2.5.3 循环的else
1.完整的循环结构
1)完整的for循环
for 变量 in 序列:
循环体
else:
代码段
2)完整的while循环
while 条件语句:
循环体
else:
代码段
2.循环else的作用:
1)else的存在不影响原来循环的执行
2)如果前面的循环是正常结束(for把数据取完了导致循环结束;while循环的条件不成立导致循环结束)的,else后面的代码段会在循环结束后执行;如果前面的循环是因为遇到break而结束的,循环结束后不会执行else后面的代码段。
for x in range(5):
print(x, 'hello world!')
if x == 2:
break
else:
print(100)
# 2.判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
num = 7
for x in range(2, num):
if num % x == 0:
print(num, '不是素数')
break
else:
print(num, '是素数')
# 练习:判断字符串是否是纯字母字符串
str1 = 'hsjskHJKs'
for x in str1:
if not ('a' <= x <= 'z' or 'A' <= x <= 'Z'):
print(str1, '不是纯字母字符串')
break
else:
print(str1, '是纯字母字符串')