学习内容:
一、条件判断
二、循环语句
一、条件判断
了解条件语句
引言:
同学们去过⽹吧吗?
去⽹吧进⻔想要上⽹必须做的⼀件事是做什么?(考虑重点)
为什么要把身份证给⼯作⼈员?
是不是就是为了判断是否成年?
是不是如果成年可以上⽹?如果不成年则不允许上⽹?
其实这⾥所谓的判断就是条件语句,即条件成⽴执⾏某些代码,条件不成⽴则不执⾏这些代码。
if语法
如果.... 就....
体验
if True:
print('条件成⽴执⾏的代码1')
print('条件成⽴执⾏的代码2')
# 下⽅的代码没有缩进到if语句块,所以和if条件⽆关
print('我是⽆论条件是否成⽴都要执⾏的代码')
实例
age = 20
if age >= 18:
print('已经成年,可以上⽹')
# input接受的是字符串,要和18做判断,就要把字符串转化成int类型
age = int(input('请输⼊您的年龄:'))
# 如果输入的数字大于等于18
if age >= 18:
print(f'您的年龄是{age},已经成年,可以上⽹')
if&else语句
如果...否则...
快速体验
age = int(input("请输入你的年龄"))
if age >= 18:
print("先生,祝你上网愉快")
else:
print("小朋友,未成年禁止上网")
print("又是元气满满的一天")
else语句在if条件为假的时候执行
if&elif&else
如果。。。或者。。。否则。。。
快速体验
# 输入1,玩连连看
# 输入2,玩消消乐
# 输入3,玩贪吃蛇
# 输入4,玩推箱子
game = int(input("请输入你想玩的游戏:"))
if game == 1:
print("已经打开连连看,请开始游戏")
elif game == 2:
print("已经打开消消乐,请开始游戏")
elif game == 3:
print("已经打开贪吃蛇,请开始游戏")
elif game == 4:
print("已经打开推箱子,请开始游戏")
else:
print("没这个游戏。。。")
- 当if..elif..else并存的时候,先执行if当中的语句
- 若if条件为真,则elif和else当中的代码不会执行
- 当if条件为假、elif当中的条件为真,else当中的代码不会执行
- 当if条件和elif条件同时为假,else当中的代码才会执行
多重判断
思考:中国合法⼯作年龄为18-60岁,即如果年龄⼩于18的情况为童⼯,不合法;如果年龄在18-、60岁之间为合法⼯龄;⼤于60岁为法定退休年龄。
多重判断也可以和else配合使⽤。⼀般else放到整个if语句的最后,表示以上条件都不成⽴的时候执⾏的代码。
实例
age = int(input('请输⼊您的年龄:'))
if age < 18:
print('童⼯⼀枚')
elif age >= 18 and age <= 60:
# age >= 18 and age <= 60 可以化简为 18 <= age <= 60
print('合法⼯龄')
elif age > 60:
print('可以退休')
如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
嵌套判断
坐公交车,需要花钱,上了车,有座位就坐下,没座位就站着
# 假设⽤ money = 1 表示有钱, money = 0表示没有钱; seat = 1 表示有空座,seat = 0 表示没有空座
money = int(input("上车请投币:"))
if money == 1:
print('祝你旅途愉快')
seat = input("是否有空座:")
if seat == "yes":
print('有空座,可以坐下')
else:
print('没有空座,站等')
else:
print('没钱请下车')
二、循环语句
循环
将事物循环执行
作用 思考:假如我有个⼥朋友,有⼀天我们闹⽭盾⽣⽓了,⼥朋友说:道歉,说100遍“媳妇⼉,我错了”。这个时候程序员会怎么做? 答:100遍 print('媳妇⼉,我错了') 思考:复制粘贴100次吗? 答:重复执⾏100次⼀样的代码,程序中循环即可
循环的分类
Python 提供了 for 循环和 while 循环
| 循环类型 | 描述 |
|---|---|
| while | 在给定的判断条件为 true 时执行循环体,否则退出循环体。 |
| for | 重复执行语句 |
循环控制语句
| 控制语句 | 描述 |
|---|---|
| break 语句 | 在语句块执行过程中终止循环,并且跳出整个循环 |
| continue 语句 | 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。 |
| pass 语句 | pass是空语句,是为了保持程序结构的完整性。 |
while循环
Python 编程中 while语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务
语法
while 判断条件:
执行语句
应用一:输出100次媳妇,我错了
# 循环的计数器
i = 1
while i < 100:
print('媳妇⼉,我错了')
i += 1
print('任务结束')
应用二:计算1-100的和
num = 1
result = 0
while num <= 100:
result += num
num+=1
print(result)
应用三:计算1-100偶数和
2+4+6+8+10+......
偶数即是和2取余结果为0的数字,可以加⼊条件语句判断是否为偶数,为偶数则累加
方法一
num = 1
result = 0
while inum <= 100:
# 判断num是否能整除2,如果可以,则和result相加
if num % 2 == 0:
result += num
num += 1
print(result)
方法二
num = 0
result = 0
while num <= 100:
result += num
num += 2
print(result)
break和continue语句
案例: 有100辆汽车需要刷漆,一辆一辆刷,就相当于循环过程 break: 当刷到第50辆,完成了当天的任务,刷漆的动作就要停止,这⾥就是break控制循环流程,即终⽌此循环 continue: 我拿的是马自达的油漆,结果第20辆车是劳斯劳斯,所以直接跳过这辆,继续刷马自达,这⾥就是continue控制循环流程,即退出当前⼀次循环继⽽执⾏下⼀次循环代码
应用一:刷漆-break
i = 1
while i <= 100:
if i == 51:
print('完成今天的任务')
break
print(f'今天刷了{i}辆车')
i += 1
应用二:刷漆-continue
i = 1
while i<=100:
if i == 33:
print(f"第{i}辆车是劳斯莱斯,跳过")
i += 1
continue
print(f"今天刷了{i}辆车")
i+=1
while循环嵌套
思考:和⼥朋友闹⽭盾⽣⽓了,⼥朋友说:道歉,说10遍“媳妇⼉,我错了”,还不够,还要做家务,而且持续三天,这个程序该怎么写?
一天
i = 0
while i <= 10:
print("媳妇儿,我错了")
i += 1
三天
j = 1
while j<=3:
i = 0
while i<=10:
print("媳妇,我错了")
i+=1
print(f"做第{j}天的家务")
j += 1
执行流程
当内部循环执⾏完成之后,再执⾏下⼀次外部循环的条件判断。
九九乘法口诀表
j = 1
while j <= 9:
i = 1
while i<=j:
print(f'{i}*{j}={i*j}',end='\t')
i += 1
print()
j += 1
for...in...循环
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for-in遍历的对象必须是可迭代对象
while循环的循环条件是自定义的,for循环无法定义循环条件
for循环是一种 “轮询” 机制。是对一批内容进行 “逐个处理”
python-for循环语句
for 临时变量 in 待处理数据集:
重复执行代码
理论上来讲,for循环无法构建无限循环(待处理的数据集不可能无限大)
实例
# 遍历字符串
for i in 'Python': # 第一个实例
print("当前字母: %s" % i)
可以看出for循环是将字符串的内容依次取出,所以for循环也被称之为遍历循环
练习
# 字符串 name = "hello world python i love you"
# 通过for循环遍历所有的o
name = "hello world python i love you"
for i in name:
if i == "o":
print(i)
range()语句
for循环本质上是遍历 “序列类型” ,但是,使用range语句,可以获得一个简单的数字序列
语法:
range(num)
# 获得一个从0开始,到num结束的数字序列(不含num本身)
# 例如range(5),获得的数据是[0,1,2,3,4]
range(num1,num2)
# 获取一个从num1开始,到num2结束的数字序列(不含num2本身)
# 例如range(2,8),获得的数据是[2,3,4,5,6,7]
range(num1,num2,step)
# 获取一个从num1开始,到num2结束的数字序列(不含num2本身)
# step 为步长,默认为1
# 例如range(1,10,2),获取到的数据是[1,3,5,7,9]
num1 = 10
num2 = 0
range(num1,num2,-1)
# 从10到1,依次打印,(不含num2本身)
# range(10,0,-1),获取到的数据是[10,9,8,7,6,5,4,3,2,1]
实例
# 输出0~9
for i in range(10):
print(i)
# 输出1~100
for i in range(1,101)
# 输出1~100,每次跳过一个数字
for i in range(1,101,2):
print(i)
for循环的嵌套应用
生活中的嵌套
和女朋友吵架,每天道歉10遍,持续5天
for 临时变量 in 待处理数据集:
重复执行代码一
重复执行代码二
重复执行代码三
for 临时变量 in 待处理数据集:
重复执行代码三
重复执行代码三
重复执行代码三
- 坚持道歉5天
- 每天道歉10遍
for i in range(1,6):
print(f"这是我第{i}天的道歉")
for j in range(1,11):
print(f"老婆,我错了,这是我今天的第{j}次道歉")
print(f"老婆,第{i}天的道歉结束。。。")
print(f"我已经道歉了{i}天了,老婆不生气了")
for循环和while循环配合使用
for i in range(1,6):
print(f"这是我第{i}天的道歉")
j = 1
while j<=10:
print(f"老婆,我错了,这是我今天的第{j}次道歉")
j+=1
print(f"老婆,第{i}天的道歉结束。。。")
break和continue
while循环和for循环都是重复性的执行特定的操作,在这个过程中,会出现一些其他情况,让我们不得不
-
跳过这次循环,进入下一次循环
-
终止当前循环
continue
中断本次循环,进入下一次循环
# 碰见7的倍数直接跳过
for i in range(100): # 遍历出0~99
if i % 7 == 0: # 判断i是7的倍数
continue # 满足条件直接跳过
print(i) # 打印出其余的数字
break
终止循环,结束当前循环
# 当马自达刷完后直接停止,因为后面是劳斯莱斯
li = ["马自达","马自达","马自达","劳斯莱斯","劳斯莱斯","劳斯莱斯","劳斯莱斯"]
for i in li:
if i == "劳斯莱斯":
print("碰见劳斯莱斯了")
break
print("正在刷马自达。。。")
作业
题目:做一个猜字游戏
要求:1、从1-100生成一个随机数
2、总共有5次机会
3、若中途猜对,循环就要终止
提示:生成了一个56,但是我也输入了一个56,即为过关,循环终止
我的作业完成:
import random
print("现在开始游戏,你一共有五次机会猜数(1~100)当你猜对时游戏胜利,否则五次机会用完游戏失败。")
number = random.randint(1,101)#这是一个整型的变量
for num1 in range(1,6):
num2 =int(input(f"请您输入第{num1}次的数字:"))
if num2>number:
print(f"您猜大了,还剩{5-num1}次机会")
elif number>num2:
print(f"您猜小了,还剩{5-num1}次机会")
elif num2==number:
print("恭喜你猜对了,游戏胜利!")
break
if num1==5 and num2!=number:
print(f"五次机会用完了,游戏失败!\n正确数字是:{number}")