dead loop、continue & break、while...else语句

本文深入探讨了死循环的概念及如何使用break与continue语句控制循环流程,通过具体示例如猜年龄游戏,展示了这些控制语句的实际应用,并介绍了while...else语句的作用。此外,文章还提到了PyCharm等开发工具的功能。
摘要由CSDN通过智能技术生成
Dead loop

死循环,一经触发就会永远运行下去。

continue & break
如果在循环过程中,因为某些原因,你不想继续循环了,就要用到break 或 continue语句。
# break用于完全结束一个循环,跳出循环体执行循环后面的语句;
# continue和break有点类似,区别在于continue只是跳出(终止)本次循环,接着还执行后面的循环,break则完全终止循环。

break定义示例:

运行结果:

continue定义示例1:

continue示例2:

运行结果:

 

示例1: 猜年龄游戏: 允许用户最多猜3次,中间猜对了,直接跳出循环。

示例代码:

 

这段代码需要注意的一点:

 

示例2:猜年龄游戏, 允许用户最多猜3次,猜了3次以后,再问是否还想玩,如果用户选y,再允许猜3次,以此往复。。。

示例代码:

while...else语句
while后面的else作用是指,当while循环正常执行完,中间没有被break终止的话,就会执行else后面的语句;中间如果break,就不会执行else语句了。
# 这个语句可用于检验你的程序中间有没有被break过、跳出过,检验程序是否有问题。
开发工具IDE 

PyCharm:

代码自动补全;

语法错误提醒;

代码调试;

性能测试;

web开发框架支持;

git/svn支持

转载于:https://www.cnblogs.com/neozheng/p/8282593.html

import time import multiprocessing from proxypool.processors.server import app from proxypool.processors.getter import Getter from proxypool.processors.tester import Tester from proxypool.setting import CYCLE_GETTER, CYCLE_TESTER, API_HOST, API_THREADED, API_PORT, ENABLE_SERVER, \ ENABLE_GETTER, ENABLE_TESTER, IS_WINDOWS from loguru import logger if IS_WINDOWS: multiprocessing.freeze_support() tester_process, getter_process, server_process = None, None, None class Scheduler(): def run_tester(self, cycle=CYCLE_TESTER): if not ENABLE_TESTER: logger.info('tester not enabled, exit') return tester = Tester() loop = 0 while True: logger.debug(f'tester loop {loop} start...') tester.run() loop += 1 time.sleep(cycle) # CYCLE_GETTER=100 def run_getter(self, cycle=CYCLE_GETTER): if not ENABLE_GETTER: logger.info('getter not enabled, exit') return getter = Getter() loop = 0 while True: logger.debug(f'getter loop {loop} start...') getter.run() loop += 1 time.sleep(cycle) def run_server(self): if not ENABLE_SERVER: logger.info('server not enabled, exit') return app.run(host=API_HOST, port=API_PORT, threaded=API_THREADED) def run(self): global tester_process, getter_process, server_process try: logger.info('starting proxypool...') if ENABLE_TESTER: tester_process = multiprocessing.Process(target=self.run_tester) logger.info(f'starting tester, pid {tester_process.pid}...') tester_process.start() if ENABLE_GETTER: getter_process = multiprocessing.Process(target=self.run_getter) logger.info(f'starting getter, pid{getter_process.pid}...') getter_process.start() if ENABLE_SERVER: server_process = multiprocessing.Process(target=self.run_server) logger.info(f'starting server, pid{server_process.pid}...') server_process.start() tester_process.join() getter_process.join() server_process.join() except KeyboardInterrupt: logger.info('received keyboard interrupt signal') tester_process.terminate() getter_process.terminate() server_process.terminate() finally: # must call join method before calling is_alive tester_process.join() getter_process.join() server_process.join() logger.info(f'tester is {"alive" if tester_process.is_alive() else "dead"}') logger.info(f'getter is {"alive" if getter_process.is_alive() else "dead"}') logger.info(f'server is {"alive" if server_process.is_alive() else "dead"}') logger.info('proxy terminated') if name == 'main': scheduler = Scheduler() scheduler.run()给这段代码加注释
06-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值