---
- oeasy Python 0174
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在:
个人网站: `https://oeasy.org`
蓝桥云课: `https://www.lanqiao.cn/courses/3584`
GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
Gitee: `https://gitee.com/overmind1980/oeasypython`
---- 上次深入了循环
- 明确了循环的核心
- 循环条件
- 只要满足循环条件就会不断循环
- 甚至死循环
- 循环中可以改变某些变量
- 然后再用变量当做循环条件的因素
- 就可以控制循环次数
- 可以遍历某些元素
- 我想把中文所有的基础字符遍历一遍可以么?🤔
- 基本范围在(4e00)16进制-在(9FA5)16进制
- 0x4e000本质是什么?
0x4e00
type(0x4e00)
- 0x4e00
- 类型是int
- 数值为19968
- 本质上就是19968
- 只不过用16进制的方式书写
- 那我们来遍历一次
- 控制首末位置
- 开始字
- 结束字
zi = 0x4e00
while zi <= 0x9fa5:
print(zi,hex(zi),chr(zi))
zi += 1
- 每字一行
- 输出是没有问题的
- 但是我想要一行 16 个字符可以么?
- 控制回车
zi = 0x4e00
while zi <= 0x9fa5:
if zi%16 == 0:
print("\n", hex(zi), ":", end="")
print(chr(zi), end=" ")
zi += 1
- 格式输出是没有问题的
- 但是 我想要
- 不从 0x4e00 开始
- 从 某个字符的时候 才开始
- 比如 遇
洪字开始- 遇洪而开
- 可以么
- 本来 从 0x4e00 一直循环到 0x9f95 的
- 一旦遇到了
洪这个字 - 就会运行 break
- 直接跳出来
- 这就 把
洪字前面的字 都略过去
- 一旦遇到了
zi = 0x4e00
while zi <= 0x9fa5:
if zi == ord('洪'):
break
zi += 1
while zi <= 0x9fa5:
if zi%16 == 0:
print("\n", hex(zi), ":", end="")
print(chr(zi), end=" ")
zi += 1- 再 从
洪字开始- 输出到 结尾
- 来一个简单点的
- 这个循环
- 正常要循环一亿次
num = 1
while num < 10 ** 8:
print(num)
num += 1
- 没完没了
- 我要在 7 这个位置
- 直接打断他
- 让他停止施法
num = 1
while num < 10 ** 8:
print(num)
num += 1
if num == 7:
break
- 一遇到七这个数字
- 就 break 打断
- 跳出循环
- 这个 break 到底什么意思?🤔
- 把原来的稳固的东西
- 暴力地弄成碎片
- 这就是 break
- 稳固的就是循环
- 打碎 循环
- 就是 跳出绕圈
- 这在生活中很常见
- 锅烧热之后需要
- 用葱姜蒜炝锅
- 放佐料 之后 要等多久 放菜?
- 一般来说
- 闻到香味就可以继续
- 没香味 就继续等
- 一出现 香味 就不等了
- 往后走
- 闻到香味就可以继续
- 如果是英文字符
- 从
a到z- 我想在遇到
o的时候 跳循环
- 我想在遇到
- 从
- 怎么办?🤔
c = 'a'
while True:
print(ord(c), c)
if ord(c)==ord('o'):
break
c = chr(ord(c) + 1)
- 到 o 可以停
- 但还是把 o 给打出来了
- 如果 不想让 o 出现
- 应该怎么办?
- 先判断
- 满足条件就打断
- 不管后面的东西是啥!
- 就这么坚决
c = 'a'
while True:
print(ord(c), c)
if c=='o':
break
c = chr(ord(c) + 1)
- 跳出来之后
- 打印啥的 不会被执行
- 如果 我想的是
- 遇 o 则开始呢?
c = 'a'
while True:
if c == 'o':
break
c = chr(ord(c) + 1)
while True:
if c == 'z':
break
c = chr(ord(c) + 1)
print(ord(c), c)
- 可以输出
- 但是第一个 o 丢了
- 把 错过的 初值 找补回来
c = 'a'
while True:
if c == 'o':
break
c = chr(ord(c) + 1)
c = chr (ord(c) - 1)
while True:
if c == 'z':
break
c = chr(ord(c) + 1)
print(ord(c), c)
- 怎么再优化?
- 前面的循环 没必要
- 改成直接 赋初值
- 如果我想要到 y 就结束呢?
- 原来 跳出是靠的是
- 循环里面的 if 分支
- 如果满足则跳出循环
- 改成直接 设置
- 循环的循环条件
- 这个 能 魔改 吗??
- 如果 我想改成
- 遇
洪而开 - 见
信而寂
- 遇
- 这说的是谁呢?
众人一齐都到殿内,黑暗暗不见一物。太尉教从人取十数个火把点着,将来打一照时,四边并无别物,只中央一个石碑,约高五六尺,下面石龟趺坐,大半陷在泥里。照那碑碣上时,前面都是龙章凤篆,天书符箓,人皆不识。照那碑后时,却有四个真字大书,凿着“遇洪而开”。却不是一来天罡星合当出世,二来宋朝必显忠良,三来凑巧遇着洪信。岂不是天数!洪太尉看了这四个字,大喜,便对真人说道:“你等阻当我,却怎地数百年前已注我姓字在此?‘遇洪而开’,分明是教我开看,却何妨!我想这个魔王,都只在石碑底下。汝等从人与我多唤几个火工人等,将锄头铁锹来掘开。”真人慌忙谏道:“太尉,不可掘动!恐有利害,伤犯于人,不当稳便。”太尉大怒,喝道:“你等道众,省得甚么!碑上分明凿着遇我教开,你如何阻当!快与我唤人来开。”真人又三回五次禀道:“恐有不好。”太尉那里肯听。只得聚集众人,先把石碑放倒,一齐并力掘那石龟,半日方才掘得起。又掘下去,约有三四尺深,见一片大青石板,可方丈围。洪太尉叫再掘起来。真人又苦禀道:“不可掘动!”太尉那里肯听。众人只得把石板一齐扛起,看时,石板底下却是一个万丈深浅地穴。只见穴内刮剌剌一声响亮,那响非同小可,恰似:
天摧地塌,岳撼山崩。钱塘江上,潮头浪拥出海门来;泰华山头,巨灵神一劈山峰碎。共工奋怒,去盔撞倒了不周山;力士施威,飞锤击碎了始皇辇。一风撼折千竿竹,十万军中半夜雷。
那一声响亮过处,只见一道黑气,从穴里滚将起来,掀塌了半个殿角。那道黑气直冲上半天里,空中散作百十道金光,望四面八方去了。众人吃了一惊,发声喊,都走了,撇下锄头铁锹,尽从殿内奔将出来,推倒攧翻无数。惊得洪太尉目睁痴呆,罔知所措,面色如土。奔到廊下,只见真人向前叫苦不迭。太尉问道:“走了的却是甚么妖魔?”那真人言不过数句,话不过一席,说出这个缘由。有分教:一朝皇帝,夜眠不稳,昼食忘餐。直使宛子城中藏猛虎,蓼儿洼内聚飞龙。毕竟龙虎山真人说出甚言语来,且听下回分解。
- 见
信而寂- 说的是啥事呢?
且说鲁智深自与武松在寺中一处歇马听候,看见城外江山秀丽,景物非常,心中欢喜。是夜月白风清,水天同碧。二人正在僧房里睡,至半夜,忽听得江上潮声雷响。鲁智深是关西汉子,不曾省得浙江潮信,只道是战鼓响,贼人生发,跳将起来,摸了禅杖,大喝着便抢出来。众僧吃了一惊,都来问道:“师父何为如此,赶出何处去?”鲁智深道:“洒家听得战鼓响,待要出去厮杀。”众僧都笑将起来,道:“师父错听了,不是战鼓响,乃是钱塘江潮信响。”鲁智深见说,吃了一惊,问道:“师父,怎地唤做潮信响?”寺内众僧推开窗,指着那潮头叫鲁智深看,说道:“这潮信日夜两番来,并不违时刻。今朝是八月十五日,合当三更子时潮来。因不失信,为之潮信。”鲁智深看了,从此心中忽然大悟,拍掌笑道:“俺师父智真长老,曾嘱付与洒家四句偈言,道是:‘逢夏而擒’,俺在万松林里厮杀,活捉了个夏侯成;‘遇腊而执’,俺生擒方腊。今日正应了:‘听潮而圆,见信而寂?’俺想既逢潮信,合当圆寂。众和尚,俺家问你,如何唤做圆寂。”寺内众僧答道:“你是出家人,还不省得?佛门中圆寂便是死。”鲁智深笑道:“既然死乃唤做圆寂,洒家今已必当圆寂。烦与俺烧桶汤来,洒家沐浴。”寺内众僧,都只道他说耍,又见他这般性格,不敢不依他。只得唤道人烧汤来与鲁智深洗浴,换了一身御赐的僧衣,便叫部下军校:“去报宋公明先锋哥哥,来看洒家。”又问寺内众僧处,讨纸笔写下一篇颂子。去法堂上,捉把禅椅,当中坐了。焚起一炉好香,放了那张纸在禅床上,自叠起两只脚,左脚搭在右脚,自然天性腾空。比及宋公明见报,急引众头领来看时,鲁智深已自坐在禅椅上不动了。看其颂曰:
平生不修善果
只爱杀人放火
忽地顿开金枷
这里扯断玉锁
咦!钱塘江上潮信来
今日方知我是我
宋江与卢俊义看了偈语,嗟叹不已。众多头领都来看视鲁智深,焚香拜礼。城内张招讨并童枢密等众官,亦来拈香拜礼。宋江教把鲁智深衣钵并朝廷赏赐,出来俵散众僧,做了三昼夜功果,合个朱红龛子盛了,直去请径山住持大惠禅师,来与鲁智深下火。五山十刹禅师,都来诵经忏悔。迎出龛子,去六和塔后烧化那鲁智深。那径山大惠禅师手执火把,直来龛子前,指着鲁智深,道几句法语,是:
“鲁智深,鲁智深,起身自绿林。两只放火眼,一片杀人心。忽地随潮归去,果然无处跟寻。咄!解使满空飞白玉,能令大地作黄金。”
- 这就是水浒传的头尾呼应
- 遇
洪而开 - 见
信而寂
- 遇
- 把相应的字符替换了一下
- 可是
- 一个字符也不能输出
- 这是为什么呢?
- 这次了解了 break
- break 可以打破循环
- 能否输出
- 洪信范围内 所有的中文字符呢?
- 怎么办?🤔
- 下次再说 👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。


















