【测试开发学习历程】python流程控制

news2025/1/19 20:26:11

前言:写到这里也许自己真的有些疲惫了,但是人生不就是像西西弗斯推石上山一样的枯燥乏味吗?

在python当中的流程控制主要包含以下两部分的内容:

  • 条件判断

  • 循环

1 条件判断

条件判断用if语句实现,if语句的几种格式:

  • if...表示满足条件,则执行相应的操作,否则什么都不执行;

  • if...else...表示如果满足条件则执行if后面的操作,否则执行else后面的操作;

  • if...elif...elif...else...表示多条件判断,如果满足第一个条件就执行第一个操作,如果满足第二个条件就执行第二个操作,...,如果都不满足就执行else后面的操作。

注意:if可以独立存在,但else必须跟if配对,else是跟它前面最近同级的if配对。

Python中的代码缩进:在python中相同缩进的代码属于同级,一般上下级之间缩进4个空格(按1次Tab

1.1 if...

作用:如果if后面的布尔表达式值为True就执行if下的代码块,如果为False就不执行

格式:

if 布尔表达式:
   代码块

举例:

#从键盘输入一个数字,如果大于10就输出“大于10”
num1=int(input("请输入一个数字:"))
if num1>10:
    print("大于10")
​
#结合布尔值(为True则执行,为False则不打印
if 8:
    print("你好")
if "不为空":
    print("真的")
​
#结合成员运算符(in、not)-满足条件执行print,不满足则不执行
str1 = "adgcgag"
if "ad" in str1:
    print("在里面")

1.2 if...else...

作用:如果if后面的布尔表达式值为True就执行if下的代码块,如果为False就执行else下的代码块。

格式:

if 布尔表达式:
    代码块
#从键盘输入一个数字,如果大于10就输出“大于10”,如果不大于10就输出“不大于10”
num1=int(input("请输入一个数字:"))
if num1>10:
    print("大于10")
else:
    print("不大于10")
​
#从键盘输入一个整数,如果整数是奇数,就打印奇数,如果不是奇数,就打印偶数
third=int(input("请输入一个整数:"))
if third%2==1:
    print("奇数")
else:
    print("偶数")
#注意if和else是同级的,应该对齐。

1.3 if...elif...elif...else...

作用:从第一个条件开始逐一判断,遇到第一个满足的条件就执行它下面的语句,并结束判断不再往下判断。

格式:

if 布尔表达式:
    代码块
elif 布尔表达式:
    代码块
    ... 
else:
    代码块

举例:

#从键盘输入一个数字,如果大于10就输出“大于10”,如果小于10就输出“小于10”,否则输出等于10
num1=int(input("请输入一个数字:"))
if num1>10:
    print("大于10")
elif num1<10:
    print("小于10")
else:
    print("等于10")    
#举例:当遇到某个条件满足时就不会再往下判断
forth=int(input("请输入一个整数:"))
if forth<10:
    print("小于10")
elif forth>=10:
    print("大于10")
elif forth>=20:
    print("大于20")
else:
    print("其它")

2 循环

  • while循环

  • for循环

2.1 while循环

while循环:当满足循环条件时就执行循环体里的代码,直到循环条件不满足为止。中括号表示else是可选的,如果有else,那么else后面的代码会在循环正常结束后执行。使用while循环一定要有修改循环条件的语句,否则会造成死循环(在某条件下,一直执行语句,直到条件为False)。

格式:

while 布尔表达式:
    循环体
[else:
    语句块]

举例:

# 不带else语句
i=1  #给个初始值
while i<=10:    #1.条件限制
    print(i)
    i+=1        #2.条件,递增
#两个条件要结合,如果不限制,会导致死循环
​
#带else语句
i=1
while i<=10:    #1.条件限制
    print(i)
    i+=1        #2.条件,递增
else:
    print("打印完毕")
​
#实现1+2+3+...+100,并输出计算结果
num1=0
i=1
while i<=100:
    num1+=i
    i+=1
else:
    print(num1)
    
#思考:1*2*3*...*100 ?
  1. 当布尔表达的值为True的时候,就执行循环体的代码,直到布尔表达的值为False的时候或者被break;

  2. else语句是可选的,如果有else语句,当循环正常结束(不是被break语句结束的情况)后会执行else后面的语句,如果循环是被break掉,就不会执行else后面的操作。

2.2 for循环

迭代(Iteration):指重复执行某个操作,迭代最常用的表现就是遍历,经常用for循环来遍历可迭代对象(Iterable),常见的可迭代对象包括字符串、列表、元组、集合和字典等。

结构:

for 变量名 in 可迭代对象:
    循环体
[else:
   语句块]

举例:

#1.将字符串"helloworld"遍历出来添加到列表list1中
list1=[]
for i in "helloworld":
    list1.append(i)
print(list1)
​
#2.遍历元组中的元素
tuple1 = (1,3,5,6,7)
for i in tuple1:
    print(i)
else:
    print("遍历完成")
​
#3.用for循环遍历字典
dict1={"姓名":"张三","性别":"男","年龄":20}
#遍历字典,默认取到的是字典的key
for i in dict1:
    print(i)
#遍历字典的key
for i in dict1.keys():
    print(i)
#遍历字典的value
for i in dict1.values():
    print(i)
#遍历字典的键值对
for i,j in dict1.items():
    if i=="年龄":
        print(i,j)

while循环和for循环的区别:while循环执行前,循环次数是不确定的;for循环在循环前执行次数是已经确定的。
​​​​​

2.3 循环的嵌套

2.3.1 while中套while循环

举例:

# 在10中找两个数i和j,满足条件j <= (i / j)时,如果i能除尽j则打印“能除尽”并打印i和j的值,如果不满足则打印“不满足条件”并打印不满足条件的i和j的值
i = 2
while (i < 10):
    j = 2
    while (j <= (i / j)):
        if not (i % j):
            print("能除尽",i,j)
        j = j + 1
    else:
        print("不满足条件",i,j)
    i = i + 1
print("算完")

2.3.2 for循环中套for循环

举例:

# 九九乘法表
for i in range(1,10): # 依次取数1到9
    for j in range(1,i+1): # 根据i的取值来取值,i取1时,j的范围也是1
        print("{} x {} = {}\t".format(j,i,i*j),end="") # 根据上面两个循环取出的书打印格式化数据。
    print()# 把一次循环的数据打印完成后换行

除此之外,还可以在while循环中嵌套for循环,以及在for循环中嵌套while循环。

2.3.3 冒泡排序

冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。

arr = [64, 34, 25, 12, 22, 11, 90]
​
# 遍历所有数组元素
for i in range(len(arr)-1):
    for j in range(0, len(arr) - i - 1):
        if arr[j] > arr[j + 1]:
            arr[j], arr[j + 1] = arr[j + 1], arr[j]
else:
    print(arr)

2.4 循环中的continue/break/pass语句

  • continue

  • break

  • pass

2.4.1 continue语句

作用:continue的作用是结束本次循环(在某一次循环中遇到continue语句时,直接结束本次循环,不执行continue后面的代码,而开始执行下一次循环)。

举例:

# 在0到10的数字中打印所有奇数,不是奇数的就不打印出来
a = 0
while a < 10:
    a += 1
    if a%2 ==0:
        continue   # 跳过本次循环,进入下一次循环
    print("奇数",a)
else:
    print("没有奇数了")
​
#3、输出0到100之间被3整除的整数,如果这个数能被5整除则不输出
for i in range(101):
    if i%3==0:
        if i%5==0:
            continue
        print(i)

2.4.2 break语句

作用:是结束本层循环,可以跳出for和while的循环体(所有循环),任何对应的循环else块将不执行。

举例:

# 整数0到10中,取能被2整除的数,取到第一个数就结束循环,不执行后面的代码
a = 0
while a < 10:
    a += 1
    if a%2 ==0:
        break # 满足上面条件了,直接结束本层所有循环,不执行后面的语句
    print("奇数",a)
else:
    print("没有奇数了")

2.4.3 pass语句

作用:是空语句,是为了保持程序结构的完整性。不做任何事情,一般用做占位语句

举例:

# 输出 Python 的每个字母
for str1 in 'Python':
   if str1 == 'h':
      pass # 占位,不做任何操作
   print(str1)

思考:

  • 求100以内的偶数

  • 100以内的奇数

  • 分别打印如下图形

图形1:

图形2:

图形3:

图形4:

# 每层不同的*数量,依次递增(差一)
for a in range(6):
print("*"*a)
# 每层不同,递增差二
#1.方法1
for b in range(1,8,2):
print("*"*b)
#2.方法二
b = 5
for b in range(1,b+1):
print("*"*(2*b-1))
​
# 金字塔
cengshu = 7
for b in range(1,cengshu+1):
print(" "*(cengshu-b),"*"*(2*b-1))
​
# 金字塔,中间为空           
for i in range(6):  #循环6次打印6行
for j in range(5-i):   #打印空格每次循环递减
 print(' ',end='')
for q in range(2*i+1): #打印星星
if q==0 or  q==2*i: #判断打印星星位置,在开头,结尾和最后一行打印星星
    print('*',end='')
else:
    print(' ',end='')
print() #每行循环结束后换行            

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1571931.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微软detours代码借鉴点备注

comeasy 借鉴点1 Loadlibray的时间选择 注入库wrotei.dll&#xff0c;为了获取istream的接口&#xff0c;需要loadlibrary&#xff0c;但是在dllmain中是不建议这样做的。因此&#xff0c;动态库在dllmain的时候直接挂载了comeasy.exe的入口 //获取入口 TrueEntryPoint (i…

太阳能光伏储能系统:全周期一站式解决方案

随着全球能源结构的不断变革&#xff0c;清洁能源的重要性日益凸显。太阳能光伏储能系统作为一种高效、环保的能源解决方案&#xff0c;正逐渐成为推动能源转型的关键力量。本文将详细介绍太阳能光伏储能系统的全周期一站式解决方案&#xff0c;以期为读者提供全面、深入的了解…

动态多目标优化:动态约束多目标优化测试集DCP1-DCP9的TruePF(提供MATLAB代码)

一、进化动态约束多目标优化测试集DCP1-DCP9 参考文献&#xff1a; [1]G. Chen, Y. Guo, Y. Wang, J. Liang, D. Gong and S. Yang, “Evolutionary Dynamic Constrained Multiobjective Optimization: Test Suite and Algorithm,” in IEEE Transactions on Evolutionary Com…

聚能共创下一代智能终端操作系统 软通动力荣膺“OpenHarmony优秀贡献单位”

近日&#xff0c;由开放原子开源基金会指导&#xff0c;以“开源共享未来”为主题的OpenHarmony社区年会在北京成功举办。本次活动汇集OpenHarmony项目群共建单位及生态伙伴等多方力量&#xff0c;旨在对2023年度OpenHarmony年度开源事业全面总结的同时&#xff0c;吸引更多伙伴…

VSCode如何调试C#代码?

1、启动VSCode&#xff1b; 一、创建项目 1、创建一个文件夹(workspace)&#xff1a; 2、进入这个文件夹 cd tt1 3、创建解决方案 dotnet new sln -o MyApp 4、进入解决方案 cd .\MyApp\ 5、创建项目&#xff08;在此假定为一个命令行的项目&#xff09; dotnet new …

PCIe 7.0|不要太卷,劝你先躺平

PCIe 6.0都已经发布了2-3年了&#xff0c;目前业内生态还没完全建立。甚至很多人都还没用上PCIe 5.0呢&#xff01; 近日&#xff0c;PCIe 7.0 ver0.5版本已经开放&#xff0c;同时宣布马不停蹄准备在2025年完成正式SPEC规范发布。 回顾PCIe 7.0变更&#xff0c;PCI-SIG在2022年…

力扣1448---统计二叉树中好节点的数量(Java、DFS、中等题)

题目描述&#xff1a; 给你一棵根为 root 的二叉树&#xff0c;请你返回二叉树中好节点的数目。 「好节点」X 定义为&#xff1a;从根到该节点 X 所经过的节点中&#xff0c;没有任何节点的值大于 X 的值。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,3,null,1,5] 输出…

SSM项目实战——哈哈音乐(四)前台模块开发

1、项目准备 ①导入依赖和前端资源 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.x…

Educational Codeforces Round 162 (Rated for Div. 2) ----- E. Count Paths --- 题解

E. Count Paths&#xff1a; 题目大意&#xff1a; 思路解析&#xff1a; 根据题目中定义的美丽路径&#xff0c;我们可以发现路径只有两种情况&#xff1a; 当前结点作为起始结点&#xff0c;那我们只需要知道它的子树下有多少个相同颜色的结点&#xff0c;并且相同颜色的结…

攻防世界:mfw[WriteUP]

根据题目提示考虑是git库泄露 这里在地址栏后加.git也可以验证是git库泄露 使用GitHack工具对git库进行恢复重建 在templates目录下存在flag.php文件&#xff0c;但里面并没有flag 有内容的只有主目录下的index.php index.php源码&#xff1a; <?phpif (isset($_GET[page…

2024年最新版FL Studio21.2.3 Build 4004 for Mac 版激活下载和图文激活教程

FL studio21中文别名水果编曲软件&#xff0c;是一款全能的音乐制作软件&#xff0c;包括编曲、录音、剪辑和混音等诸多功能&#xff0c;让你的电脑编程一个全能的录音室&#xff0c;它为您提供了一个集成的开发环境&#xff0c;使用起来非常简单有效&#xff0c;您的工作会变得…

重读Java设计模式: 桥接模式详解

引言 在软件开发中&#xff0c;经常会遇到需要在抽象与实现之间建立连接的情况。当系统需要支持多个维度的变化时&#xff0c;使用传统的继承方式往往会导致类爆炸和耦合度增加的问题。为了解决这一问题&#xff0c;我们可以使用桥接模式。桥接模式是一种结构型设计模式&#…

机器学习中的GBDT模型及其优缺点(包含Python代码样例)

目录 一、简介 二、优缺点介绍 三、Python代码示例 四、总结 一、简介 GBDT&#xff08;Gradient Boosting Decision Tree&#xff09;是一种集成学习算法&#xff0c;被广泛应用于机器学习中的回归和分类问题。它由多个决策树组成&#xff0c;每个决策树都通过迭代逐渐提升…

巧用 STM32CubeIDE 之编译警告

1. 前言 编译警告对于工程师们来说&#xff0c;是再常见不过的了。对于严谨的工程师们来说&#xff0c;任何warning 都是不可忽视的。 2. 巧妙使用 warning 在 STM32CubeIDE 中&#xff0c;我们可以通过主动 warning&#xff08;甚至 error&#xff09;的方式来通知工程师&a…

计算机网络-TCP基础、三次挥手、四次握手过程

TCP基础 定义&#xff1a;TCP是面向连接的、可靠的、基于字节流的传输层通信协议。这意味着在发送数据之前&#xff0c;TCP需要建立连接&#xff0c;并且它能确保数据的可靠传输。此外&#xff0c;TCP将数据视为无结构的连续字节流。面向连接&#xff1a;TCP只能一对一进行连接…

ES6中数组新增的扩展和方法

文章目录 一、扩展运算符的应用二、构造函数新增的方法Array.from()Array.of()三、实例对象新增的方法copyWithin()find()、findIndex()fill()entries()&#xff0c;keys()&#xff0c;values()includes()flat()&#xff0c;flatMap()四、数组的空位五、sort排序稳定性 参考文献…

响应式网站设计哪个类型比较适合你?

响应式网站设计哪个类型比较适合你&#xff1f;有很多人对于响应式网站还不太了解&#xff0c;其实这种网站就是以创建页面的图片排版大小&#xff0c;来根据浏览网站用户所使用网络设备&#xff0c;自动化适应这些设备。 不管是出于网站兼容性还是用户信息需求&#xff0c;它都…

RK3568测试

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

深入浅出 -- 系统架构之微服务架构的新挑战

尽管微服务架构有着高度独立的软件模块、单一的业务职责、可灵活调整的技术栈等优势&#xff0c;但也不能忽略它所带来的弊端。本篇文章&#xff0c;我们从网络、性能、运维、组织架构和集成测试五个方面来聊一下设计微服务架构需要考虑哪些问题&#xff0c;对设计有哪些挑战呢…

使用 Apipost 管理项目接口文档

目录 前言 基本使用教程 注册账号 创建项目 创建接口 编辑接口 ​编辑 接口设计 生成文档 接口用例 前言 在 web 后端开发中&#xff0c;开发接口之前通常需要先写接口文档&#xff0c;然后前后端再根据接口文档开始开发系统模块。接口文档形式多种多样&#xff0c…