如何教初学者在Python中反转一个字符串?

时间:2010-03-13 17:17:57

标签: python

我正在向第一年的数学学生教授“计算机程序设计入门”课程。人们必须假设这是学生第一次接触计算机编程。以下是我教学的主要目标:

  • 学生应该学习并理解Python的基础知识。
  • 最终他们需要掌握足够多的Python工具,以便他们能够为给定的问题选择合适的工具。
  • 同时,他们必须通过计算机编程学习解决问题的基本技能。

我的教学方法是为每个新引入的概念提供一系列激发学生的问题和戏弄。例如,在引入字符串和列表时,自然问题是字符串或列表反转的任务。如果我要求学生编写一个代码来检查字符串是否是回文,那么我最好告诉他们如何反转它。

对于列表,自然解决方案myString.reverse()至少有两个缺点:

  1. 它不会延续到字符串。
  2. 学生会看到 magic ,除非先告诉他们方法。
  3. 真正的问题是:如何引入在Python中反转字符串的问题?

6 个答案:

答案 0 :(得分: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'

答案 1 :(得分:4)

两种显而易见的方式是:

''.join(reversed(s))

s[::-1]

我认为对于编程新手而言,这两者都是非常重要的,但所涉及的概念并不那么困难。

如果您首先向他们展示s[::3]s[::2]s[::1]的结果,则第二种方式更容易理解。那么s[::-1]将自然而然地出现:)

答案 2 :(得分:3)

只要问他们这样的谜语:

为什么

>>> 'dammitimmad'[::-1] == 'dammitimmad'
True

>>> 'dammit im mad'[::-1] == 'dammit im mad'
False

答案 3 :(得分:2)

绝对的初学者指导python中的字符串反转。 ;)

# Tell them that,
# to reverse a string
# we read it backwards

s = 'string'  # input string
l = len(s)
rs = ''       # reversed string

for i in range(l-1,-1,-1): # range(start,end,step)
    rs += s[i]

print rs

但这不被认为是pythonic,我赞成其他人已经发布的更好的方法。

答案 4 :(得分:1)

答案 5 :(得分:1)

将它们引入足够的工具(特别是数组切片和函数式递归)以完成反转。然后,让他们努力想要解决一段时间。采取一些不同的答案并进行比较,显示每种方式的优缺点。