周二主攻字符串的索引和切片,这是我本周遇到的第一个 “坎”。一开始我想当然地以为索引是从 1 开始数数,写了s = "Python",然后print(s[1]),结果输出的是y而不是P,瞬间懵了。查了资料才知道 Python 的索引从 0 开始,重新对着字符串拆解:P(0)y(1)t(2)h(3)o(4)n(5),反复敲了print(s[0])、print(s[3])等例子,才算摸清正索引的规律。接着学负索引,s[-1]对应最后一个字符n,s[-2]是o,一开始总绕不过弯,我就把字符串写在纸上,从后往前标上负号数字,对照着敲代码,试了十几次后,终于能一眼说出某个索引对应的字符了。切片操作s[0:3]也让我困惑了一阵,本以为会取到前三个字符包括索引 3,结果输出Pyt,直到看到 “左闭右开” 的原则解释,才明白切片是 “取头不取尾”,又试了s[:3](从开头切到索引 3)、s[2:](从索引 2 切到末尾)、s[:](复制整个字符串)这些省略写法,才算真正掌握。
周三的学习内容是字符串的常用方法,知识点一下子多了起来,我也闹了不少笑话。比如拼接字符串,用+号连接print("Hello" + " " + "World")很顺利,但试着写print("我的年龄是" + 20)时又报错了,这才知道字符串不能直接和数字拼接,得先用str(20)把数字转成字符串类型。然后学了lower()、upper()、strip()这些方法,strip()去除首尾空格的功能很实用,一开始我还特意写成strip(" "),后来发现默认就是去除空格,多此一举了。印象最深的是replace()方法,我写了s = "abc123",然后s.replace("123", "456"),以为原字符串会变成abc456,结果打印s还是原来的样子,查了教程才懂 ——Python 的字符串是不可变类型,方法执行后会返回新字符串,必须赋值给新变量才能保存结果,改成new_s = s.replace("123", "456")后,终于得到了想要的结果,这个 “不可变” 的特性也被我重点记了下来。
周四我做了小练习巩固所学,目标是写一个程序:输入名字,输出 “你好,XXX!你的名字长度是:X”。一开始的思路是用input()获取输入,len()函数算长度,写出来的代码是:name = input("请输入你的名字:"),print("你好," + name + "!你的名字长度是:" + len(name)),不出意外又报错了 —— 忘记len()返回的是整数,需要转成字符串。改对后运行程序,输入我的名字,屏幕上准确跳出提示语,那种小小的成就感油然而生。我又趁热打铁加了点功能,比如把名字转成大写输出,print("你的名字大写是:" + name.upper()),看着程序能根据不同输入给出对应结果,突然觉得编程也没那么枯燥了。还发现了一个小细节:input()获取的内容默认都是字符串,哪怕输入数字18,num = input("输个数字:"),执行num + 1也会报错,这点也被我记在了错题本上。
周五我没有学新内容,而是复盘本周的知识点:把索引、切片、常用方法的例子整理成代码笔记,把 “索引从 0 开始”“字符串不可变”“拼接需统一类型” 这些易错点标红。然后尝试写了一个小工具:把输入的一句话去掉空格,转成大写,再用 “-” 拼接每个字符。比如输入 “hello python”,目标输出 “H-E-L-L-O-P-Y-T-H-O-N”。一开始我把split()和join()的用法搞反了,写成了"-".split(s),查了例子才纠正过来,最终代码是:s = input("请输入一句话:").replace(" ", "").upper(),result = "-".join(s),print(result)。运行成功的那一刻,我真切感觉到自己不是 “背知识点”,而是真的掌握了如何运用。
周末两天,我把这周写过的所有代码重新敲了一遍,尤其是那些报错的地方,刻意再试一次,确认自己真的理解了错误原因。我发现很多知识点,光看教程觉得 “懂了”,一敲代码就暴露问题,比如切片的 “左闭右开”,第一次写的时候反复出错,现在已经能脱口而出规则了。同时我也意识到,编程入门没有捷径,“多敲、多试、多总结” 才是关键。
这周从字符串入手学 Python,虽然一开始磕磕绊绊,光是引号匹配、索引规则就折腾了好久,但也让我打下了扎实的基础 —— 字符串看似简单,却藏着 Python 的核心规则,比如不可变类型、类型转换,这些都是后续学习的关键。下周我打算接着学数字类型和变量,希望能把字符串和数字的操作结合起来,写更有趣的小程序。Python 入门的第一步走得不算顺,但每一次解决报错后的成就感,都让我更想继续探索这个编程世界。