Python语言第二章之控制流程(判断,循环)

本文详细介绍了Python中的if语句、if-else、if-elif-else语句,以及while、for循环的语法、嵌套和控制结构,包括break和continue关键字,以及循环中的else语句。还涉及了循环实例如猜拳游戏、水仙花数检测和密码合法性判断。
摘要由CSDN通过智能技术生成

判断

1. if 语句

if 语句语法:

if 判断的条件:

        条件成立时, 执行的代码

flag = False
if flag == True:
    print("hhh")

age = 19
if age > 18:
    print("可以上网了! ")

2. if-else 语句

定义一个整数, 记录年龄
判断是否满18
如果满18, 允许进网吧
age = int(input("请输入年龄: "))
if age >= 18:
    print("允许进网吧")
else:
    print("未成年")

3. if - elif - else 语句

需求:
1. 定义 holiday_name 字符串变量记录节日名称
2. 如果是 情人节,应该 买玫瑰/看电影
3. 如果是 平安夜,应该 买苹果/吃大餐
4. 如果是 生日,应该 买蛋糕
5. 其他的日子,每天都是节日……
holiday_name = input("请输入节日: ")
if holiday_name == "情人节":
    print("买玫瑰/看电影")
elif holiday_name == "平安夜":
    print("买苹果/吃大餐")
elif holiday_name == "生日":
    print("买蛋糕")
else:
    print("每天都是节日")

4. if 嵌套

需求:
1. 定义布尔型变量 has_ticket 表示是否有车票
2. 定义整型变量 knife_length 表示刀的长度,单位:厘米
3. 首先检查是否有车票,如果有,才允许进行 安检
4. 安检时,需要检查刀的长度,
5. 判断是否超过 20 厘米
  a. 如果超过 20 厘米,提示刀的长度,不允许上车
  b. 如果不超过 20 厘米,安检通过
6. 如果没有车票,不允许进门
has_ticket = eval(input("请输入是否有车票: "))
knife_length = int(input("请输入刀的长度: "))

if has_ticket:
    if knife_length <= 20:
        print("安检通过")
        print("刀的长度:{}".format(knife_length))
    else:
        print("不允许上车")
        print(f"刀的长度是:{knife_length}")

else:
    print("不允许进入")

5. 判断案例: 猜拳游戏

需求:
1. 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)
2. 电脑 随机 出拳 —— 先假定电脑只会出石头,完成整体代码功能
3. 比较胜负并输出结果

player == 1 and computer == 2
player == 2 and computer == 3
player == 3 and computer == 1
import random

player = int(input("请玩家输入石头(1)剪刀(2)布(3): "))
computer = random.randint(1, 3)
print("computer: {}".format(computer))
if player == computer:
    print("平局")
elif (player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1):
    print("player win")
else:
    print("computer win")

循环

循环的作用是让指定的代码重复的执行

1. while 循环

1.1 while 循环语法

while 循环最常用的应用场景就是 让执行的代码 按照 指定的次数 重复 执行

# 1.定义循环变量
i = 1
# 2.使用while判断条件
while i <= 10000:
    # 要重复执行的代码
    print('吃饭啦')
    # 3.修改循环变量
    i += 1
1.2 死循环

死循环指的是程序持续执行,无法终止。原因通常是忘记在循环内部修改循环变量的值

比如:

# 1.定义循环变量
i = 0
# 2.使用while判断条件
while i < 10000:
    # 要重复执行的代码
    print('吃饭啦')

和正常代码相比,在循环内部忘记修改循环变量,循环条件一直满足,循环就会一直执行。死循环在程序中也有一定的使用场景,可以保证程序不会停止。

比如:QQ的服务器要保证能一直接收到消息,通常内部会有死循环支持。再比如,做界面开发时,为了保证界面能一直显示,内部也通常会维护一个死循环

死循环最简单的写法如下:

while True:
    pass
1.3 while 循环嵌套
打印直角三角形

根据用户输入的数值n,打印n行三角形

*
**
***
****
*****

i = 1
while i <= 5:
    j = 1
    while j <= i:
        print("*",end = '\t')
        j += 1
    print()
    i+=1
打印倒直角三角形

*****
****
***
**
*

i = 5
while i >= 1:
    j = 1
    while j <= i:
        print("*", end='\t')
        j += 1
    print()
    i -= 1
1.3 循环嵌套

 while 嵌套就是:while 里面还有 while

while循环嵌套的格式如下:

1.4 while 循环案例
九九乘法表

思路分析:

  1. 打印星星
  2. 使用嵌套循环打印阶梯星星
  3. 将星星替换成乘法口诀公式
i = 1
while i <= 9:
    j = 1
    while j <= i:
        print("%d * %d = %d" % (j, i, j*i),end='\t')
        j += 1
    print()
    i += 1
倒九九乘法表
i = 9
while i >= 1:
    j = 1
    while j <= i:
        print("%d * %d = %d" % (j, i, j * i), end='\t')
        j += 1
    print()
    i -= 1

2. for 循环

2.1 for 循环语法

for循环的主要作用是遍历数据(容器))中的元素。字符串、列表等高级数据类型都属于容器,都可以通过for循环遍历

for循环的语法格式如下:

for 临时变量 in 列表或字符串等可迭代对象:
	执行的代码

使用for循环遍历字符串中的所有字符

需求:

打印字符串'hello world'中每一个字符

str = 'hello world'
# ele普通变量  接收容器中的元素
for s in str:
    print(s)
2.2 in和not in

in 操作符用于判断元素是否存在于容器中,如果在容器中,返回 True,否则返回 False

in 操作符用于判断元素是否存在于容器中,如果在容器中,返回 True,否则返回 False

str = 'hello'
result = 'h' in str
print(result)
result = 'e' not in str
print(result)

结果

True
False

2.3 for 循环控制循环次数 range

range() 可创建一个整数列表。range()相当于数学中的左闭右开区间(包含左,不包含右)

我们先看看数学中的区间:

全开全闭区间

  • 开区间:(1,10) 不包含1和10
  • 闭区间:[1,10] 包含1和10

半开半闭区间

  • 左开右闭区间:(1,10] 包含10不包含1
  • 左闭右开区间:[1,10) 包含1不包含10
range的定义
# 定义0到10的区间(包含0,不包含10)
arr = range(0, 10)

如果区间从0开始可以省略0

# 定义0到10的区间(包含0,不包含10)
arr = range(10)

倒序的区间定义

# 定义从10到1的区间,参数分别代表 start开始, stop结束, step步长
arr = range(10, 0, -1)

区间可以通过for进行遍历

"""
range 包含左边,不包含右边
如果从0开始,则不可以省略0
"""
arr = range(0, 5)
for i in arr:
    print(i)  # 0 1 2 3 4
print("--------------------------")

arr2 = range(6)
for i in arr2:
    print(i)  # 0 1 2 3 4 5
print("--------------------------")
"""
倒序 10-1的区间, 参数分别代表: 开始,结束,step(步长)
step:步长,表示间隔的数量

"""
arr3 = range(10, 0, -1)
#
# for i in arr3:
#     print(i)
2.3 for 循环案例: 水仙花数

打印出所有"水仙花数",所谓"水仙花数"是指一个三位数[100, 1000),其各位数字立方和等于该数本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。


# num = 153
# bai = int(num / 100)
# print(int(bai))
# shi = int(num / 10 - int(bai) * 10)
# print(int(shi))
# ge = int(num - (int(bai) * 100) - (int(shi) * 10))
# print(int(ge))
# print(bai*bai*bai + shi*shi*shi + ge*ge*ge)


# num = range(100, 1000)
# for i in num:
#     bai = int(i / 100)
#     shi = int(i / 10 - int(bai) * 10)
#     ge = int(i - (int(bai) * 100) - (int(shi) * 10))
#     if i == bai*bai*bai + shi*shi*shi + ge*ge*ge:
#         print(i)


"""
1. 遍历所有的三位数
2. 求 百位 十位个位  立方和
3. 判断并打印
"""
for ele in range(100, 1000):
    # 百位
    hun = ele // 100
    # 十位
    ten = ele // 10 % 10
    # 个位
    single = ele % 10
    # 判断立方和
    # 立方 pow(hun, 3) 或者 hun ** 3
    if (hun ** 3 + ten ** 3 + single ** 3) == ele:
        print(ele)


for i in range(100, 1000):
    bai = i // 100
    shi = i // 10 % 10
    ge = i % 10
    if i == pow(bai, 3) + pow(shi, 3) + pow(ge, 3):
        print(i)

3. 循环的跳转

breakcontinue是专门在循环中使用的关键字

  • break:某一条件满足时,不再执行循环体中后续代码,并退出循环
  • continue:某一条件满足时,不再执行本次循环体中后续代码,但进入下一次循环判断
3.1 break
for i in range(5):
    if i == 3:
        break
    print(i)

结果:

0
1
2

3.2 continue

for i in range(5):
    if i == 3:
        continue
    print(i)

结果:

0
1
2
4

4. 循环中的else

循环也可以像if语句一样结合else

else 中的语句会在循环正常执行完(即没有通过 break或其他异常情况中断循环)的情况下执行,while循环也是如此

格式:

for 变量 in 容器:
    循环体代码
else:
    没有通过break退出循环, 循环结束后, 会执行的代码

for else,会执行else中的代码
str = 'hello world'


for ele in str:

print(ele)

else:

print('执行了else语句')

for else中执行了continue,会执行else中的代码
for ele in str:

if ele == 'l':

continue

print(ele)

else:

print('执行了else语句')

for else中执行了break,else语句不会执行
for ele in str:

if ele == 'l':

break

print(ele)

else:

print('else语句不会执行')

5. 循环案例: 密码合法判断

需求

判断登录密码hhew2383dW_fkf&E@^是否合法。

  1. 密码必须是数字、字母(大小写都可以)、和下划线,否则不合法
  2. 如果密码合法,就输出"密码合法"
分析
  1. 定义容器,保存所有的数字 字母 _
  2. for循环遍历密码中每一个元素
  3. 判断每一个元素是否合法
  4. 如果不合法,执行break

password = 'hhew2383dW_fkfE'
# 2.定义容器:保存所有的数字 字母 _
container = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_'

for ele in password:
    # 判断每一个元素是否合法
    # 每一个元素 是否在容器中
    if ele not in container:
        print("密码不合法, 不可包含%s" % ele)
        break
else:
    # 密码合法就不会执行了
    print("密码合法")
  • 15
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值