Python-程序逻辑结构与控制流

简介: Python-程序逻辑结构与控制流

程序逻辑

程序逻辑是编程语言中的重要组成部分,一般来说程序的结构包含有三种:

顺序结构、选择结构、循环结构


分支结构

在Python中可以通过if、else、elif关键字实现分支处理

使用if分支语句

# coding:UTF-8
age = 20 ;
if 18 < age <= 22:                                  # 分支语句
    print("我是个大学生,拥有无穷的拼搏与探索精神!")      # 利用缩进定义分支结构
  print("开始为自己的梦想不断努力拼搏!")

使用if…else分支语句

# coding:UTF-8
chePiao = 1 # ⽤1代表有⻋票,0代表没有⻋票
if chePiao == 1:
  print("有⻋票,可以上⽕⻋")
  print("终于可以⻅到Ta了,美滋滋~~~")
else:
  print("没有⻋票,不能上⻋")
  print("亲爱的,那就下次⻅了,⼀票难求啊~~~~(>_<)~~~~")

使用if…else多条件判断

  • 当xxx1满⾜时,执⾏事情1,然后整个if结束
  • 当xxx1不满⾜时,那么判断xxx2,如果xxx2满⾜,则执⾏事情2,然后整个if结束
  • 当xxx1不满⾜时,xxx2也不满⾜,如果xxx3满⾜,则执⾏事情3,然后整个if结束
# coding:UTF-8
score = 90.00;                          # 考试成绩
# score = float(input("输入成绩:"))      # 键盘输入考试成绩
if 90.00 <= score <= 100.00:            # 判断条件1
    print("优等生!")
elif 60.00 <= score < 90.00:            # 判断条件2
    print("良等生!")
else:                                   # 条件不满足时执行
    print("差等生。")

注意:和else⼀起使⽤

当 “性别为男性” 不满⾜,“性别为⼥性”也不满⾜,那么默认执⾏else后⾯的代码,即 “第三种性别的特征”相关代码

elif必须和if⼀起使⽤,否则出错


if嵌套

chePiao = 1 # ⽤1代表有⻋票,0代表没有⻋票
daoLenght = 9 # ⼑⼦的⻓度,单位为cm
if chePiao == 1:
  print("有⻋票,可以进站")
  if daoLenght < 10:
    print("通过安检")
    print("终于可以⻅到Ta了,美滋滋~~~")
  else:
    print("没有通过安检")
  print("⼑⼦的⻓度超过规定,等待警察处理...")
else:
  print("没有⻋票,不能进站")
  print("亲爱的,那就下次⻅了,⼀票难求啊~~~~(>_<)~~~~")

断言-assert

在Python语言中提供有assert关键字以实现断言,利用此机制就可以在程序开发过程中清楚的知道那个地方可能产生错误的执行结果。

# coding:UTF-8
age = 18
# 假设中间要经历过若干次的age变量内容修改操作
assert 18 < age < 50 , "age变量内容处理错误!"     # 程序断言,看是否满足判断条件
print("您的年龄是:%d" % age)

😀应用:猜拳游戏

  • 第一版:
# coding:UTF-8
import random
player_str = input('输入你的选择,石头/1 剪刀/2 布/3\n')
player = int(player_str)
computer = random.randint(1, 3)  # 逗号后加空格,虽然不影响结果
print('因为电脑输出了', computer)  # 没有字符串自动强类型转换,不能拼接                                                   
print('-----------')  
if player - computer == -1 or player - computer == 2:
    print('你赢了')
elif computer - player == -1 or computer - player == 2:
    print('电脑赢了')
else:
    print('平局')
print('-----------')

  • 第二版:
# coding:UTF-8
import random
class caiquan():
    print('欢迎来到猜拳游戏')
    print('进入游戏--8')
    print('退出游戏--9')
    b = input("请输入:")
    print("你的选择是: ", b)
    print("\n")
    while b == '8':
         print('请进行猜拳:')
         print('石头--0')
         print('布--1')
         print('剪刀--2')
         print('退出游戏--9')
         print('-------------')
         # 如果输入的数不是0,1,2;可以设置为重新输入,或者设置为失败
         a = random.randint(0, 2)
         b = int(input("你选择的是:"))  # 整型,
         print("电脑选择的是:", a)
         print("-------------")
         if (a == 0 and b == 1) or (a == 1 and b == 2) or (a == 2and b == 0):
            print("你赢了!\n")
         elif a == b:
            print("平局!\n")
         else:
          print("你输了!\n")
    print('-------------')
    print('继续游戏--8')
    print('退出游戏--9')
    b = input("请重新选择:")
    print("你的选择是: ", b + "\n")
if __name__ == "__main__":
    caiquan()
    print('游戏结束!')
    pass


循环结构


while循环结构

利用while语句实现循环条件的判断,当判断条件满足时则执行循环体的内容,有两种语法形式:

范例:使用while循环实现1 ~ 100的数字累加

# coding:UTF-8
sum = 0                                 # 保存累加计算结果
num = 1                                 # 循环初始化条件
while num <= 100:                       # 循环判断
    sum += num                           # 数据累加
    num += 1                             # 修改循环条件
print(sum)                              # 输出最终计算结果

范例:使用while…else实现1 ~ 100数字累加

# coding:UTF-8
sum = 0                                 # 保存累加计算结果
num = 1                                 # 循环初始化条件
while num <= 100:                       # 循环判断
    sum += num                          # 数据累加
    num += 1                            # 修改循环条件
else:                                   # 循环执行完毕后执行此语句
    print(sum)                          # 输出最终计算结果
print("计算完毕 ...")

范例:输出一个斐波那契数列(在1000以内的数值)

即著名的兔子数列,基本结构为:“1、1、2、3、5、8、13、21、34、55、…”,特点在于从数列的第三项开始,每个数的值为其前两个数之和

# coding:UTF-8
num_a = 0                                 # 定义初始化输出值
num_b = 1                                 # 定义初始化输出值
while num_b < 1000:                       # 输出内容不超过1000
    print(num_b, end="、")                # 输出数据
    num_a, num_b = num_b, num_a + num_b   # 数据计算
-----------------------------------
1、1、2、3、5、8、13、21、34、55、89、144、233、377、610、987、
>>>

for循环结构

在明确已知循环次数或者要进行序列数据(字符串就属于一种序列类型)遍历的情况下,可以利用for循环结构来实现循环控制,在Python中for循环结构有两种使用形式:

范例:使用for循环

# coding:UTF-8
for num in {1,2,3}:      # 定义要输出的数据范围   
print(num, end="、")     # 输出每次获取的数据

范例:使用for循环实现1 ~ 100数据累加

# coding:UTF-8
sum = 0                          # 定义变量保存计算总和
# 生成的最大数据为100,范围:0 - 100
for num in range(101):          # 遍历100次
    sum += num                        # 数据累加
print(sum)                               # 输出累加结果

范例:使用for…else循环实现1 ~ 100数据累加

# coding:UTF-8
sum = 0                   # 定义变量保存计算总和
# 生成的最大数据为100,范围:0 - 100
for num in range(101):        # 遍历100次
    sum += num                # 数据累加
else:
    print(sum)                  # 输出累加结果
print("计算结束。")

范例:迭代字符串

# coding:UTF-8
msg = "www.yootk.com"       # 定义字符串变量
for item in msg:          # 字符串遍历
    if 97 <= ord(item) <= 122:      # 97-122范围的编码为小写字母
        upper_num = ord(item) - 32      # 小写字母编码转大写字母编码
        print(chr(upper_num) , end="、")     # 将编码值转为字符
    else:             # 不是小写字母编码,不处理
        print(item, end="、")        # 信息输出

循环控制语句

在循环结构中只要循环条件满足,循环体的代码就会一直执行,但是在程序之中也提供有两个循环停止的控制语句:continue(退出本次循环)、break(退出整个循环)

范例:使用continue控制循环

# coding:UTF-8
for num in range(1, 10):        # 10次循环操作
    if num == 3:          # continue需要结合if分支使用
        continue          # 退出单次循环
    print(num, end="、")       # 内容输出

范例:使用break控制循环

# coding:UTF-8
for num in range(1, 10):        # 10次循环操作
    if num == 3:          # break需要结合if分支使用
       break          # 退出整个循环
    print(num, end="、")       # 内容输出

循环嵌套

循环结构可以在内部嵌入若干个子的循环结构,这样可以实现更加复杂的循环控制结构,但是需要注意的是,这类循环结构有可能会导致程序复杂度的提升

范例:打印乘法口诀表

# coding:UTF-8
for x in range(1, 10):                                                 # 外层循环,范围1 - 9
    for y in range(1, x + 1):                                          # 内层循环,通过外层循环控制次数
        print("%d * %d = %d" % (y, x, x * y), end="\t")                # 输出计算结果
    print()                                                            # 换行

范例:打印三角形

# coding:UTF-8
line = 5            # 打印的总行数
for x in range(0, line):        # 外层循环控制输出行
    for z in range(0, line - x):      # 随着行的增加,输出的空格数减少
        print("", end=" ");       # 信息输出
    for y in range(0, x + 1):         # 随着行的增加,输出的“*”增多
        print("*", end=" ")       # 信息输出
    print()         # 换行

范例:通过Python特点实现代码改进

# coding:UTF-8
line = 5                    # 总共打印的行数
for x in range(0, line):              # 循环控制输出行
  print(" " * (line - x),end=" ")         # 空格输出
  print("* " * (x + 1))               # “*”号输出


相关文章
|
25天前
|
机器学习/深度学习 数据采集 算法
时间序列结构变化分析:Python实现时间序列变化点检测
在时间序列分析和预测中,准确检测结构变化至关重要。新出现的分布模式往往会导致历史数据失去代表性,进而影响基于这些数据训练的模型的有效性。
42 1
|
7天前
|
jenkins 持续交付 Docker
docker之自定义制作镜像(python程序)
docker之自定义制作镜像(python程序)
|
6天前
|
Python
Python 编程入门:打造你的第一个程序
【9月更文挑战第27天】编程,就像是在数字世界里绘画。想象一下,你手中的键盘是画笔,屏幕是画布,而代码则是你的颜料。这篇文章将带你走进编程的世界,学习如何使用 Python 这门语言来创建你的第一个程序。我们将从基础的语法开始,逐步深入到条件判断和循环结构,最终完成一个简单的猜数字游戏。无论你是否有编程经验,这里的内容都将为你打开一扇新的大门。
|
6天前
|
JSON API 数据格式
使用Python发送包含复杂JSON结构的POST请求
使用Python发送包含复杂JSON结构的POST请求
|
6天前
|
Windows Python
python获取windows机子上运行的程序名称
python获取windows机子上运行的程序名称
|
29天前
|
存储 Shell 区块链
怎么把Python脚本打包成可执行程序?
该文档介绍了如何将Python脚本及其运行环境打包成EXE可执行文件,以便在不具备Python环境的计算机上运行。首先确保Python脚本能够正常运行,然后通过安装PyInstaller并使用`--onefile`参数将脚本打包成独立的EXE文件。此外,还提供了去除命令行窗口和指定可执行文件图标的详细方法。这些步骤帮助用户轻松地将Python程序分发给最终用户。
怎么把Python脚本打包成可执行程序?
|
21天前
|
机器学习/深度学习 算法 数据挖掘
决策树算法大揭秘:Python让你秒懂分支逻辑,精准分类不再难
【9月更文挑战第12天】决策树算法作为机器学习领域的一颗明珠,凭借其直观易懂和强大的解释能力,在分类与回归任务中表现出色。相比传统统计方法,决策树通过简单的分支逻辑实现了数据的精准分类。本文将借助Python和scikit-learn库,以鸢尾花数据集为例,展示如何使用决策树进行分类,并探讨其优势与局限。通过构建一系列条件判断,决策树不仅模拟了人类决策过程,还确保了结果的可追溯性和可解释性。无论您是新手还是专家,都能轻松上手,享受机器学习的乐趣。
31 9
|
24天前
|
Python
探索Python编程的奥秘:打造你的第一个程序
【9月更文挑战第8天】本文将带你进入Python编程的世界,通过一个有趣的项目——制作一个简单的猜数字游戏,让你快速入门。我们不仅会分享代码编写的步骤,还会讲解每一行代码的含义和作用,确保即使是编程新手也能跟上节奏。文章末尾附有完整代码,方便读者实践和学习。
28 12
|
21天前
|
JSON 监控 数据挖掘
Python I/O管理新篇章:优化你的程序,让数据流动更顺畅
【9月更文挑战第13天】在数据驱动时代,Python因其在数据分析、科学计算及Web开发中的广泛应用而备受青睐。本文探讨了Python I/O管理的关键方面,包括理解I/O瓶颈、使用缓冲技术、并发与异步I/O、高效数据序列化及监控调试。通过具体示例,展示了如何优化文件读写和网络通信,提高程序性能。掌握这些技能,可使数据在程序中流动更加顺畅。
34 3
|
21天前
|
Python
惊!Python进程间通信IPC,让你的程序秒变社交达人,信息畅通无阻
【9月更文挑战第13天】在编程的世界中,进程间通信(IPC)如同一场精彩的社交舞会,每个进程通过优雅的IPC机制交换信息,协同工作。本文将带你探索Python中的IPC奥秘,了解它是如何让程序实现无缝信息交流的。IPC如同隐形桥梁,连接各进程,使其跨越边界自由沟通。Python提供了多种IPC机制,如管道、队列、共享内存及套接字,适用于不同场景。通过一个简单的队列示例,我们将展示如何使用`multiprocessing.Queue`实现进程间通信,使程序如同社交达人般高效互动。掌握IPC,让你的程序在编程舞台上大放异彩。
14 3
下一篇
无影云桌面