day4-分支和循环
一、流程控制 - 控制代码的执行顺序
根据代码的执行顺序的不同,可以将代码分成3种结果
1、顺序结构(默认)
代码从上往下按顺序一条一条的执行(每个结构只执行一次)
print(1)
print('hello world!')
2、分支结构(if)
(1)if单分支
- 语法
'''
if 条件语句:
代码段
'''
- 案例:根据num的值打印’偶数‘(如果num的值是偶数就打印’偶数‘)
num = 22
if num % 2 == 0:
print('偶数')
(2)if双分支
- 语法:
'''
if 条件语句:
代码段1:
else:
代码段2:
'''
- 案例:根据num的值打印‘偶数’还是‘奇数’
num = 23
if num % 2 == 0:
print('偶数')
else:
print('奇数')
(3)if多分支结构
- 语法
'''
方法一:根据不同的条件做不同的事情,其中一个条件成立的时候另外的条件也有可能成立
if 条件1:
代码段1
if 条件2:
代码段2
if 条件3:
代码段3
...
(注意:每个条件都会判断,成立的时候指定对应的代码段)
方法二:根据不同的条件做不同的条件,其中一个条件成立的时候另外的条件绝对不可能成立
if 条件1:
代码段1
elif 条件2:
代码段2
elif 条件3:
代码段3
...
else:
代码段n
(注意:从前往后判断条件,执行第一个满足条件对应的代码段,一旦每个条件成立,后面的条件不会再判断)
'''
- 案例:印指定的百分制分数对应的等级:>=90 A;[80,90) B;[60,80) C;<60 D
score = 70
if score >= 90:
print('A')
elif score >=80:
print('B')
elif score >=60:
print('C')
else:
print('D')
3、循环结构(for,while)
(1)for循环
- 语法
'''
for 循环变量 in range(start,end) (注意:end的值取不到)
语句1
语句2
语句3
'''
- 案例1
# range(10) - 0~9的取值范围
# range(0,10) - 0~9的取值范围
# range(0,10,2) - 0~9的范围,但循环变量每次在原有的取值上+2
for i in range(1,10,2):
print(i,end=' ') # 1,3,5,7,9
- 案例2:求1到100的和,1到100奇数的和
total = 0
for i in range(1,101):
total += i
print(total) # 5050
#奇数的和
for i in range(1, 101, 2):
total += i
print(total)
- 案例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}')
'''
1 1 1
2 4 8
3 9 27
'''
- 案例4:找出100到999之间的水仙花数(水仙花数:abc=a3+b3+c^3)
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):
if num % i == 0:
is_prime = False # 不是质数就将对应的布尔值赋值为False
break # 满足条件后可以提前终止循环
# True就是质数
if is_prime:
print(f'{num}是质数')
else:
print(f'{num}不是质数')
- 案例6:输出100以内的质数
for num in range(1, 101):
is_prime = True
for i in range(2, num):
if num % i == 0:
is_prime = False
break
if is_prime:
print(num)
(2)while循环
- 语法
'''
while 循环条件(产生布尔值的表达式):
语句1
语句2
语句3
(条件如果成立,就执行循环体中的代码;条件如果不成立,离开循环后执行后续代码)
注意:在写while循环的时候,如果循环一直成立,则会进入死循环
终端:Ctrl+C - 终止进程的执行
'''
- 案例:求1-100的和
total = 0
i = 1
while i <= 100: # 用条件来控制循环是否继续还是结束掉循环
total += i
i += 1
print(total)
注意:循环次数在一开始就能确定下来,我们可以直接构造一个范围使用for循环
如果循环次数不能确定,需要通过条件进行控制,我们就使用while循环
- 练习:猜数字小游戏
游戏规则:计算机产生一个1-100的随机数让人来猜,人输入自己的数字,计算机会提示’大一点‘,’小一点‘,‘猜中了’,如果没有猜中游戏继续。如果猜中了游戏结束,如果猜了7次以上,计算机提示’智商拙计‘。
# 产生一个随机数
import random
answer = random.randrange(1, 101)
counter = 0 # 计数器,计数猜的次数
# 因为不知道需要猜多少次,所以用while循环
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('游戏结束')