如何教初学者在Python中反转字符串?
我正在给一年级的数学学生讲授“计算机编程入门”课程。可以想象,这些学生是第一次接触计算机编程。以下是我教学的主要目标:
- 学生应该学习并理解Python的基础知识。
- 最终,他们需要掌握足够多的Python工具,以便能够为特定问题选择合适的工具。
- 同时,他们还要学习通过计算机编程解决问题的基本技能。
我的教学方法是为每个新介绍的概念提供一系列问题和小挑战,以激励学生。例如,在介绍字符串和列表时,一个自然的问题就是如何反转字符串或列表。如果我让学生写一段代码来检查一个字符串是否是回文,那么我最好先告诉他们如何反转这个字符串。
对于列表,一个自然的解决方案是 myString.reverse()
,但这个方法至少有两个缺点:
- 它不能用于字符串。
- 学生会觉得这像是一个魔法,除非先告诉他们关于方法的知识。
真正的问题是:应该如何在Python中介绍反转字符串的问题呢?
6 个回答
3
你可以问他们一个这样的谜语:
为什么
>>> 'dammitimmad'[::-1] == 'dammitimmad'
True
但是
>>> 'dammit im mad'[::-1] == 'dammit im mad'
False
?
4
有两种明显的方法:
''.join(reversed(s))
还有
s[::-1]
我觉得这两种方法对编程新手来说都不简单,但其实涉及的概念并不是特别难。
如果你先展示一下 s[::3]
、s[::2]
和 s[::1]
的结果,第二种方法会更容易理解。然后 s[::-1]
就会自然而然地明白了 :)
7
你可以先教他们关于步长表示法(::
)的内容,然后再讲解一下切片,并把这两者结合起来使用。
s = 'string'
s = s[::-1]
print s # gnirts
参考资料和更多信息:
针对你的评论,你可以提供任意一个参数。
>>> s[len(s):None:-1]
'gnirts'
>>> s[5:None:-1]
'gnirts'
>>> s[::-1] # and of course
'gnirts'