Skip to content

Latest commit

 

History

History
295 lines (206 loc) · 11.4 KB

163-233769-打破循环_break_跳出循环.sy.md

File metadata and controls

295 lines (206 loc) · 11.4 KB
show version enable_checker
step
1.0
true

break 中断条件

回忆

  • 上次深入了循环
  • 明确了循环的核心
    • 循环条件
    • 只要满足循环条件就会不断循环
    • 甚至死循环
  • 循环中可以改变某些变量
    • 然后再用变量当做循环条件的因素
    • 就可以控制循环次数
    • 可以遍历某些元素
  • 我想把中文所有的基础字符遍历一遍可以么?🤔

unicode 范围

图片描述

图片描述

  • 基本范围在(4e00)16-在(9FA5)16
  • 那我们来遍历一次

遍历字符

图片描述

  • 控制好初始值
  • 控制好结束值
  • 每隔一行
  • 输出是没有问题的
  • 但是我想要一行 16 个字符可以么?

格式输出

图片描述

图片描述

  • 格式输出是没有问题的
  • 但是我想要到某个字符的时候才开始
  • 不是从 4e00 开始
  • 而是从字开始
  • 遇洪而开
  • 可以么

遇洪而开

图片描述

图片描述

  • 本来是应该从 4e00 一直循环到 9f95 的
  • 但是一旦遇到了这个字
  • 就会运行 break
  • 就会打碎原来循环的完整性
  • 整个循环被破坏
  • 然后跳出循环
  • 执行下面的内容
  • 不过这个例子有点复杂
  • 我们换一个简单点的

循环亿次

图片描述

图片描述

  • 这个循环
  • 正常要循环一亿次
  • 没完没了
  • 我要在 7 这个位置
  • 直接打断他的施法

打断施法

图片描述

图片描述

  • 一遇到七这个数字
  • 就 break 打断
  • 跳出循环
  • 这个 break 到底什么意思

break 的词源

图片描述

  • 把原来的固态的东西暴力地弄成碎片
  • 这就是 break
  • 遇到什么情况就打碎循环
  • 跳出绕圈
  • 这在生活中很常见

做菜

  • 锅烧热之后需要用葱姜蒜炝锅
  • 我们其实是在循环等待的过程中
  • 究竟等多久?

图片描述

  • 一般来说闻到香味就可以继续
  • 调味料的目的就是香味出现
  • 不出现不行
  • 一出现就可以 break 这个流程往后走
  • 如果是英文字符
    • az
  • 我想在遇到o的时候跳循环
  • 怎么办?

遇 o 则断

图片描述

图片描述

  • 到 o 可以截至
  • 但是还是把 o 给打出来了
  • 如果不想让 o 出现
  • 应该怎么办?

截止条件

图片描述

  • 上来就做判断
  • 满足条件就打断
  • 不管后面的东西是啥!
  • 就这么坚决
  • 后面的打印啥的绝对不会被执行

图片描述

  • 如果我想的是遇 o 则开始呢?

遇 o 而开

图片描述

图片描述

  • 可以输出
  • 但是第一个 o 丢了

调整

图片描述

  • 9、10 两句颠倒次序
  • 但是他是可以优化的
  • 怎么优化呢?
  • 自己试试...

优化代码

  • 前面的循环可以改成直接赋初值

图片描述

  • 如果我想要到 y 就结束呢?

见到 y 就结束

图片描述

  • 原来是靠循环里面的 if 分支
    • 如果满足则跳出循环
  • 可以改成直接设置在循环的循环条件
  • 把循环截止条件控制下
  • 这很简单
  • 这个能魔改么?

洪信

  • 如果我想改成
    • 而开
    • 而寂

图片描述

  • 这说的是谁呢?

而开

  众人一齐都到殿内,黑暗暗不见一物。太尉教从人取十数个火把点着,将来打一照时,四边并无别物,只中央一个石碑,约高五六尺,下面石龟趺坐,大半陷在泥里。照那碑碣上时,前面都是龙章凤篆,天书符箓,人皆不识。照那碑后时,却有四个真字大书,凿着“遇洪而开”。却不是一来天罡星合当出世,二来宋朝必显忠良,三来凑巧遇着洪信。岂不是天数!洪太尉看了这四个字,大喜,便对真人说道:“你等阻当我,却怎地数百年前已注我姓字在此?‘遇洪而开’,分明是教我开看,却何妨!我想这个魔王,都只在石碑底下。汝等从人与我多唤几个火工人等,将锄头铁锹来掘开。”真人慌忙谏道:“太尉,不可掘动!恐有利害,伤犯于人,不当稳便。”太尉大怒,喝道:“你等道众,省得甚么!碑上分明凿着遇我教开,你如何阻当!快与我唤人来开。”真人又三回五次禀道:“恐有不好。”太尉那里肯听。只得聚集众人,先把石碑放倒,一齐并力掘那石龟,半日方才掘得起。又掘下去,约有三四尺深,见一片大青石板,可方丈围。洪太尉叫再掘起来。真人又苦禀道:“不可掘动!”太尉那里肯听。众人只得把石板一齐扛起,看时,石板底下却是一个万丈深浅地穴。只见穴内刮剌剌一声响亮,那响非同小可,恰似:

  天摧地塌,岳撼山崩。钱塘江上,潮头浪拥出海门来;泰华山头,巨灵神一劈山峰碎。共工奋怒,去盔撞倒了不周山;力士施威,飞锤击碎了始皇辇。一风撼折千竿竹,十万军中半夜雷。

图片描述

  那一声响亮过处,只见一道黑气,从穴里滚将起来,掀塌了半个殿角。那道黑气直冲上半天里,空中散作百十道金光,望四面八方去了。众人吃了一惊,发声喊,都走了,撇下锄头铁锹,尽从殿内奔将出来,推倒攧翻无数。惊得洪太尉目睁痴呆,罔知所措,面色如土。奔到廊下,只见真人向前叫苦不迭。太尉问道:“走了的却是甚么妖魔?”那真人言不过数句,话不过一席,说出这个缘由。有分教:一朝皇帝,夜眠不稳,昼食忘餐。直使宛子城中藏猛虎,蓼儿洼内聚飞龙。毕竟龙虎山真人说出甚言语来,且听下回分解。

  • 而寂
    • 说的是啥事呢?

而寂

  且说鲁智深自与武松在寺中一处歇马听候,看见城外江山秀丽,景物非常,心中欢喜。是夜月白风清,水天同碧。二人正在僧房里睡,至半夜,忽听得江上潮声雷响。鲁智深是关西汉子,不曾省得浙江潮信,只道是战鼓响,贼人生发,跳将起来,摸了禅杖,大喝着便抢出来。众僧吃了一惊,都来问道:“师父何为如此,赶出何处去?”鲁智深道:“洒家听得战鼓响,待要出去厮杀。”众僧都笑将起来,道:“师父错听了,不是战鼓响,乃是钱塘江潮信响。”鲁智深见说,吃了一惊,问道:“师父,怎地唤做潮信响?”寺内众僧推开窗,指着那潮头叫鲁智深看,说道:“这潮信日夜两番来,并不违时刻。今朝是八月十五日,合当三更子时潮来。因不失信,为之潮信。”鲁智深看了,从此心中忽然大悟,拍掌笑道:“俺师父智真长老,曾嘱付与洒家四句偈言,道是:‘逢夏而擒’,俺在万松林里厮杀,活捉了个夏侯成;‘遇腊而执’,俺生擒方腊。今日正应了:‘听潮而圆,见信而寂?’俺想既逢潮信,合当圆寂。众和尚,俺家问你,如何唤做圆寂。”寺内众僧答道:“你是出家人,还不省得?佛门中圆寂便是死。”鲁智深笑道:“既然死乃唤做圆寂,洒家今已必当圆寂。烦与俺烧桶汤来,洒家沐浴。”寺内众僧,都只道他说耍,又见他这般性格,不敢不依他。只得唤道人烧汤来与鲁智深洗浴,换了一身御赐的僧衣,便叫部下军校:“去报宋公明先锋哥哥,来看洒家。”又问寺内众僧处,讨纸笔写下一篇颂子。去法堂上,捉把禅椅,当中坐了。焚起一炉好香,放了那张纸在禅床上,自叠起两只脚,左脚搭在右脚,自然天性腾空。比及宋公明见报,急引众头领来看时,鲁智深已自坐在禅椅上不动了。看其颂曰:

	平生不修善果
		只爱杀人放火
	忽地顿开金枷
		这里扯断玉锁
	咦!钱塘江上潮信来
	今日方知我是我

  宋江与卢俊义看了偈语,嗟叹不已。众多头领都来看视鲁智深,焚香拜礼。城内张招讨并童枢密等众官,亦来拈香拜礼。宋江教把鲁智深衣钵并朝廷赏赐,出来俵散众僧,做了三昼夜功果,合个朱红龛子盛了,直去请径山住持大惠禅师,来与鲁智深下火。五山十刹禅师,都来诵经忏悔。迎出龛子,去六和塔后烧化那鲁智深。那径山大惠禅师手执火把,直来龛子前,指着鲁智深,道几句法语,是:

  “鲁智深,鲁智深,起身自绿林。两只放火眼,一片杀人心。忽地随潮归去,果然无处跟寻。咄!解使满空飞白玉,能令大地作黄金。”

洪信

  • 这就是水浒传的头尾呼应
    • 而开
    • 而寂

图片描述

  • 能否输出
    • 洪信范围内 所有的中文字符呢?

输出

  • 把相应的字符替换了一下

图片描述

  • 可是
    • 一个字符也不能输出
    • 这是为什么呢?

数字次序

  • 大数 越加越大
    • 不能 再得到 小数 了
  • 所以我们期待的 是
    • 剥极而复
    • 否极泰来

zigzag

  • 循环往复
import	sys
import	time
indent	=	0
indentIncreasing=True
try:
	while	True:
		print(' '*indent,	end='')
		print('********')
		time.sleep(0.1)
		if	indentIncreasing:
			indent =	indent+1
			if	indent ==	20:
				indentIncreasing =	False
		else:
			indent =	indent-1
			if indent ==	0:
				indentIncreasing = True
except	KeyboardInterrupt:
	sys.exit()
  • 注意这里条纯循环 用的是

    • try ... except ...
    • 的方式
  • 我们去总结!

总结

  • 这次了解了 break
  • break 可以打破循环
    • 跳出三界外
    • 不在五行中
  • 现在的问题是
    • 遇洪而开
    • 见信而寂
  • 无法输出任何字符
  • 怎么办?🤔
  • 下次再说 👋