当前位置: 首页 > news >正文

菜鸟学习日记(python)——循环语句

python中的循环语句包括for循环语句和while循环语句,但是python中是没有do...while循环语句的。

while循环语句

while循环语句的一般格式为;

while condition:loop body

condition是循环判断条件,loop body是循环体。

当循环条件成立时,就执行循环体中的语句,循环条件不成立时,跳出循环。

下面是一个简单的实例:

# #计算0到100的和
sum=0
i=0
while i<=100:sum=sum+ii=i+1
print('0到100的整数和为:%d'%sum)

无限循环:

当我们设置条件表达式永远不为 false时,可以实现无限循环

#无限循环
while True:height=input('请输入你的身高(cm):')height=float(height)print('你的身高对应标准体重为:%fkg'%(height-105))

可以按终止按钮来退出死循环

无限循环在服务器上客户端的实时请求非常有用

while...else语句

while condition:loop body
else:CodeBlock

如果while后面的条件表达式(condition)成立,那么执行循环体中(loop body)的语句,不成立时,就执行else后面的(CodeBlock)语句。

简单实例如下:

#随机才一个0到10的整数
num=random.randint(0,10)    #随机生成一个0到10之间的整数
num2=int(input('请输入你猜想的数字(整数):'))       #输入猜想的数字
i=1         #i用于计算猜数的次数
while num2!=num:        #条件表达式print('猜错了,再猜一次')num2 = int(input('请输入你猜想的数字(整数):'))i = i + 1
else:print('一共猜了%d次猜对啦!'%i)          #条件表达式不成立就执行这条语句

如果while的循环体中只有一条语句的话,可以将这条语句和while写在同一行

flag=1
while flag:print('这是一个无限循环')

for循环语句

for循环的一般格式如下:

for <variable> in <sequence>:<statements1>

variable是一个变量名,sequence是变量范围,当变量在变量范围内时,执行statements1里面的语句,否则执行statements2中的语句

下面是简单的实例:

for num in range(1,5):      #range(1,5)表示1到5的整数print(num,end='\t')     #end='\t'表示制表符,也就是4个空格
print('\n')         #\n是换行符str1='hello'        #字符串
for str in str1:print(str,end='\t')
print('\n')list1=[1,2,3]       #列表
for num in list1:print(num,end='\t')
print('\n')tuple1=(4,5,6)      #元组
for num in tuple1:print(num,end='\t')
print('\n')#注意:集合是无序的,所以打印出来的数据也是无序的
set1={'t1','t2','t3'}       #集合
for str in set1:print(str,end='\t')
print('\n')dict1={'name':'风之海蓝','sex':'男','age':33}        #字典
for str in dict1.values():print(str,end='\t')
print('\n')

需要注意的是,对于集合,打印出来的结果并不是有序的

for...else

它的一般格式为:

for <variable> in <sequence>:<statements1>
else:<statements2>

statements1是循环主体,statements2是循环结束后执行的语句

一个简单实例:

for num in range(5):print(num,end='\t')
else:print('end')

range()函数

如果需要遍历数字序列,可以使用内置 range() 函数。它会生成数列,就像上面的实例一样。

我们可以指定区间值,也可以指定步长

for num in range(0,10,2):       #0到10的整数,步长为2print(num,end='\t')
print('\n')
for num in range(0,10,3):       #0到10的整数,步长为3print(num,end='\t')
print('\n')
for num in range(0,-10,-3):       #0到-10的整数,步长为-3print(num,end='\t')
print('\n')
for num in range(-10,0,3):       #-10到0的整数,步长为3print(num,end='\t')

可以看到,range的区间可以是正数区间,也可以是负数区间,区间的右边界值不被包含在内,步长也可以是正数或者负数。但是要注意的是,区间如果是从小到大,那么步长的数值要为正,区间如果是从大到小,那么步长的数值要为负数,否则会取不到数值。

我们可以结合 range() 和 len() 函数来遍历一个序列的索引,如下所示:

list1=['t1','t2','t3']
for i in range(len(list1)):print(list1[i])

break和continue

在循环语句中,我们常常要用到break语句和continue语句,它们是用来跳出循环的,但是两者又有区别。

break:跳出整个循环。它可以跳出 for 和 while 的循环体,如果从 for 或 while 循环中使用break终止,那么对应的循环 else 块将不执行。

continue:跳出当前循环。也就是在当前循环中,continue后面的语句不执行了,直接进入下一轮循环。

以下是简单实例:

#for循环中使用break
for num in range(1,10):if num==5:breakprint(num,end='\t')
print('结束')#for循环中使用continue
for num in range(1,10):if num == 5:continueprint(num,end='\t')
print('结束')#while中使用break
num = 10
while num > 0:num = num - 1if num == 5:breakprint('当前变量值为 :', num, end='\t')
print('结束')#while中使用continue
num = 10
while num > 0:num = num - 1if num == 5:continueprint('当前变量值为 :', num, end='\t')
print('结束')

可以看到,无论是在for循环中,还是在while循环中,如果使用的是break,那么它会跳出整个循环,后面的循环语句都不会执行了(如果有else子句,else子句里面的语句也不会执行)。但是如果用的是continue,那么只有当前循环中的剩余语句不会执行,后面循环中的语句以及else子句中的语句都会执行。

如果是在嵌套循环语句中,执行break,那么会跳出当前的整个循环,不会跳出外层循环

下面是一个简单的实例:

for n in range(2, 10):for x in range(2, n):if n % x == 0:print(n, '等于', x, '*', n // x)breakelse:# 循环中没有找到元素print(n, ' 是质数')

pass语句

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

以下是一个实例:

list1=['花花','壳哥','飒飒','绒绒','海鸥哥哥']
for str in list1:if str=='飒飒':passprint('这是%s'%str)print(str)
print('结束')

可以看到pass不会对程序造成影响,不影响程序的正常运行,只作占位使用

相关文章:

  • 酶联免疫抗体试剂——博迈伦生物
  • codeblocks代码提示导致延迟的问题
  • OpenGL学习(二)绘制三维图形 固定管线
  • HTML5 基础总结
  • 【Deeplearning4j】小小的了解下深度学习
  • 使用OkHttp上传本地图片及参数
  • c++ map
  • Database: Text数据转化为向量. (高维往低维映射)
  • 串口通信(1)-硬件知识
  • 深度学习还可以从如下方面进行创新!!
  • SQL Server 2017数据库window server服务器改名操作
  • vue3快速上手
  • LED透镜粘接UV胶是一种特殊的UV固化胶
  • 14:00面试,14:06就出来了,问的问题有点变态。。。
  • Could not resolve all dependencies for configuration ‘:app:androidApis‘.
  • 【附node操作实例】redis简明入门系列—字符串类型
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JSDuck 与 AngularJS 融合技巧
  • markdown编辑器简评
  • Node + FFmpeg 实现Canvas动画导出视频
  • PV统计优化设计
  • Redux系列x:源码分析
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • tweak 支持第三方库
  • Vim 折腾记
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 闭包,sync使用细节
  • 简单易用的leetcode开发测试工具(npm)
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 前端性能优化——回流与重绘
  • 深度学习入门:10门免费线上课程推荐
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 微信小程序:实现悬浮返回和分享按钮
  • MyCAT水平分库
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ### RabbitMQ五种工作模式:
  • #微信小程序:微信小程序常见的配置传值
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (力扣)1314.矩阵区域和
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (三)mysql_MYSQL(三)
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (一)WLAN定义和基本架构转
  • (转)程序员疫苗:代码注入
  • (转)德国人的记事本
  • (转)关于pipe()的详细解析
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET CLR基本术语
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET Micro Framework初体验(二)
  • .net Signalr 使用笔记