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

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

在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() #每行循环结束后换行            

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【研发管理】产品经理知识体系-数字化战略

导读: 数字化战略对于企业的长期发展具有重要意义。实施数字化战略需要企业从多个方面进行数字化转型和优化&#xff0c;以提高效率和创新能力&#xff0c;并实现长期竞争力和增长。 目录 1、定义 2、数字化战略必要性 3、数字战略框架 4、数字化转型对产品和服务设计的影响…

京东云轻量云主机8核16G配置租用价格1198元1年、4688元三年

京东云轻量云主机8核16G服务器租用优惠价格1198元1年、4688元三年&#xff0c;配置为8C16G-270G SSD系统盘-5M带宽-500G月流量&#xff0c;华北-北京地域。京东云8核16G服务器活动页面 yunfuwuqiba.com/go/jd 活动链接打开如下图&#xff1a; 京东云8核16G服务器优惠价格 京东云…

截稿倒计时 CCF-B 推荐会议EGSR’24论文摘要4月9日提交

会议之眼 快讯 第35届EGSR 2024 (Eurographics Symposium on Rendering)即欧洲图形学渲染专题讨论会将于 2024 年 7月3日-5日在英国伦敦帝国理工学院举行&#xff01;在EGSR之前&#xff0c;将有一个全新的联合研讨会&#xff0c;即材料外观建模&#xff08;MAM&#xff09;和…

非机构化解析【包含PDF、word、PPT】

此项目是针对PDF、docx、doc、PPT四种非结构化数据进行解析&#xff0c;识别里面的文本和图片。 代码结构 ├── Dockerfile ├── requirements ├── resluts ├── test_data │ ├── 20151202033304658.pdf │ ├── 2020_World_Energy_Data.pdf │ ├── …

JVM字节码与类的加载——class文件结构

文章目录 1、概述1.1、class文件的跨平台性1.2、编译器分类1.3、透过字节码指令看代码细节 2、虚拟机的基石&#xff1a;class文件2.1、字节码指令2.2、解读字节码方式 3、class文件结构3.1、魔数&#xff1a;class文件的标识3.2、class文件版本号3.3、常量池&#xff1a;存放所…

【MATLAB源码-第181期】基于matlab的32QAM调制解调系统频偏估计及补偿算法仿真,对比补偿前后的星座图误码率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 在通信系统中&#xff0c;频率偏移是一种常见的问题&#xff0c;它会导致接收到的信号频率与发送信号的频率不完全匹配&#xff0c;进而影响通信质量。在调制技术中&#xff0c;QPSK&#xff08;Quadrature Phase Shift Keyi…

python打印杨辉三角形

杨辉三角形&#xff0c;这个在国外被叫做帕斯卡三角形&#xff0c;中华文明为何立于世界之颠&#xff0c;这个就是最好的证明&#xff0c;古人的杨辉至少是这个帕斯卡的鼻祖辈&#xff0c;比帕某早了393年发现&#xff0c;那时候可没有知识产权概率&#xff0c;不然就是妥妥的侵…

[尚硅谷 flink] 基于时间的合流——双流联结(Join)

文章目录 8.1 窗口联结&#xff08;Window Join&#xff09;8.2 **间隔联结&#xff08;Interval Join&#xff09;** 8.1 窗口联结&#xff08;Window Join&#xff09; Flink为基于一段时间的双流合并专门提供了一个窗口联结算子&#xff0c;可以定义时间窗口&#xff0c;并…

鲸鱼优化算法(Whale Optimization Algorithm)

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 算法背景 鲸鱼优化算法&#xff08;Whale Optimization Algorithm, WOA&#xff09;是一种模拟鲸鱼捕食行为的优化算法。想象一下&#xff0c;你…

一文学会Semaphore(信号量)

// 空出来椅子 semaphore.release(count); } } catch (Exception e){ } } }; t.setName("Thread --> " i); t.start(); } } 程序将一直执行下去&#xff0c;不会漏单&#xff0c;也不会出现椅子占用数量大于20的情况。 AQS基础 Semaphore是一种共享锁&#xf…

若依框架mysql 搜索中文等于不生效

背景&#xff0c;字段存储的是中文 不生效代码如下 <if test"constellation ! null and constellation ! ">AND u.constellation #{constellation}</if> 正确生效的代码如下 <if test"constellation ! null and constellation ! ">A…

kubernetes集群添加到jumpserver堡垒机里管理

第一步、在kubernetes集群中获取一个永久的token。 jumpserver堡垒机用api的来管理kubernetes&#xff0c;所以需要kubernetes的token&#xff0c;这个token还需要是一个永久的token&#xff0c;版本变更&#xff1a;Kubernetes 1.24基于安全方面的考虑&#xff08;特性门控Le…

C语言自定义类型变量——结构体(二)

前言&#xff1a;上一篇内容中我们概述了结构体的基本内容&#xff0c;包括结构体的定义&#xff0c;声明&#xff0c;创建和初始化&#xff0c;内存对齐等问题&#xff0c;本篇将进一步深入结构体相关内容&#xff0c;包括为什么会存在内存对齐&#xff0c;结构体如何传参&…

【JavaWeb】Day35.MySQL概述——数据库设计-DDL(二)

表操作 关于表结构的操作也是包含四个部分&#xff1a;创建表、查询表、修改表、删除表。 1.创建 语法 create table 表名( 字段1 字段1类型 [约束] [comment 字段1注释 ], 字段2 字段2类型 [约束] [comment 字段2注释 ], ...... 字段n 字段n类型 [约束] [comment …

Matlab应用层生成简述

基础软件层 目前接触到的几款控制器&#xff0c;其厂商并没有提供simulink的基础软件库一般为底层文件被封装为lib&#xff0c;留有供调用API接口虽然能根据API接口开发基础软件库&#xff0c;但耗费时间过长得不偿失 应用层 所以可以将应用层封装为一个子系统&#xff0c;其…

二. CUDA编程入门-双线性插值计算

目录 前言0. 简述1. 执行一下我们的第十个CUDA程序2. Bilinear interpolation3. 代码分析总结参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 Note&#xff1a;关于 CUDA 加速双线程插值的内容博主…

王权与自由国际服加速器推荐 一键下载王权与自由加速器分享

《王权与自由》&#xff0c;还记得第一天进游戏各个服务器爆满锁服的盛况&#xff0c;好不容易挤进去&#xff0c;地图上人山人海&#xff0c;NPC埋没在玩家的人海里&#xff0c;差点找不到。迎来了12月20日的大型更新后&#xff0c;再进入游戏&#xff0c;服务器每一个都空闲无…

【C语言】函数递归编程题

目录 题目一&#xff1a; 题目二&#xff1a; 题目三&#xff1a; 题目四&#xff1a; 总结 题目一&#xff1a; 题目&#xff1a;接受一个整型值&#xff08;无符号&#xff09;&#xff0c;按照顺序打印它的每一位。&#xff08;递归完成&#xff09; 列如&#xff1a; …

0104练习与思考题-算法基础-算法导论第三版

2.3-1 归并示意图 问题&#xff1a;使用图2-4作为模型&#xff0c;说明归并排序再数组 A ( 3 , 41 , 52 , 26 , 38 , 57 , 9 , 49 ) A(3,41,52,26,38,57,9,49) A(3,41,52,26,38,57,9,49)上的操作。图示&#xff1a; tips:&#xff1a;有不少在线算法可视化工具&#xff08;软…

C#基础:类,对象,类成员简介(第四节课)

本节内容&#xff1a; 类与对象的关系 什么时候叫“对象”&#xff0c;什么时候叫实例引用变量与实例的关系 类的三大成员 属性方法事件 类的静态成员与实例成员 关于“绑定” 1.什么是类&#xff1a;&#xff08;再详细一点&#xff09; 类是对现实世界事物进行抽象所…