【发布时间】:2013-10-06 19:03:24
【问题描述】:
我需要有关如何在字符串上定义和测试三个函数的帮助。遵循这些准则。这是我周三考试的复习,我真的很想有正确的解决方案,因为我的都是语法错误。
我需要按照下面列出的要求为所有三个示例提供代码。
不使用任何字符串方法仅len函数和字符串操作+、*、索引切片和==用于比较字符串或字符。
在repl 函数中,使用累加器模式构建新字符串。
示例
-
ends函数接受一个字符串作为参数;如果字符串有两个或多个字符,则返回一个由给定字符串的第一个和最后一个字符组成的字符串;否则,它返回给定的字符串。>>> ends("ab") 'ab' >>> ends("abc") 'ac' >>> ends("a long sentence") 'ae' >>> ends("") '' >>> ends("*") '*' -
butends函数接受一个字符串参数;如果字符串有两个或更多字符,则返回一个字符串,该字符串由字符串的第一个和最后一个字符组成;否则,它返回给定的字符串。>>> butends("abcde") 'bcd' >>> butends("abc") 'b' >>> butends("a long sentence") ' long sentenc' >>> butends("") '' >>> butends("a") 'a' -
repl 函数接受三个参数:
-
old是单个字符; -
new为 0 个或多个字符的字符串; -
s是任意字符串。
我知道它会返回一个新字符串,该字符串是通过将 s 中每次出现的 old 替换为 new 形成的。
>>> repl('a', 'A', 'fast faces react snappily') 'fAst fAces reAct snAppily' >>> repl('*', '+++', 'a*b = c*d') 'a+++b = c+++d' >>> repl(' ', '\n', 'Practice every day.') 'Practice\nevery\nday.' >>> print(repl(' ', '\n', 'Practice every day.')) Practice every day. >>> repl(",", ":", "a,b,cde,fghi") 'a:b:cde:fghi' -
到目前为止,我对第 3 部分的了解是:
def repl(old, new, s):
newStr = ""
for ch in s:
if ch != old:
newStr = newStr + ch
else:
newStr = newStr + new
return newStr
上面列出的代码没有替换正确的字符我不确定我哪里出错了。
【问题讨论】:
-
我相信会有更多人这样说,但你有什么尝试?
-
“[…] 真的很想有正确的解决方案,因为我的都是语法错误。” – 向我们展示你的解决方案和什么不起作用,我们会尽力帮助您解决它们。您可以从纠正自己的想法中学到更多,而不仅仅是获得完整的功能。
-
让我印象深刻的是,在这些限制条件下,第三个问题比前两个问题要难得多。
-
前两个可以通过索引切片轻松完成。对于第三个,请使用您的提示:)。