我需要有关如何在字符串上定义和测试三个函数的帮助。遵循这些准则。这是我周三的考试复习,并且非常希望得到正确的解决方案,因为我的所有问题都会出现语法错误。
我需要按照下面列出的要求提出所有三个示例的代码。
不使用任何字符串方法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
是任何字符串。我知道它会返回一个新字符串,该字符串是通过用new替换s中old的每一个出现而形成的。
>>> 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'
def repl(old, new, s):
newStr = ""
for ch in s:
if ch != old:
newStr = newStr + ch
else:
newStr = newStr + new
return newStr
上面列出的代码不会替换正确的字符我不知道哪里出错了。
答案 0 :(得分:1)
如果您可以使用len()
并切片,最好只是抓住
第一个和最后一个字符并返回。
def ends(input):
if len(input) < 2:
return input
else:
return input[0] + input[-1]
你可以在这里做同样的事情:
def butends(input):
if len(input) < 2:
return input
else:
return input[1:-1]
对于这个,Python中有一个名为replace
的函数,但我是
不确定你可以使用它。
def repl(old, new, input):
return input.replace(old, new)
如果你不能,那么只需循环输入并在每个字符与new匹配时替换它。
答案 1 :(得分:1)
这是三种功能的一种可能解决方案。请注意,正如我在评论中提到的那样,如果您向我们展示您尝试过的内容以及它们存在的问题,您将会学到更多。
def ends (s):
if len(s) > 2:
return s[0] + s[-1]
else:
return s
def butends (s):
if len(s) > 2:
return s[1:-1]
else:
return s
def repl (find, replacement, s):
newString = ''
for c in s:
if c == find:
newString += replacement
else:
newString += c
return newString
答案 2 :(得分:0)
1)
def ends(s):
if len(s)<=2: return s
return s[0]+s[-1]
2)
def butends(s):
if len(s)<=2: return s
return s[1:-1]
3)
def repl(s,old,new):
return s.replace(old,new)
答案 3 :(得分:0)
我喜欢编程作业:
def ends (s): return s [0] + s [-1] if len (s) > 1 else s
def butends (s): return s [1:-1] if len (s) > 1 else s
def repl (a, b, c, acc = ''): return acc if not c else repl (a, b, c [1:], acc + (b if c [0] == a else c [0] ) )
不确定“累加器模式”是什么,所以对于替换,我使用了函数式编程已知的累加器的递归函数。