我正在处理作为Google Python类一部分的string1练习。我遇到问题的问题是C:
C. fix_start
Given a string s, return a string
where all occurences of its first char have
been changed to '*', except do not change
the first char itself.
e.g. 'babble' yields 'ba**le'
Assume that the string is length 1 or more.
Hint: s.replace(stra, strb) returns a version of string s
where all instances of stra have been replaced by strb.
我在考虑使用一个循环来比较每个字母和第一个字母,并用'*'替换任何匹配的字母。我认为必须有一个更简单的方法。有没有人有任何建议?
答案 0 :(得分:1)
是的,有一种更简单的方法,这个问题已经给你一个提示:
s.replace(stra, strb)
返回一个字符串版本,其中stra
的所有实例都已被strb
替换。
考虑一下如何使用该功能。
答案 1 :(得分:1)
已提供提示,并且不涉及使用循环!
它建议使用s.replace(stra, strb)
并描述可能产生的影响,因此,如果问题陈述允许,请查看s
,stra
和strb
应该是什么。< / p>
s
中的s.replace(stra, strb)
应该是第二个字符的所有内容。我们可以使用切片s[1:]
来获取此信息(此处s
是传递给函数的参数)。stra
应该是第一个字符,或s[0]
(再次s
是参数)。strb
很简单,它说我们正在用*
替换匹配,因此strb
是'*'
所以在你的函数的某个地方,你需要s[1:].replace(s[0], '*')
,这将使你在那里的大部分时间。
答案 2 :(得分:1)
这是我得到的,不需要循环。
def fix_start(s):
return s[0]+s[1:].replace(s[0], '*')
只有在他们告诉我们我们应该假设字符串不是''时,这才有效。在这种情况下,应该将返回行移动到正文中,然后先检查len。
答案 3 :(得分:0)
这是我更长的解决方案。我将s分成两部分,然后将字符串的第二部分替换为“休息”。它更长,但包含在这里以显示解决难题的思考过程。
def fix_start(s):
star = s[0]
rest = s[1:]
rest = rest.replace(star,'*')
return star+rest