day02

150 阅读9分钟

学习内容:

一、条件判断

二、循环语句

一、条件判断

了解条件语句

引言:

同学们去过⽹吧吗?

去⽹吧进⻔想要上⽹必须做的⼀件事是做什么?(考虑重点)

为什么要把身份证给⼯作⼈员?

是不是就是为了判断是否成年?

是不是如果成年可以上⽹?如果不成年则不允许上⽹?

其实这⾥所谓的判断就是条件语句,即条件成⽴执⾏某些代码,条件不成⽴则不执⾏这些代码。


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)
# 从101,依次打印,(不含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}")