1、碎碎念
今天看教学视频的时候,弹幕里有一条:如果你看到这里,谢谢你的坚持。
忽然就有点小感动。
学习从来不是件轻松的事情,甚至可以说是很反人性的。
躺床上追剧、玩农药、刷抖音不香嘛?
这视频能学到224集,即使跳过前100集,按每集5分钟算,也已经学了620分钟、10个多小时了。
真是值得对着镜子给自己磕个头,佩服的说一句:“您真牛逼!”
![ac4d5b33ae5e83882b9fe15ec85afce0.png](https://i-blog.csdnimg.cn/blog_migrate/4a54208dfa5392e19a9620860ee52a27.jpeg)
昨天看了本书:《微习惯》。
书不厚,里面的一些方法还是挺有借鉴价值的。
简单来说,就是别给自己定太过宏大的计划,期望自己用超高的意志力去完成。
自信点,以我们普通人的行动力之低,根本轮不到拼意志力的地步。
正确的做法是,给自己每天定一个微乎其微的小目标,把大任务拆解成很多个小任务,不需要付出什么意志力,然后即时给自己反馈、奖励。
重要的是把习惯养成。
比如本书的作者给自己定的目标是1天只做1个俯卧撑,不知不觉,就把健身当成了一种习惯。
对我学Python的启发就是,每天最起码要打开b站先看起来,然后随手先写点心得,别管写多少,重要的是养成学习Python的习惯。
与各位朋友共勉。
![15c0d8c6d418566e96f1c1c9b1d6aac7.png](https://i-blog.csdnimg.cn/blog_migrate/6075600a2956c9a112abc758a5b72165.jpeg)
2、学习概要
今天学习的目标是实现九九乘法表的输出,这可谓是新手村的第一个大boss吧!
当初看这个需求的时候,我是挺蒙的。
因为印象中这个东东在以前学 basic时候好像就弄过,但是当时貌似就稀里糊涂的。
没想到我一个40岁老男人,竟然又感受到了被basic支配的恐惧。
昨天群里看大伙聊天,好几个人都抱怨:“看视频都明白,一敲代码就拉稀!”
其实,仔细想想,这不止是学程序,以前上学时候我们也经常有这种经历。
上课听老师讲,脑子说:“我懂了!”手却说:“你懂个锤子!”
![39b151bd770e79809383745193d9db6a.png](https://i-blog.csdnimg.cn/blog_migrate/dae9a755ec11f762b408222ca7324ddf.jpeg)
怎么办?
惟有多练一条道,别无他法。
3、详细内容
循环嵌套(3集)
124集,基本语法:
while 嵌套就是 while 里面还有 while。
python中的缩进真是核心,这语言太适合强迫症患者了。
![69b1d9a936f79e41c6a723cf09edc7d9.png](https://i-blog.csdnimg.cn/blog_migrate/cd83d9618713c374495ea92f641b2e6c.jpeg)
125集,使用字符串运算直接输出小星星:
需求:在控制台连续输出五行,每一行星号的数量依次递增。
这个一开始编个最简单的循环程序输出星星很简单:
![ce214e55ea2195ba0ff5276cb441c0f9.png](https://i-blog.csdnimg.cn/blog_migrate/f6969ba47facc66dc2ca1cc15d62eb41.jpeg)
但是这样只能做到每行只输出一个星星,怎么达到每行递增呢?
我一开始琢磨了 if语句,但是感觉很别扭,总之没有想到特别好的办法。
然后老师只是在 print里面,把原来的 ”*”改为 “*” * row,其他什么也没动就搞定了。
![e814359e169f0765e97b44190f689c1f.png](https://i-blog.csdnimg.cn/blog_migrate/a63feba7843507490db7d157c5da1377.jpeg)
这个操作真是太秀了!
说实话,我真是想破了头,也没想到办法竟然如此简单。
对于编程来说,有个清晰的思路真是太重要了。
![82031f5d1779498d59a0cfd9c1273bd1.gif](https://i-blog.csdnimg.cn/blog_migrate/c06b6cd1fb053e4242277f7cf7412d18.gif)
126集,(扩展)print函数的结尾处理:
在默认情况下, print 函数输出内容之后,会自动在内容结尾增加换行;
如果不希望末尾增加换行,可以在 print函数输出内容的后面增加 ,end=””
其中 “”中间可以指定 print 函数输出内容之后,继续希望显示的内容。
![d8e7ad1529ec92c36f87cfd569a4a2a9.png](https://i-blog.csdnimg.cn/blog_migrate/4b1e559e5fa2509cd69adb17586038a4.jpeg)
上图的输出结果就是 *---*
是不是有点萌?
循环嵌套小星星(2集)
127集,输出行并且确定思路:
125集用 字符串的 * 操作拼接字符串,实现了打印小星星,那么,用循环嵌套怎么实现同样的需求呢?
这一集主要是做思路分析,就像我前面说的,编程重要的是思路,打代码倒不是着急的事情。
第一步,完成5行内容的简单输出,这个同上,没什么可说的;
第二步,分析每行内部的 “*” 应该如何处理?
我们发现,每一行要打印的星星就是和当前的行数是一致的;
可以增加一个小的循环,专门负责当前行中,每一 “列”的星星显示。
128集,嵌套循环完整案例:
这一集可以说是教程至今为止,最难的一集,没有之一。
这个循环嵌套里面有个需要思考的地方:
为什么要设定列变量 col <= row?而不能设定为 col == row呢?
这个教程里没讲,我自己使用单步调式按钮才弄明白,这是因为在小循环中, col每次都是从 1开始计数,当 col<= row时,执行小循环中的 print;而当 col >row时,程序跳出小循环,继续执行大循环后面的 row +=1语句。
![3d9d249c6198d7671766b941cea58de5.png](https://i-blog.csdnimg.cn/blog_migrate/0820c164da4ee480c774052007c26c16.jpeg)
九九乘法表(4集)
129集,明确思路和步骤:
最终boss来了,前面说了半天的星星,最终目的就是为了输出 九九乘法表。
通过观察九九乘法表可知,每列乘式的第一个数就是列数,第二个数是行数。
![36f173324215cfea6025ce3b95105840.png](https://i-blog.csdnimg.cn/blog_migrate/034b15a2e9bbac7a4e85ced8cae6e041.jpeg)
可见与前面输出的小星星结构是一样的。
所以,先打印9行小星星,再在此基础上略加改动即可。
130集,打印9行小星星:
这个相当于又把128集的内容温习了一遍,没什么好说的。
![cca6893b35f6834c4203bc33e6bf856e.png](https://i-blog.csdnimg.cn/blog_migrate/27657f676e8cef08a412c671bc3cb304.jpeg)
131集,九九乘法表数据输出:
这集的关键就是如何把输出的小星星,改为数字。
其实关键就是改变小循环中的 print里面的内容。
先把 * 直接改为 9 *9 = 81,试试输出。
![4b8b5338122f487b9d1208865ce5048a.png](https://i-blog.csdnimg.cn/blog_migrate/c1b7745697082a00483bfeb908a555dc.jpeg)
嗯,毫无问题。
然后再用 %d 在相应的位置进行替换,于是 print语句变为
print("%d * %d = %d" %(col, row,col * row), end=" ")
shift + f10 运行,成功!
![339883020777d2ccc19510aea5879694.png](https://i-blog.csdnimg.cn/blog_migrate/d47c4b7640d75bd188e98bc7c01735ee.jpeg)
132集,使用转义字符调整格式:
这集内容是对上集的一个补充。
虽然九九乘法表运行成功了,但是格式有些还没对齐,比如 2 * 4 = 8,与下面一行的 2 * 5 =10,就产生了错位。
这就需要使用字符串的转义字符。
最常用的是 表示 制表符,协助在输出文本时 垂直方向 保持对齐。
表示 换行符。
这个转义字符绝对是强迫症的福音啊。
![f898415307d947ba530b8423386618c7.gif](https://i-blog.csdnimg.cn/blog_migrate/9b0997a8c4b6597439629959d630d42e.gif)