Python流程控制语句
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Python流程控制语句第三章流程控制语句
简介
Python代码在执⾏时是按照⾃上向下顺序执⾏的。
通过流程控制语句,可以改变程序的执⾏顺序,也可以让指定的程序反复执⾏多次
流程控制语句分成两⼤类:条件判断语句,循环语句
条件判断语句(if语句)
# 条件判断语句(if语句)
# 语法:if 条件表达式 :
# 代码块
# 执⾏的流程:if语句在执⾏时,会先对条件表达式进⾏求值判断,
# 如果为True,则执⾏if后的语句
# 如果为False,则不执⾏
# 默认情况下,if语句只会控制紧随其后的那条语句,如果希望if可以控制多条语句,
# 则可以在if后跟着⼀个代码块
# 代码块
# 代码块中保存着⼀组代码,同⼀个代码块中的代码,要么都执⾏要么都不执⾏
# 代码块就是⼀种为代码分组的机制
# 如果要编写代码块,语句就不能紧随在:后边,⽽是要写在下⼀⾏
# 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
# 鲁迅说过:
# 世上本来没有路,⾛的⼈多了⾃然就有了!
# xxxx
# yyyy....
# 缩进有两种⽅式,⼀种是使⽤tab键,⼀种是使⽤空格(四个)
# Python的官⽅⽂档中推荐我们使⽤空格来缩进
# Python代码中使⽤的缩进⽅式必须统⼀
# "translate_tabs_to_spaces": true,
# if False : print('你猜我出来么?')
num = 10
# if num > 10 : print('num⽐10⼤!')
# print('谁也管不了我')
if False :
print(123)
print(456)
print(789)
print(101112)
# print('hello')
num = 28
# 可以使⽤逻辑运算符来连接多个条件,
# 如果希望所有条件同时满⾜,则需要使⽤and
# 如果希望只要有⼀个条件满⾜即可,则需要使⽤or
# if num > 10 and num < 20 :
# print('num⽐10⼤,num⽐20⼩!')
# if 10 < num < 20 :
# print('num⽐10⼤,num⽐20⼩!')
# 在命令⾏让⽤户输⼊⼀个⽤户名,获取⽤户输⼊,并进⾏判断
# 如果⽤户输⼊的⽤户名是admin,则显⽰欢迎管理员光临
# 如果⽤户输⼊的是其他的⽤户名,则什么也不做
input函数
# input()函数
# 该函数⽤来获取⽤户的输⼊
# input()调⽤后,程序会⽴即暂停,等待⽤户输⼊
# ⽤户输⼊完内容以后,点击回车程序才会继续向下执⾏
# ⽤户输⼊完成以后,其所输⼊的的内容会以返回值得形式返回
# 注意:input()的返回值是⼀个字符串
# input()函数中可以设置⼀个字符串作为参数,这个字符串将会作为提⽰⽂字显⽰
# a = input('请输⼊任意内容:')
# print('⽤户输⼊的内容是:',a)
# input()也可以⽤于暂时阻⽌程序结束
# 获取⽤户输⼊的⽤户名
username = input('请输⼊你的⽤户名:')
# 判断⽤户名是否是admin
if username == 'admin' :
print('欢迎管理员光临!')
if-else
# 让⽤户在控制台中输⼊⼀个年龄
# age = int(input('请输⼊你的年龄:'))
# 如果⽤户的年龄⼤于18岁,则显⽰你已经成年了
# if age >= 18 :
# print('你已经成年了~~~')
# if-else语句
# 语法:
# if 条件表达式 :
# 代码块
# else :
# 代码块
# 执⾏流程:
# if-else语句在执⾏时,先对if后的条件表达式进⾏求值判断
# 如果为True,则执⾏if后的代码块
# 如果为False,则执⾏else后的代码块
age = 7
if age > 17 :
print('你已经成年了~~')
else :
print('你还未成年~~')
if-elif-else
# if-elif-else语句
# 语法:
# if 条件表达式 :
# 代码块
# elif 条件表达式 :
# 代码块
# elif 条件表达式 :
# 代码块
# elif 条件表达式 :
# 代码块
# else :
# 代码块
#
# 执⾏流程:
# if-elif-else语句在执⾏时,会⾃上向下依次对条件表达式进⾏求值判断,
# 如果表达式的结果为True,则执⾏当前代码块,然后语句结束
# 如果表达式的结果为False,则继续向下判断,直到找到True为⽌
# 如果所有的表达式都是False,则执⾏else后的代码块
# if-elif-else中只会有⼀个代码块会执⾏
age = 210
# if age > 200 :
# print('活着可真没劲呢!')
# elif age > 100 :
# print('你也是⽼⼤不⼩了!')
# elif age >= 60 :
# print('你已经退休了!')
# elif age >= 30 :
# print('你已经是中年了!')
# elif age >= 18 :
# print('你已经成年了!')
# else :
# print('你还是个⼩孩!')
age = 68
if age >= 18 and age < 30 :
print('你已经成年了!')
elif age >= 30 and age < 60 :
print('你已经中年了!')
elif age >= 60 :
print('你已经退休了!')
if练习
# 练习1:
# 编写⼀个程序,获取⼀个⽤户输⼊的整数。
然后通过程序显⽰这个数是奇数还是偶数。
# 获取⽤户输⼊的整数
# num = int(input('请输⼊⼀个任意的整数:'))
# # 显⽰num是奇数还是偶数
# if num % 2 == 0 :
# print(num , "是偶数")
# else :
# print(num , '是奇数')
# 练习2:
# 编写⼀个程序,检查任意⼀个年份是否是闰年。
# 如果⼀个年份可以被4整除不能被100整除,或者可以被400整除,这个年份就是闰年# year = int(input('请输⼊⼀个任意的年份:'))
# # 检查这个年份是否是闰年
# # year % 4 == 0 and year % 100 != 0 or year % 400 == 0
# if year % 4 == 0 and year % 100 != 0 or year % 400 == 0 :
# print(year,'是闰年')
# else :
# print(year,'是平年')
# 练习3:
# 我家的狗5岁了,5岁的狗相当于多⼤年龄的⼈呢?
# 其实⾮常简单,狗的前两年每⼀年相当于⼈类的10.5岁,然后每增加⼀年就增加四岁。
# 那么5岁的狗相等于⼈类的年龄就应该是10.5+10.5+4+4+4 = 33岁
# 编写⼀个程序,获取⽤户输⼊的狗的年龄,然后通过程序显⽰其相当于⼈类的年龄。
# 如果⽤户输⼊负数,请显⽰⼀个提⽰信息
# dog_age = float(input('请输⼊狗的年龄:'))
# like_person_age = 0
# 检查⽤户输⼊的是否是负数
# if dog_age < 0 :
# print('你的输⼊不合法!')
# # 如果狗的年龄在两岁以下(包含两岁)
# elif dog_age <= 2 :
# # 直接将当前的年龄乘以10.5
# like_person_age = dog_age * 10.5
# # 如果狗的年龄在两岁以上
# else :
# # 计算前两岁相当于⼈类的年纪
# like_person_age = 2 * 10.5
# # 计算超过两岁的部分相对于⼈类的年纪,并进⾏相加
# like_person_age += ( dog_age - 2 ) * 4
# if dog_age > 0 :
# print(dog_age,'岁的狗,年纪相当于',like_person_age,'岁的⼈')
#
# 在if也可以去嵌套if,代码块是可以嵌套的,每增加⼀个缩进的级别,代码块就低⼀级
# 检查⽤户的输⼊是否合法
# if dog_age > 0 :
# # 如果狗的年龄在两岁以下(包含两岁)
# if dog_age <= 2 :
# # 直接将当前的年龄乘以10.5
# like_person_age = dog_age * 10.5
# # 如果狗的年龄在两岁以上
# else :
# # 计算前两岁相当于⼈类的年纪
# like_person_age = 2 * 10.5
# # 计算超过两岁的部分相对于⼈类的年纪,并进⾏相加
# like_person_age += ( dog_age - 2 ) * 4
# print(dog_age,'岁的狗,年纪相当于',like_person_age,'岁的⼈')
# else :
# print('请输⼊⼀个合法的年龄!')
# 练习4:
# 从键盘输⼊⼩明的期末成绩:
# 当成绩为100时,'奖励⼀辆BMW'
# 当成绩为[80-99]时,'奖励⼀台iphone'
# 当成绩为[60-79]时,'奖励⼀本参考书'
# 其他时,什么奖励也没有
# 获取⼩明的成绩
# score = float(input('请输⼊你的期末成绩(0-100):'))
# # 打印分割线
# print("="*40)
# # 检查⽤户的输⼊是否合法
# if 0 <= score <= 100 :
# # 判断发给的奖励
# if score == 100 :
# print('宝马,拿去玩!')
# elif score >= 80 :
# print('苹果⼿机,拿去玩!')
# elif score >= 60 :
# print('参考书,拿去玩!')
# else :
# print('棍⼦⼀根!')
# else :
# # ⽤户输⼊的不合法,弹出⼀个友好提⽰
# print('你输⼊的内容不合法,拉出去毙了!')
# 练习5:
# ⼤家都知道,男⼤当婚,⼥⼤当嫁。
那么⼥⽅家长要嫁⼥⼉,当然要提出⼀定的条件:# ⾼:180cm以上; 富:1000万以上; 帅:500以上;
# 如果这三个条件同时满⾜,则:'我⼀定要嫁给他'
# 如果三个条件有为真的情况,则:'嫁吧,⽐上不⾜,⽐下有余。
'
# 如果三个条件都不满⾜,则:'不嫁!'
# 获取⽤户的三个数据,⾝⾼、财富、颜值
height = float(input('请输⼊你的⾝⾼(厘⽶):'))
money = float(input('请输⼊你的财富(万):'))
face = float(input('请输⼊你的颜值(平⽅厘⽶):'))
# 判断到底嫁不嫁
# 如果这三个条件同时满⾜,则:'我⼀定要嫁给他'
if height > 180 and money > 1000 and face > 500 :
print('我⼀定要嫁给他!')
# 如果三个条件有为真的情况,则:'嫁吧,⽐上不⾜,⽐下有余。
'
elif height > 180 or money > 1000 or face > 500 :
print('嫁吧,⽐上不⾜,⽐下有余。
')
# 如果三个条件都不满⾜,则:'不嫁!'
else :
print('不嫁!')
循环语句
# 循环语句
# 循环语句可以使指定的代码块重复指定的次数
# 循环语句分成两种,while循环和 for循环
# while循环
# 语法:
# while 条件表达式 :
# 代码块
# else :
# 代码块
# 执⾏流程:
# while语句在执⾏时,会先对while后的条件表达式进⾏求值判断,
# 如果判断结果为True,则执⾏循环体(代码块),
# 循环体执⾏完毕,继续对条件表达式进⾏求值判断,以此类推,
# 直到判断结果为False,则循环终⽌,如果循环有对应的else,则执⾏else后的代码块# 条件表达式恒为True的循环语句,称为死循环,它会⼀直运⾏,慎⽤!
# while True :
# print('hello')
# 循环的三个要件(表达式)
# 初始化表达式,通过初始化表达式初始化⼀个变量
# i = 0
# # 条件表达式,条件表达式⽤来设置循环执⾏的条件
# while i < 10 :
# print(i)
# # 更新表达式,修改初始化变量的值
# i += 1
# 创建⼀个执⾏⼗次的循环
i = 0
while i < 10 :
i += 1
print(i,'hello')
else :
print('else中的代码块')
打印99乘法表
# 练习1:
# 打印99乘法表
# 1*1=1
# 1*2=2 2*2=4
# 1*3=3 2*3=6 3*3=9
# ... 9*9=81
# 创建⼀个外层循环来控制图形的⾼度
i = 0
while i < 9:
i += 1
# 创建⼀个内层循环来控制图形的宽度
j = 0
while j < i:
j += 1
print(f"{j}*{i}={i*j} ",end="")
print()
质数练习
# 求100以内所有的质数
# 创建⼀个循环,求1-100以内所有的数
i = 2
while i <= 100:
# 创建⼀个变量,记录i的状态,默认认为i是质数
flag = True
# 判断i是否是质数
# 获取所有可能成为i的因数的数
j = 2
while j < i:
# 判断i能否被j整除
if i % j == 0:
# i能被j整除,证明i不是质数,修改flag为False flag = False
j += 1
# 验证结果并输出
if flag :
print(i)
i += 1
break与continue
# 求100以内所有的质数
# 创建⼀个循环,求1-100以内所有的数
i = 2
while i <= 100:
# 创建⼀个变量,记录i的状态,默认认为i是质数
flag = True
# 判断i是否是质数
# 获取所有可能成为i的因数的数
j = 2
while j < i:
# 判断i能否被j整除
if i % j == 0:
# i能被j整除,证明i不是质数,修改flag为False flag = False
j += 1
# 验证结果并输出
if flag :
print(i)
i += 1
优化
# 模块,通过模块可以对Python进⾏扩展
# 引⼊⼀个time模块,来统计程序执⾏的时间
from time import *
# time()函数可以⽤来获取当前的时间,返回的单位是秒
# 获取程序开始的时间
# 优化前:
# 10000个数 12.298秒
# 100000个数没有结果
# 第⼀次优化
# 10000个数 1.577秒
# 100000个数 170.645秒
# 第⼆次优化
# 10000个数 0.068秒
# 100000个数 1.646秒
#
# 36的因数
# 2 18
# 3 12
# 4 9
# 6 6
#
begin = time()
i = 2
while i <= 100000:
flag = True
j = 2
while j <= i ** 0.5:
if i % j == 0:
flag = False
# ⼀旦进⼊判断,则证明i⼀定不是质数,此时内层循环没有继续执⾏的必要 # 使⽤break来退出内层的循环
break
j += 1
if flag :
# print(i)
pass
i += 1
# 获取程序结束的时间
end = time()
# 计算程序执⾏的时间
print("程序执⾏花费了:",end - begin , "秒")
综合练习(⼩游戏)
# 显⽰欢迎信息
print('_'*20,'欢迎光临《oldxu⼤战oldwang》 ','_'*20)
# 显⽰⾝份信息
print('请选择你的⾝份: ')
print('\t1.oldwang ')
print('\t2.oldxu ')
#游戏⾝份选择
playear_choose = input('请选择[1-2]: ')
#为了显⽰好看打印⼀条分割线
print('_'*66)
#根据⽤户选择来显⽰不同的提⽰信息
if playear_choose == '1':
#选择1
print('你已经选择了1⽤户,你将以oldwang的⾝份来进⾏游戏! ')
elif playear_choose == '2':
#选择2
print('你已经选择了2⽤户,你将以oldxu⾝份进⾏游戏: ')
#进⼊游戏
#创建变量,保存玩家的晟⽣命⼒和攻击⼒
playear_life = 2 #⽣命值
playear_attack =2 #攻击⼒
#创建⼀个变量来保存boss的⽣命⼒和攻击⼒
boss_life = 10
boss_attack = 10
#打印⼀条分割线
print('_'*66)
#显⽰玩家的信息(攻击⼒,⽣命值)
print(f'oldwang, 你的⽣命值是{playear_life} , 你的攻击⼒是{playear_attack}')
#由于游戏选项是需要反复显⽰的,所以必须将其编写到⼀个循环中
while True :
#打印分割线
print('_'*66)
#显⽰游戏选项游戏正式开始
print('请选择你要进⾏的操作: ')
print('\t1.练级')
print('\t2.打boss')
print('\t3.打不过,我要溜')
game_choose = input('请选择你要进⾏的操作:[1-3] ')
#进⾏选择处理
if game_choose == '1' :
#增加玩家的⽣命值和攻击⼒
playear_life += 2
playear_attack += 2
#显⽰最新信息
#打印分割线
print('_'*66)
#显⽰玩家的信息(攻击⼒、⽣命值)
print(f'恭喜你升级了!,你现在的⽣命值是 {playear_life} , 你的攻击⼒是 {playear_attack}')
elif game_choose == '2' :
# 玩家攻击boss
# 减去boss的⽣命值,减去的⽣命值应该等于玩家的攻击⼒
boss_life -= playear_attack
# 打印⼀条分割线
print('-'*66)
print('->oldwang<- 给与 ->oldxu<- 重击')
#检查boss是否死亡
if boss_life <= 0 :
#boss死亡,player胜利,游戏结束
print(f'->oldxu<-受到了 {playear_attack} 点伤害,已经over了,->oldwang<-赢得了本场⽐赛胜利!') #游戏结束
break
# boss要反击玩家
# 减去玩家的⽣命值
playear_life -= boss_attack
print(' ->oldxu<- 攻击了 ->oldwang<-')
#检查玩家是否死亡
if playear_life <= 0 :
#玩家死亡
print(f'你受到了 {boss_attack} 点伤害,over')
#游戏结束
break
elif game_choose == '3' :
# 打印⼀条分割线
print('-'*66)
# 逃跑,退出游戏
print('对不起,你逃跑了,所以系统判定同志你没有奉献精神,over')
break
else :
#打印分割线
print('_'*66)
print('你的输⼊有误,请重新输⼊!如果对本游戏存在意见或者建议请联系微信:184********')。