day4 - 流程控制
根据代码执行顺序的不同,可以将代码分成3种结构
1)顺序结构(默认)
代码从上到下依次执行
2)分支结构(if) - 根据条件选择执行或者不执行某些代码
(1) if 单分支
语法: if 条件语句:
执行语句
流程:若表达式成立(True),就执行结构中的执行语句
案例1:根据num的值打印’偶数’(如果num的值是偶数就打印’偶数’)
num = 350
if num % 2 == 0:
print('偶数')
练习:如果year对应的年份是闰年就打印’闰年
year = 2000
if (year % 4 == 0 and year % 100 != 0) or (year % 400) == 0:
print('闰年')
(2) if 双分支
语法:
if 条件语法:
代码段1(满足条件会执行的代码)
else:
代码段2(条件不成立会执行的代码)
案例1:根据num的值打印’偶数’或者’奇数’
num = 25
if num % 2 == 0:
print('偶数')
else:
print('奇数')
练习:根据year的值打印’闰年’或者’平年’
year = 2000
if (year % 4 == 0 and year % 100 != 0) or (year % 400) == 0:
print('闰年')
else:
print('平年')
(3) if 多分支结构
方法1: - 根据不同条件做不同的事情,其中一个条件成立的时候另外的条件也可能成立
if 条件1:
代码段1
if 条件2:
代码段2
if 条件3:
代码段3
…
(每个条件都会判断,成立的时候指定对应的代码段)
方法2: - 根据不同条件做不同的事情,其中一个条件成立的时候另外的条件绝对不会成立
if 条件1:
代码段1
elif 条件2:
代码段2
elif 条件3:
代码段3
…
else:
代码段N
案例:打印指定的百分制分数对应的等级:>=90 - A; [80, 90) - B; [60, 80) - C; <60 - D
score = 98
if score >= 90:
print('A')
if 80 <= score < 90:
print('B')
if 60 <= score < 80:
print('C')
if score < 60:
print('D')
3)循环结构(for、while) - 让代码重复执行(代码只写一遍,重复执行多次)
(1)for 循环
for 循环变量 in range(start, end):
语句1
语句2
语句3
案例 1:
for i in range(1, 101):
print(i, 'hello, world!')
print(i, 'goodbye, world!')
案例 2:输出如下所示的图案,range(1, 10, 2) - 1~9的范围,每次取值在原来的基础上+2
*
***
*****
*******
*********
for i in range(1, 10, 2):
print('*' * i)
案例 3:输出的数字是它们的平方和立方
for i in range(1, 4):
# 格式化输出
#方法一
print('%d\t%d\t%d' % (i, i ** 2, i ** 3))
#方法二
print(f'{i}\t{i ** 2}\t{i ** 3}')
案例 4:找出 100 到 999 之间的水仙花数
a
b
c
=
a
3
+
b
3
+
c
3
abc = a^3+b^3+c^3
abc=a3+b3+c3
for i in range(100, 1000):
a = i // 100
b = i % 100 // 10
c = i % 10
if i == a ** 3 + b ** 3 + c ** 3:
print(i)
案例 5:输入一个大于 1 的正整数,判断它的是不是质数
假设这个数是N,如果是质数,那么在2到N-1之间应该没有它的因子。
num = int(input('num = '))
# 假设输入的num是一个质数将布尔值赋值为True
is_prime = True
for i in range(2, num):
# 如果在2~N-1之间找到了num的因子
if num % i == 0:
# 不是质数就将对应的布尔值赋值为False
is_prime = False
break
print(is_prime)
if is_prime:
print(f'{num}是质数.')
else:
print(f'{num}不是质数.')
(2)while 循环
语法
while 循环条件(产生布尔值的表达式):
语句1
语句2
语句3
条件如果成立,就执行循环体中的代码;条件不成立,离开循环执行后续代码
注意:在写while循环的时候,如果循环条件一直成立,循环就成了死循环!!!
循环次数在一开始就能确定下来,我们可以直接构造一个范围使用for循环;
如果循环次数不能确定,需要通过条件进行控制,我们就使用while循环。
案例 1:求 1-100 的和
total, i = 0, 1
while i <= 100:
total += i
i += 1
print(total)
练习:猜数字小游戏
import random
answer = random.randrange(1, 101)
counter = 0
while True:
counter += 1
thy_answer = int(input('请输入: '))
if thy_answer > answer:
print('小一点')
elif thy_answer < answer:
print('大一点')
else:
print('恭喜你,猜中了')
break
if counter > 7:
print('温馨提示:智商余额不足!!!')
print('游戏结束')