我正在向第一年的数学学生教授“计算机程序设计入门”课程。人们必须假设这是学生第一次接触计算机编程。以下是我教学的主要目标:
我的教学方法是为每个新引入的概念提供一系列激发学生的问题和戏弄。例如,在引入字符串和列表时,自然问题是字符串或列表反转的任务。如果我要求学生编写一个代码来检查字符串是否是回文,那么我最好告诉他们如何反转它。
对于列表,自然解决方案myString.reverse()
至少有两个缺点:
真正的问题是:如何引入在Python中反转字符串的问题?
答案 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)
将它们引入足够的工具(特别是数组切片和函数式递归)以完成反转。然后,让他们努力想要解决一段时间。采取一些不同的答案并进行比较,显示每种方式的优缺点。