流程控制
Date: 2019-05-27
Author: Sun
1.条件语句
Python中提供的条件语句:if else语句,switch语句
if else语句
1.1 单一分支
if 条件表达式:
【代码块】
【后续代码】
执行流程:如果条件表达式为真,则执行【代码块】。否则不执行,直接执行if语句后面的【后续代码】
eg:
# -*- coding: utf-8 -*-
__author__ = 'sun'
__date__ = '2019/5/27 10:43'
number = int(input("Enter a number: "))
if number < 100:
print("The number is less than 100")
print("process finish!")
1.2 双向分支
if 条件表达式:
【语句块A】
else:
【语句块B】
【后续代码】
执行流程:如果条件表达式为真,执行【语句块A】然后执行【后续代码】,否则执行【语句块B】,然后再执行【后续代码】,二选一,不可能既执行A有执行B
eg:
# -*- coding: utf-8 -*-
__author__ = 'sun'
__date__ = '2019/5/27 10:43'
number = int(input("Enter a number: "))
if number < 100:
print("The number is less than 100")
else:
print("The number is more than 100")
print("process finish!")
1.3 多向条件分支
if 条件1:
【代码段1】
elif 条件2:
【代码段2】
elif .....
【代码段n】
else:
【else语句块】
【后续代码】
执行流程:多选一,如果满足条件1,执行【代码段1】,然后跳出if-elif语句,执行【后续代码】,否则判断是否满足条件2,如果满足执行【代码段2】,然后跳出if-elif语句,执行【后续代码】...。如果所有条件都不满足,执行【else语句块】,然后再执行【后续代码】。
注意:else是可选的,可以写也可以不写。
eg:
# -*- coding: utf-8 -*-
__author__ = 'sun'
__date__ = '2019/5/27 10:43'
number = int(input("Enter a number: "))
if number < 100: #number < 100
print("The number is less than 100")
elif number < 200: # 100 <= number < 200
print("the number is between 100 and 200")
elif number < 1000: # 200 <= number < 1000
print("the number is between 200 and 1000")
else:
print("The number is more than 1000")
print("process finish!")
switch语句
我们知道Python中没有类似C++或者Java中的
switch...case
语句,我们可以使用多个if...elif...else
进行模拟,但是这样的写法让代码看起来很凌乱,个人不是很推荐在代码中大量使用if
语句。
switch(n)
{
case 1:
执行代码块 1
break;
case 2:
执行代码块 2
break;
default:
n 与 case 1 和 case 2 不同时执行的代码
}
案例:将英文日期翻译为中文日期
# -*- coding: utf-8 -*-
__author__ = 'sun'
__date__ = '2019/5/27 10:43'
dates = {
'Sun': '星期天', 'Mon': '星期一', 'Tues': '星期二', 'Wed': '星期三',
'Thurs': '星期四', 'Fri': '星期五', 'Sat': '星期六'}
day = dates.get('Fri', '未知') #&& 此处采用get方法,很重要,没有取到值的话,就取“未知”
print(day) # 输出结果为星期五
2.循环语句
Python中提供的循环语句:while语句,for语句
广义:一个周期现象或者重复出现的情况,这种状态被称为循环
狭义:在满足条件的情况下,反复执行某一段代码,在编程语言中出现的这种现象被称为循环。被反复执行的这段代码被称为循环体
当反复执行某段代码时,需要在合适的时机将循环停止下来,否则会产生死循环
2.1.for-in循环
语法:
for 变量名 in 列表:
语句
说明:主要用于遍历列表【遍历:依次访问列表中的每一个元素,获取元素值】
工作原理:按照顺序获取列表中的每个元素,赋值给变量,再执行语句,以此类推,直到列表中的元素全部获取为止
#只能获取元素,不能得到元素的下标
for value in list1:
print(value,end=' ')
#index表示下标,num表示元素值
#enumerate将列表变成一个索引序列,同时包含下标和数据
for index,num in enumerate(list1):
print(index,num)
案例:列举出个人喜欢的几本编程书籍
# -*- coding: utf-8 -*-
__author__ = 'sun'
__date__ = '2019/5/27 11:13'
books = ['python', 'java', 'go', 'h5']
#for index in range(len(books)):
for index, book in enumerate(books):
print(f'第{index+1}本, 书籍 :{books[index]}')
print("yes,i want study all!")
2.2 while语法
while 表达式:
循环体
工作原理:遇到while语句时,首先计算表达式的值,如果表达式的值为假,则跳过整个while语句,继续执行下面的代码;如果表达式的值为真,则执行循环体
# -*- coding: utf-8 -*-
__author__ = 'sun'
__date__ = '2019/5/27 10:43'
ticket = 1000
while (ticket > 0):
print(f'current sale the ticket: {ticket}')
ticket = ticket - 1
2.2 while-else
while 表达式:
循环体
else:
【else语句块】
说明:当while语句执行完成之后,执行【else语句块】
2.3 死循环
在循环语句中,表达式永远为真的循环
while True: #循环体 while 1: #循环体
2.4 while语句的嵌套
while 条件1: #外层循环
【语句块A】
while 条件2: #内存循环
【语句B】
工作流程:首先判断外层循环的条件1,如果为真,则执行循环体中的【语句块A】,执行内层循环,判断条件2是否成立,如果成立,执行内层循环的【语句块B】,执行完内层循环后,重新判断外层循环条件....
- 特点:外层循环走一步,内层循环执行一遍
- 外层循环和内层循环的循环变量必须不同
作业:
打印九九乘法表
2.5. break和continue、exit()
continue 语句用来跳过当前循环的剩余语句,然后重新判断循环条件,开启下一轮循环。continue只能出现在while和for循环中
break用于结束当前循环。
exit()结束程序
还是上述卖票程序,我们如果需求改变的话
场景1: 我们除了第10张票不卖,其他的1000张票都卖?
# -*- coding: utf-8 -*-
__author__ = 'sun'
__date__ = '2019/5/27 10:43'
ticket = 1000
counter = 0
while (ticket > 0):
counter += 1
if counter == 10:
ticket = ticket -1
continue
print(f'{counter},current sale the ticket: {ticket}')
ticket = ticket - 1
思考问题:
如果我们只卖出1000张票中的900张?自行设计?
案例:剪刀石头布游戏
思考问题:
上述石头剪刀布游戏,如果采用三局两胜制游戏规则,如果改写?