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

Python进阶之路 3.5.4 循环中的else语句

3.5.4 循环中的else语句

前面讲过,通过break语句可以直接退出当前的循环,但在某些情况下,想知道循环是正常结束的,还是通过break语句中断的,如果使用传统的方法,会有如下代码。

import random                           #导入随机数模块
x = 0
break_flag = False                      #设置是否使用break语句终端循环的标志变量
while x < 10:
    x += 1
    if x == random.randint(1,20):       #产生一个1到20的随机整数
        break_flag = True               #如果循环终端,将标志设为True
        print(x)
        break;
    if not break_flag:                  #如果标志为False,表示循环是正常退出的
        print("没有中断while循环")

其实有更简单的写法,就是为while循环加一个else子句,else子句的作用仅仅是while正常退出时执行(在循环中没有执行break语句)。else子句可以用在while和for循环中。else子句在循环中的用法请看实例3.9。

[例 3.9] 本例会在while和for循环语句中加上else子句,并通过一个随机整数决定是否执行break语句退出循环。如果程序是正常退出循环的(条件表达式为False时退出循环),会执行else子句代码块。

import random                               #导入随机数模块
x = 0
while x < 10:
    x += 1
    if x == random.randint(1,20):           #产生一个1到20的随机整数
        print(x)                            
        break;
else:                                       #while循环的else子句
    print("没有中断while循环")

numbers = [1,2,3,4,5,6]
for number in numbers:
    if number == random.randint(1,12):      #产生一个1到12的随机整数
        print(number)
        break;
else:                                       #for循环的else子句
    print("正常退出循环")
输出结果:
7
正常退出循环

要注意,由于上面这段代码使用了随机整数,所以每次执行的结果和我的输出结果可能都会不一样。

转载于:https://blog.51cto.com/14349850/2398511

相关文章:

  • 【更新】Stimulsoft Reports v2019.3.1发布,新增对OData v4的支持功能
  • 7天瓜分36万美妆,勇敢“晒丫”才是年轻人的生活方式
  • 宜信开源微服务任务调度平台(SIA-TASK)
  • Centos7.6安装jdk1.8
  • 原生革命--跨平台开发技术解析
  • 常用注解
  • 前端目录
  • 自助式BI分析,有什么优点
  • 使用Ajax和FormData对象实现单图片上传,多图片上传,以及和对象的综合上传
  • 微信小程序开发避坑
  • 力扣算法题—098验证二叉搜索树
  • Navicat连接MySQL8.0出现1251-Client does not support authentication protocol requested by server;
  • vue实际应用vue-router
  • 开发AI学习模型 训练AI与人类合作玩游戏
  • 一步一个脚印实现logstash同步MySQL数据到ES
  • #Java异常处理
  • 【面试系列】之二:关于js原型
  • 30天自制操作系统-2
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • css属性的继承、初识值、计算值、当前值、应用值
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Joomla 2.x, 3.x useful code cheatsheet
  • Laravel Mix运行时关于es2015报错解决方案
  • node学习系列之简单文件上传
  • Vue学习第二天
  • vue自定义指令实现v-tap插件
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 使用putty远程连接linux
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • No resource identifier found for attribute,RxJava之zip操作符
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 阿里云ACE认证之理解CDN技术
  • ​什么是bug?bug的源头在哪里?
  • # 计算机视觉入门
  • #Ubuntu(修改root信息)
  • #考研#计算机文化知识1(局域网及网络互联)
  • ()、[]、{}、(())、[[]]命令替换
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (多级缓存)缓存同步
  • (接口封装)
  • (论文阅读40-45)图像描述1
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net core 控制台应用程序读取配置文件app.config
  • .NET Core引入性能分析引导优化
  • .NET分布式缓存Memcached从入门到实战
  • .Net小白的大学四年,内含面经
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • .sh 的运行