if
多分支结构:if-elif-else
应用场景:根据不同的条件执行不同的操作。
语法:只要有一个条件满足,其他的条件下都不再判断。
if 条件语句1:
代码段2
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3
...
else:
代码段n
执行过程:
从上往下依次判断条件语句的结果是否为True
,如果为True
就执行这个if
或者elif
对应的代码段,执行完if再判断后面的条件,也不再执行后面的代码段。
else
后面的代码只有在前面所有的条件都不满足的时候才会执行。
# 判断一个人是否健康
height = 1.76
weight = 98
bmi = weight / (height ** 2)
if 18.5 <= bmi <= 24.9:
print('正常')
elif bmi < 18.5:
print('偏轻')
else:
print('偏重')
练习:输入成绩,如果输入的
成绩在90分以上(含90分)输出A;
80分-90分(不含90分)输出B;
70分-80分(不含80分)输出C;
60分-70分(不含70分)输出D;
60分以下输出E。
grade = float(input('请输入成绩:'))
if grade < 0 or grade > 100:
print('输入错误')
elif grade >= 90:
print('A')
elif grade >= 80:
print('B')
elif grade >= 70:
print('C')
elif grade >= 60:
print('D')
else:
print('E')
if
嵌套练习:输入一个数,如果输入的数是偶数就打印’偶数’, 否则打印奇数。如果这个数能被4整除,还要打印’4的倍数’
num = int(input('输入一个整数:'))
if num % 2 == 0:
print('偶数')
if num % 4 == 0:
print('4的倍数')
else:
print('奇数')
for
、while
需求:打印亚索的台词10遍
# 方法一
print('死亡如风,常伴吾身')
print('死亡如风,常伴吾身')
print('死亡如风,常伴吾身')
print('死亡如风,常伴吾身')
print('死亡如风,常伴吾身')
print('死亡如风,常伴吾身')
print('死亡如风,常伴吾身')
print('死亡如风,常伴吾身')
print('死亡如风,常伴吾身')
print('死亡如风,常伴吾身') #10次
# 方法二
message = '死亡如风,常伴吾身'
print(message)
print(message)
print(message)
print(message)
print(message)
print(message)
print(message)
print(message)
print(message)
print(message) # 10次
# 方法三
message = '死亡如风,常伴吾身'
for x in range(10):
print(message)
从上面的代码来看,用以前学习的方法打印一句台词多次,十分的复杂,而用for
循环代码就十分的简单。
所以不难看出,for
循环的作用就是让代码执行重复执行,while
亦是如此。
有一种写代码原则:DRY原则(Don’t Repeat Yourself)
for
循环语法:
for 变量 in 序列:
循环体
说明:
for、in、冒号 — 固定写法。
变量 — 变量名(程序员随便命名)。
序列 — 容器型数据类型的数据,例如:字符串、列表、元组、集合、字典、迭代器、生成器、range等。循环体 — 和for保持一个缩进的一条或者多条语句;需要重复执行的代码。
执行过程
让变量去序列中取值,一个一个的取,取完为止,每取一个值执行一次循环体。
for x in 'abcd':
print('hello world!')
# 结果是打印四次‘hello world!’,因为‘abcd’的长度为4
# 第一次循环:x = 'a' -> print('hello world!')
# 第二次循环:x = 'b' -> print('hello world!')
# 第三次循环:x = 'c' -> print('hello world!')
# 第四次循环:x = 'd' -> print('hello world!')
# 第五次循环:x取不到值,循环结束
思考:‘++++’打印100次?
把字符串作为序列就很麻烦,这个时候可以使用range。
range
函数range(N)
— 产生[0,N)
的数字范围,里面包含:0,1,2,3,...N-1
(N>0)print(range(10)) #range(0,10)
for x in range(10):
print(x)
# 所以刚才的思考问题就可以这样来解决
str = '++++'
for x in range(100):
print('++++')
rang(M,N)
— 产生[M,N)
的数字范围,里面包含:M,M+1,M+2,...,N-1
(M# 产生数字范围1~100并且打印出来
for x in range(1,101):
print(x)
# 产生数字范围-100~-1并且打印出来
for y in range(-100,0):
print(y)
range(M,N,step)
— 从M
开始每次加step
产生下一个数,N
取不到# 写程序产生数字:
# -1, -3, -5, -7, -9
# 5, 4, 3, 2, 1
for x in range(-1, -10, -2):
print(x)
for y in range(5, 0, -1):
print(y)
练习:计算1+2+3+…+100的和
sum1 = 0
for x in range(1, 101):
sum1 += x
print(sum1)
while
循环语法
while 条件语句:
代码段(循环体)
说明:
while、冒号 — 固定写法
条件语句 — 任何有结果的表达式都可以(赋值语句不行)
循环体 — 和while保持一个缩进的一条或多条语句;需要重复执行的代码
执行过程
不断判断条件语句的结果是否为True
,为True
就执行循环体,然后再判断;为False
循环直接结束。
num = 0
while num < 5:
print('hello world!')
num += 1
for
循环和while
循环的选择 循环次数确定就是用for
循环;循环次数不确定就使用while
循环。
练习:不断输入数据,直到输入的内容是0为止
num = int(input('请输入数字:'))
while num:
num = int(input('请输入数字:'))
continue
、break
continue
只能出现在循环体里面。
continue
的作用:直接结束当次循环,直接进入下一次循环的判断
for x in range(10):
print('hello!')
continue
print('Bye!') #不会执行,但仍会循环
break
只能出现在循环体里面。
break
的作用:直接结束整个循环。
for x in range(10):
print('hello!')
break
print('Bye!') #不会执行,循环结束
#################################################
# 第一步:while True
while True:
# 第二步:描述清楚需要重复执行的操作
value = input('请输入数字:')
# 第三步:添加循环结束条件
if value == '0':
break
练习:使用while循环打印1~10
num = 1
while True:
if num > 10:
break
print(num)
num += 1
else
for
循环for 变量 in 序列:
循环体
else:
代码段
while
循环:while 条件语句:
代码段(循环体)
else:
代码段
else
的存在不影响原来循环的执行。当循环自然死亡,
else
后面的代码段会执行。如果循环是因为遇到break
二结束的,else
后面的代码就不会执行
for x in range(3):
print(x)
else:
print('else中的代码!') # 会执行
####################################
for x in range(3):
print(x)
if x == 2:
break
else:
print('else中的代码!') # 不会执行