前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python3 | 练气期,流程控制语句!

Python3 | 练气期,流程控制语句!

作者头像
全栈工程师修炼指南
发布2024-07-29 10:00:20
590
发布2024-07-29 10:00:20
举报
文章被收录于专栏:全栈工程师修炼之路
[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ]

0x00 前言简述

描述:上一章,我们学习了Python3编程中操作运算符及其运算符的优先级,相信各位初学看友边看、边实践的基础下已经初步掌握它了,这一章我们一起学习Python3编程入门中流程控制的相关语法及实践案例,它也是Python编程中最基础且常用的部分,所以说也是需要我们掌握的。

温馨提示:作者后续实践主要在 Ubuntu 24.04 TLS + Python 3.12 + Jupyter Notebook 环境中运行,若要配置为作者的学习环境,可参考《#AIGC学习之路》专栏中的流程。

温馨提示:若各位看友在其他平台看到此篇文章,一定要关注公众号【全栈工程师修炼指南】进行持续学习!我们一同学习,一起进步,关注后回复【加群】哟!


0x01 Python3 流程控制语句

描述:在 Python 编程中,流程控制语句是用来控制程序执行顺序的,它分为条件控制循环语句

条件控制关键字:if...elif...elsematch...case( Python 3.10 新增,类似于其他编程中 switch...case 语句)

循环语句关键字:while、for、else、break、continue、pass

1.Python3编程中条件控制

描述:Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。

1.1 if 语句

描述:在 Python 中,if 条件语句的流程图可以帮助你理解代码的逻辑流,下面是一个简单的 if-elif-else 嵌套条件语句的流程图:

代码语言:javascript
复制
graph TD;
    Start["开始"] --> CheckCondition{"条件1?"};
    CheckCondition -- 是 --> Action1["执行操作1"];
    CheckCondition -- 否 --> CheckCondition2{"条件2?"};
    CheckCondition2 -- 是 --> Action2["执行操作2"];
    CheckCondition2 -- 否 --> Action3["执行操作3"];
    Action1 --> End["结束"];
    Action2 --> End;
    Action3 --> End;

语法格式:

方式1.if-elif-else 及嵌套条件语句格式:

代码语言:javascript
复制
# 常规
if [表达式1]:
  执行语句
elif [表达式2]:
  执行语句
else:
  执行语句


# 嵌套
if 表达式1:
    语句
    if 表达式2:
        语句
    elif 表达式3:
        语句
    else:
        语句
elif 表达式4:
    语句
else:
    语句

方式2.三元(三目)操作符 语句格式:

代码语言:javascript
复制
# Python 是一种极简主义的编程语言,它没有引入? :这个新的运算符,而是使用已有的 if else 关键字来实现相同的功能。
# 如果条件为真时候将x值赋给small,为假时候将y值赋给small
x if 条件 else y  

示例演示

  • 示例1.狗的年龄计算判断。
代码语言:javascript
复制
#!/usr/bin/python3
# coding=utf-8
age = int(input("请输入你家狗狗的年龄: "))
print("")
if age <= 0:
    print("你是在逗我吧!")
elif age == 1:
    print("相当于 14 岁的人。")
elif age == 2:
    print("相当于 22 岁的人。")
elif age > 2:
    human = 22 + (age -2)*5
    print("对应人类年龄: ", human)
 
# 退出提示
input("点击 enter 键退出")

执行结果:

代码语言:javascript
复制
$ python3 dog.py 
请输入你家狗狗的年龄: 1

相当于 14 岁的人。
点击 enter 键退出
  • 示例2.验证输入的数字是否为奇数或偶数。
代码语言:javascript
复制
# !/usr/bin/python3
# coding=utf-8
num=int(input("输入一个数字:"))
if num%2==0:
    if num%3==0:
        print ("你输入的数字可以整除 2 和 3")
    else:
        print ("你输入的数字可以整除 2,但不能整除 3")
else:
    if num%3==0:
        print ("你输入的数字可以整除 3,但不能整除 2")
    else:
        print  ("你输入的数字不能整除 2 和 3")
  • 示例3.三目运算符的嵌套使用。
代码语言:javascript
复制
# !/usr/bin/python3
# coding=utf-8
num=int(input("输入一个数字:"))
( print("能被 2 或 3 都整除") if num%3==0 else print("能被 2 整除,但不能被 3 整除") ) if num%2==0 else ( print("能被 3 整除,但不能被 2 整除") if num%3==0 else print("不能被 2 或 3 整除"))

补充知识: Python 中的 else 语句联用说明。

  • else 语句跟 if 语句搭,构成“要么怎样,要么不怎样”的语境
  • else 语句跟 for / while 语句搭,构成“干完了能怎样,干不完就别想怎样”的语境
  • else 语句跟 try 语句搭构成“没有问题,那就干吧”的语境
  • else 语句与for/while语句搭配时候, 只有在循环正常执行完成后才会执行 else 语句块的内容。

特别注意

  • Python中不是使用{}包含条件代码块,而是采用缩进的方式来判别执行的代码块;
  • Python中如果 if 语句中的条件过长,可以用接续符 \ 来换行,注意 \ 后的一行要缩进没有要求,可无序缩进,但我们保持代码的可读性一般设置同样的缩进格式。
代码语言:javascript
复制
if 2>1 and 3>2 and 4>3 and \
    5>4 and 6>5 and 7>6 and \
    8>7:
    print("OK")
  • Python中当条件结果为0, false, '',[], (), {}, set(), None时都将返回false,当条件不为 0, True, 'None',至少有一个元素的容器对象, 字符串不为空串,则都将返回为真;

类型

False

True

布尔

False(与0等价)

True(与1等价)

数值

0, 0.0

非零的数值

字符串

'', ""(空字符串)

非空字符串

容器

[], (), {}, set()

至少有一个元素的容器对象

None

None

非None对象

  • 三目运算符是可以嵌套, 但需要注意 if 和 else 的配对使用,例如:
代码语言:javascript
复制
a if a > b else c if c>d else d
a if a > b else ( c if c>d else d )
1.2 match 语句

描述:从 Python 3.10 开始引入 match...case 条件语句,,也被称为“模式匹配”或“结构化匹配”。有了它我们就不需要再使用一连串的 if-else 来判断,match 后的对象会依次与 case 后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过,最后的case _:类似于 C 和 Java 中的 default:,当其他 case 都无法匹配时,匹配这条,保证永远会匹配成功。

下图,是一个 match...case 条件语句的流程图:

代码语言:javascript
复制
graph TD;
  Start["开始"] --> Match{"匹配表达式"};
  Match -- 匹配模式1 --> Case1["执行操作1"];
  Match -- 匹配模式2 --> Case2["执行操作2"];
  Match -- 匹配模式3 --> Case3["执行操作3"];
  Match -- 默认情况 --> DefaultCase["执行默认操作"];
  Case1 --> End["结束"];
  Case2 --> End;
  Case3 --> End;
  DefaultCase --> End;

语法格式:

代码语言:javascript
复制
match subject:
  case <pattern_1>:
      <action_1>
  case <pattern_2>:
      <action_2>
  case <pattern_3>:
      <action_3>
  case _:   # _ 是一个特殊的“占位符”模式,用于匹配任何值(类似于 else)
      <action_wildcard>

使用示例:

  • 示例1.基本模式匹配.
代码语言:javascript
复制
x = 10
match x:
  case 10:
    print("x is 10")
  case 20:
    print("x is 20")
  case _:
    print("x is something else")
  • 示例2.对象模式匹配 (重点学习)
代码语言:javascript
复制
class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

p = Point(0, 3)
match p:
    case Point(x=0, y=y):
        print(f"Point is on the Y axis at {y}")
    case Point(x=x, y=0):
        print(f"Point is on the X axis at {x}")
    case Point(x, y):
        print(f"Point is at ({x}, {y})")
    case _:
  • 示例3.OR 模式匹配, 使用 | 来表示一个或多个模式。
代码语言:javascript
复制
x = 2
match x:
  case 1 | 2 | 3:
    print("x is 1, 2, or 3")
  case _:
    print("x is something else")
  • 示例4.if 模式匹配
代码语言:javascript
复制
x = 10
match x:
    case x if x > 5:
        print("x is greater than 5")
    case _:
        print("x is 5 or less")

2.Python3编程中循环语句

描述:Python 循环语句有 for 和 while,当满足循环条件时,就重复执行相应的代码块,此外还设有 break(结束当前循环),continue(跳过本次循环)等循环语句中的关键字用于退出或者跳过循环, 以及 pass 空语句主要为了保持程序结构的完整性。。

特别注意: 循环语句中注意冒号和缩进,另外,在 Python 中没有 do..while 循环。

2.1 while 语句

在 Python 中,while 条件语句用于创建循环结构, 下面是一个 while 条件语句的流程图:

代码语言:javascript
复制
graph TD;
  Start["开始"] --> CheckCondition{"条件"};
  CheckCondition -- 是 --> Action["执行操作"];
  Action --> CheckCondition;
  CheckCondition -- 否 --> End["结束"];

语法格式:

代码语言:javascript
复制
while (表达式条件):
  为真则执行代码块
else:
  当条件变为 False 时,则执行 else 语句
2.2 for 语句

在 Python 中,for 条件语句用于迭代序列(如列表、元组、字典、集合或字符串)。下面是一个 for 条件语句的流程图:

代码语言:javascript
复制
graph TD;
    Start["开始"] --> Initialize{"初始化迭代器"};
    Initialize --> CheckNext{"是否有下一个元素?"};
    CheckNext -- 是 --> Action["执行操作"];
    Action --> CheckNext;
    CheckNext -- 否 --> End["结束"];

语法格式:

代码语言:javascript
复制
for 变量 in 表达式:
  循环体
else:
  它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行, 但循环被break终止时不执行。

示例演示

  • 示例1.使用 while 、for 循环语句分别实现1-100 所有整数的和。
代码语言:javascript
复制
# while 循环
num=1
sum=0
while(num <= 100):
  sum += num
  num += 1
print("1-100所有整数和为:",sum) # 5050

# for 循环
sum=0
for i in range(1,101):
  sum += i
print("1-100所有整数和为:",sum) # 5050
  • 示例2.计算十进制转其他进制数。
代码语言:javascript
复制
#十进制转化
while True:
    number = input('请输入一个整数(输入Q退出程序):') 
    if number in ['q','Q']:
        break                #如果输入的是q或Q,结束退出
    elif not number.isdigit():
        print('您的输入有误!只能输入整数(输入Q退出程序)!请重新输入')
        continue         #如果输入的数字不是十进制,结束循环,重新开始
    else :
            number = int(number)
            print('十进制 --> 十六进制 :%d -> 0x%x' %(number,number))
            print('十进制 -->   八进制 :%d -> 0o%o' %(number,number))
            print('十进制 -->   二进制 :%d ->'%number,bin(number))
  • 示例3.逆序打印九九乘法表
代码语言:javascript
复制
for i in range(9,0,-1):
    for j in range (1,i):
        print("\t",end="")
    for k in range (i,10):
        print("%dx%d=%d" % (i,k,k*i), end="\t")
    print()

执行结果:

  • 示例4.2~10那些是质数(只能被1或者本身整除的)
代码语言:javascript
复制
for x in range(2,10):
    for y in range(2,x):
        if x % y == 0:
            print(x,'不是质数,能被',y , '*', x // y , '得到')
            break
    else:
        #循环中找到元素,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被break终止时不执行。 
        print(x,'是质数')

执行结果:

代码语言:javascript
复制
2 是质数
3 是质数
4 不是质数,能被 2 * 2 得到
5 是质数
6 不是质数,能被 2 * 3 得到
7 是质数
8 不是质数,能被 2 * 4 得到
9 不是质数,能被 3 * 3 得到
2.3 pass 语句

在 Python pass是空语句,是为了保持程序结构的完整性,简单的说它不做任何事情,一般用做占位语句。

使用示例:

代码语言:javascript
复制
# 常规使用
if True:
  pass

while True:
  pass  # 等待键盘中断 (Ctrl+C)

# 最小的类
class MyEmptyClass:
  pass
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈工程师修炼指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言简述
  • 0x01 Python3 流程控制语句
    • 1.Python3编程中条件控制
      • 1.1 if 语句
      • 1.2 match 语句
    • 2.Python3编程中循环语句
      • 2.1 while 语句
      • 2.2 for 语句
      • 2.3 pass 语句
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档