不完美的Python

自从各类Python大火,感觉天上地下哪儿都有Python的一席之地,Python功夫好啊…但python有些细节上缺少其他语言的便利。今天我们就来举几个例子。

跳出外层循环

大家都知道,在Java中存在标签的概念,当我们存在多层循环时,Java可以使用标签控制指定的循环层。举个小栗子:

public class OuterLoop {public static void main(String[] args) {outer:for (int i = 0; i < 5; i++) {inner:for (int j = 0; j < 5; j++) {System.out.println(j);if (j == 2) {break outer;}}}System.out.println("over!");}
}output:
0
1
2
over!

我们通过定义标签,在遇到break continue等关键字时,可以控制指定的循环层,然而Python没有标签的概念,那么Python该如何实现这种功能呢?

Python循环跳出

为了方便大家理解,我们来举一个臭不要脸的例子吧!
加入小张、我、小李三个人经常一起吃饭,吃饭就涉及付账了,如果AA那大家都能接受,如果一个人请客,那他俩付钱我当然愿意,如果是我付钱那我吃完了就赶紧尿遁…好了,有这个前提,我们开始写代码吧。

定义函数实现

对于多层循环,在Python中,也许最易于理解的方式就是通过函数return来实现了。但这里要注意一个问题,函数的return会跳出所有循环,对于两层以上的循环不适用…

# -*- coding: utf-8 -*-
# @Author   : 王翔
# @WeChat   : King_Uranus
# @公众号    : 清风Python
# @Date     : 2019/9/11 0:03
# @Software : PyCharm
# @version  :Python 3.7.3
# @File     : OuterLoop.py
import randompeople = ['zhang', 'me', 'li']
payments = ['AA', 'stand_treat']def dine_together():# 为了避免一成不变的套路,我们添加两个列表随机random.shuffle(payments)print(payments)random.shuffle(people)print(people)for payment in payments:for person in people:if payment == 'stand_treat':if person == 'me':print("居然我请客,赶紧尿遁...")people.remove('me')schlemiel = random.choice(people)print("倒霉孩子{}请客".format(schlemiel))# 当遇到我请客,直接结束外层循环,函数返回...returnelse:print("今天{}请客".format(person))else:print('今天吃饭{},等下{}付钱,大家记得把钱给它...'.format(payment, person))dine_together()output:
['stand_treat', 'AA']
['zhang', 'li', 'me']
今天zhang请客
今天li请客
居然我请客,赶紧尿遁...
倒霉孩子li请客

标记变量实现

我们可以通过定义变量值来进行判断是否退出循环,操作如下:

import randompeople = ['zhang', 'me', 'li']
payments = ['AA', 'stand_treat']# 为了避免一成不变的套路,我们添加两个列表随机
random.shuffle(payments)
print(payments)
random.shuffle(people)
print(people)runaway = False
for payment in payments:for person in people:if payment == 'stand_treat':if person == 'me':print("居然我请客,赶紧尿遁...")people.remove('me')schlemiel = random.choice(people)print("倒霉孩子{}请客".format(schlemiel))# 修改标记变量runaway = True# 当遇到我请客,直接结束外层循环,函数返回...breakelse:print("今天{}请客".format(person))else:print('今天吃饭{},等下{}付钱,大家记得把钱给它...'.format(payment, person))# 判断标记变量if runaway:breakoutput:
['stand_treat', 'AA']
['li', 'me', 'zhang']
今天li请客
居然我请客,赶紧尿遁...
倒霉孩子zhang请客

for else实现

for…else…的运行逻辑是当for循环正常执行结束就会运行其else语句,如果中途break的话,就不会执行else中的内容
有失必有得,虽然python没有循环标记,却多出了一个for else的操作,帮助我们实现需求。

import randompeople = ['zhang', 'me', 'li']
payments = ['AA', 'stand_treat']# 为了避免一成不变的套路,我们添加两个列表随机
random.shuffle(payments)
print(payments)
random.shuffle(people)
print(people)for payment in payments:for person in people:if payment == 'stand_treat':if person == 'me':print("居然我请客,赶紧尿遁...")people.remove('me')schlemiel = random.choice(people)print("倒霉孩子{}请客".format(schlemiel))# 当遇到我请客,直接结束外层循环,函数返回...breakelse:print("今天{}请客".format(person))else:print('今天吃饭{},等下{}付钱,大家记得把钱给它...'.format(payment, person))else:# 未出现break操作,执行else,通过continue继续操作continue# 出现break操作,跳过else,直接外层break,结束外层循环break

The End

OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点赞。
期待你关注我的公众号 清风Python,如果觉得不错,希望能动动手指转发给你身边的朋友们。

作者:清风Python

失去循环标记的Python,我这样实现跳出外层循环相关推荐

  1. python break跳出外层_失去循环标记的Python,我这样实现跳出外层循环

    不完美的Python 自从各类Python大火,感觉天上地下哪儿都有Python的一席之地,Python功夫好啊-但python有些细节上缺少其他语言的便利.今天我们就来举几个例子. 跳出外层循环 大 ...

  2. python如何跳出外层循环_失去循环标签的Python,我这样实现跳出外层循环

    不完美的Python 自从各类Python大火,感觉天上地下哪儿都有Python的一席之地,Python功夫好啊-但python有些细节上缺少其他语言的便利.今天我们就来举几个例子. 跳出外层循环 大 ...

  3. 失去循环标签的Python,我这样实现跳出外层循环

    不完美的Python 自从各类Python大火,感觉天上地下哪儿都有Python的一席之地,Python功夫好啊-但python有些细节上缺少其他语言的便利.今天我们就来举几个例子. 跳出外层循环 大 ...

  4. python跳出循环关键字_Python跳出for循环continue与break的区别

    在for和while循环语句中,当循环条件满足时,就会一直循环,如果想中途退出循环,该怎么办?如果想停止本次循环,而不终止整个循环,该怎么办?如果我想写个不执行任何操作的语句,该怎么写? Python ...

  5. python输入end退出循环_4.学习python获取用户输入和while循环及if判断语句

    0x00 Abstract 在开发中为了增加程序与用户的互动性需要增加获取用户输入的功能,在python中可以使用input()函数来获取用户的输入.当获取用户的各种输入后,我们需要使用逻辑语句来对数 ...

  6. python多线程处理循环_在python中使用线程运行无限循环

    据我了解你的问题,你有两个不同的任务,你希望他们连续执行.现在关于你的问题:我该如何运行两个无限循环? 您可以创建两个不同的线程来为您运行这些无限循环.第一个线程将执行您的task1,第二个线程将执行 ...

  7. python 条件语句漫画解析_【Python】解析Python中的条件语句和循环语句

    1.if语句 if语句有好几种格式,比如: ifcondition: statement 使用 if ... else ...: ifcondition: statement(1)else: stat ...

  8. Python中的条件语句和循环语句

    1.if语句 if语句有好几种格式,比如: if condition:statement 使用if ... else ...: if condition:statement(1) else:state ...

  9. 解析Python中的条件语句和循环语句

    1.if语句 if语句有好几种格式,比如: if condition:statement 使用if ... else ...: if condition:statement(1) else:state ...

最新文章

  1. 关于学习Python的一点学习总结(6->元组)
  2. pta 整型关键字的平方探测法散列
  3. 拼接(  read----contigs)和组装(contigs---Scaffolds)
  4. java spring cloud版b2b2c社交电商spring cloud分布式微服务-docker-feign-hystrix(六)
  5. linux 自学系列:wc命令
  6. java 生成水印,Java 用html模板生成 Pdf 加水印
  7. Power Transmission
  8. AVIO内存输入模式
  9. P3370-[模板]字符串哈希【hash】
  10. 用大数据为互联网金融保驾护航
  11. JS-面向对象-创建具有私有属性的构造函数(2种方法)
  12. 分组卷积/群卷积(Group Convolution)
  13. graphviz 画决策树_决策树算法-实战篇
  14. Spring Cloud教程 (二)应用程序上下文服务层次结构
  15. python自学看什么书-自学Python一年,看了几十本书,我发现了这些捷径!
  16. 网课查课插件 支持 60类型+ 彩虹查课插件 网络查课查询
  17. Scrum 敏捷开发 笔记
  18. 用计算机三角函数公式,三角函数公式习题.doc
  19. Android 百度翻译API(详细步骤+源码)
  20. 在win7系统下使用TortoiseGit(乌龟git)简单操作Git@OSC

热门文章

  1. matlab 判断两个矩阵有元素相等_如何使用MATLAB对Excel中的多参数进行计算?
  2. linux基础配置脚本,Linux中selinux基础配置教程详解
  3. html盒子模型子元素怎么水平占满父元素_CSS盒子模型、溢出处理、浮动、高度坍塌问题...
  4. linux 下 c++ 实现 netstat_Linux下基于签名技术的软件保护之实现流程
  5. netty在项目中实际使用_公房动迁中,实际使用人享有哪些利益?
  6. ubuntu 设置 时区 更新时间
  7. 转载 :配置ssh密钥认证自动登录
  8. 小端字节序和大端字节序
  9. 一个表的信息插入到另一个表里面,如果遇到重复的就覆盖
  10. js 页面载入时的执行顺序