告别机械计算:我在 Python 的判断里,看见思维开始拐弯
通过前面的学习,我对 Python 的感觉更像是:输入、保存、计算,然后得出一个结果。
它像一条直线,虽然已经能跑起来,却还没有真正转弯。
可写到这里,我第一次明显感觉到,代码开始不只是在算,它开始在条件之间做判断了。
大于还是小于,成立还是不成立,这一步看上去只是多了几个符号,实际上却让程序有了思维拐弯的可能。
也是从这里开始,我第一次意识到,Python 不再只是一个计算器,它开始长出一点逻辑的骨架。
1. 算术运算符看起来最熟悉,却是转弯前的起点
最先碰到的,还是算术运算。
加减乘除这些东西,我们当然早就认识。
print(4 + 1)
print(10 / 3)
print(10 // 3)
print(10 % 3)
print(10 ** 3)
可真正放进 Python 里,我还是会有一种“熟悉里带点陌生”的感觉。
因为它不只是让你算一个结果,而是在提醒你:同样是“除”,其实也分不同情况。
比如:
这些细节一出来,我才慢慢意识到,Python 里的“算”,不是笼统地算一下,而是很具体地告诉你,你到底想要什么结果。
你想要精确值,还是只要整数部分?
你想知道商,还是想知道余数?
这个感觉很像我前面学输入输出时的感受:
程序不会帮你自动领会,它会逼你把需求说得更明确。
2. “分苹果”这个小题,让我第一次摸到编程的拆解感
这里有一个很简单的例子:分苹果。
apple = 14
student = 4
print(apple // student)
print(apple // student * student)
print(apple - (apple // student * student))
以前如果碰到这种题,我可能只会把它当成小学应用题。
但放进 Python 里之后,我第一次觉得,它有了一点“编程思维”的味道。
因为它不是直接问你答案,而是要求你拆步骤。
先算每个人分到几个。
再算一共分掉多少。
最后再算剩下几个。
这一刻我会发现,编程里很常见的一种能力,其实就是把一个看起来完整的问题,拆成几个小步骤去处理。
这件事听起来不新鲜,但真到自己写代码的时候,你会很明显地感觉到:
会不会拆步骤,差别真的很大。
3. 赋值运算符提醒我,变量不是静止保存,而是在继续变化
这里还有一个看起来很小,但我觉得特别重要的点:赋值运算符。
a = 2
a += 2
这种写法第一次看到时,我会觉得它像一种简写。
后来我慢慢意识到,它其实在强化一个观念:
变量不是只负责“存下来”,它还会在原来的基础上继续变化。
这和前一章里我对变量的理解,刚好连上了。
变量不是静止的,它是会更新的。
而 += 这种写法,会让“更新”这件事变得更直观。
就像你不是重新创造了一个新变量,而是在原来的基础上,把它往前推了一步。
我觉得这一步很微妙。
因为从这里开始,我对程序的感觉,慢慢从“它在显示结果”变成了“它在推进过程”。
4. 比较运算符一出现,代码终于开始分辨方向
如果说前面的运算还主要是在处理数字,那比较运算符一出来,我会明显觉得,Python 开始像是在做判断了。
print(3 != 3)
print(3 == 2)
print(3 >= 2)
print(3 <= 3)
这些表达式和前面最大的不同在于,它们返回的不再是普通数字,而是 True 和 False。
也就是:成立,或者不成立。
这一点对我来说特别关键。
因为它像是把代码从“算结果”,推进到了“做判断”。
而判断这件事,几乎是后面所有程序都会碰到的。
你要不要执行。
你符不符合条件。
这个值是不是你想要的。
所以比较运算符虽然看起来只是几个符号,但它其实是在给后面的分支和逻辑打地基。
5. 逻辑运算符让我第一次感觉,判断也能彼此连接
让我印象很深的,还有 and、or、not。
print(TrueandFalse)
print(TrueorFalse)
print(notTrue)
刚开始我会觉得,这部分一下子抽象了不少。
因为它不再只是算一个数字,也不只是比较两个值,而是在组合条件。
后来我慢慢理解,逻辑运算符其实很像我们平时做判断时的思路。
比如:
这时候我会第一次觉得,代码里出现了一点“推理感”。
它不是简单算一算,而是在一步步判断:到底满足不满足,成立不成立,要不要继续。
尤其是 and 和 or,会让我明显感觉到,程序已经不是在处理单个结果,而是在处理条件之间的关系。
6. 位运算符这件事,我后来学会先抓作用,再慢慢理解细节
这里还有成员运算符和位运算符。
成员运算符像 in、not in,我会觉得相对容易理解一点。
print('12'in'123')
print('hi'in'hello')
因为它很接近日常语言。
“在不在里面”,这个意思很直观。
但位运算符像 &、|、^、~ 这些,我当时就明显觉得难度上来了。
后来我没有逼自己一下子把它们全背下来,而是先记住它们各自在做什么。
如果用最简单的话来说:
刚开始看到这些说法,还是会有点抽象。
所以对我来说,更有用的不是硬背定义,而是先知道:它们处理的不是普通十进制数字,而是数字在二进制下的每一位。
比如 5 的二进制是 101,3 的二进制是 011。
这时候:
print(5 & 3) # 1
print(5 | 3) # 7
print(5 ^ 3) # 6
如果你把它看成每一位都在单独比较,这几个结果就没那么神秘了。
101 & 011 会留下共同为 1 的位置,所以结果是 001。
101 | 011 会把任意一个为 1 的位置留下,所以结果是 111。
101 ^ 011 会把“不一样”的位置留下,所以结果是 110。
至于 ~,我会先把它理解成一种“整体翻转”的动作。
它比前面几个更绕一点,新手第一次看到不顺很正常。
而 << 和 >>,我后来会把它们先理解成“移动位置”。
比如:
print(3 << 1) # 6
print(8 >> 1) # 4
如果只用最直观的感觉去记,<< 有点像把数字往左推了一格,结果会变大;>> 则像往右收回来一格,结果会变小。
先这样理解,对新手已经够用了。
有些内容可以先知道它存在,先抓住最基本的作用,再等后面结合更多例子慢慢吃透。
我觉得这件事对新手很重要。
因为刚开始学 Python 时,很容易把“我现在还没完全懂”误解成“我不适合学”。
其实很多时候,不是你不行,只是这个知识点暂时还没到你最容易理解的时候。
7. 学到这里,我第一次意识到程序已经靠近“思考过程”
如果说前两章让我感受到的是:
Python 可以输入、输出、保存信息。
而这一段让我更明显地感受到:
Python 开始会基于信息做计算、做比较、做判断了。
它先算。
再比。
再判断条件成不成立。
再决定下一步怎么走。
这一刻我会觉得,代码离真正的“思考过程”更近了一步。
当然,它不是像人一样思考。
但它已经在模仿一种很基础的逻辑流程了。
而对我来说,这也是这一段最有意思的地方。
因为我第一次不再只是看见一堆运算符,而是开始看见它们背后的作用:
它们是在帮程序做决定。
最后
如果让我用现在这套感觉回头看这一段,我会说:
它真正迷人的地方,不是让我记住了多少运算符,而是让我第一次看见,程序的思路可以开始拐弯了。
从单纯算出结果,到比较、判断、再决定下一步,代码终于有了一点逻辑转身的意味。
也是从这里开始,我第一次觉得,Python 不只是在执行命令,它开始在搭一种思维路径。
🌷🌷🌷
如果你也正在学到这一段,你第一次明显感觉到“思维开始拐弯”是在什么地方?
是比较运算符、逻辑运算符,还是某个你忽然看懂“原来程序在判断”的小瞬间?