任务是:
给定一个字符串,返回一个新字符串,其中第一个和最后一个字符已被交换。
def front_back(str):
if len(str)<=0:
return str
else:
front=str[0]
back=str[-1]
new = str.replace(str[0], back)
print new
new_2=new.replace(new[-1], front)
print new_2
front_back("code")
答案 0 :(得分:2)
为什么?
它不起作用,因为.replace()
将替换所有出现的那个角色,不一定只是第一个和最后一个
下面是一个用第一部分,正文部分和最后部分构建字符串的解决方案
text = 'code'
first, body, last = text[0], text[1:-1], text[-1]
result = last + body + first
# 'eodc'
答案 1 :(得分:1)
字符串文字可以切片并添加:
>>> s = "hello world"
>>> s[-1] + s[1:-1] + s[0]
'dello worlh'
P.S。 str
是python中的内置函数,因此将其用作变量名称是一个坏主意。
答案 2 :(得分:0)
首先,从不调用变量str
。为什么?因为这是Python字符串的类的名称。如果你使用相同的名称,那么你松了它。我使用txt
。
你的测试长度是合理的,但下限可以增加(单个字符会很傻)。
但使用str.replace()
是不可行的。为什么?那么它可以在你的测试用例中工作,但只是因为每个角色都是唯一的。 str.replace()
替换指定字符串的每个次出现。因此,如果第一个或最后一个字符在其他地方重复,那么也会改变。
您可以使用切片,其中第一个(最左侧)字符为0(零)。您也可以使用负数从右侧索引,因此-1是最后一个(最右侧)字符。字符范围从开头到最后一个字符。所以[1:-1]
从第二个字符到最后一个字符,但只有一个。
def front_back(txt):
if len(txt) <= 1:
return txt
else:
new_txt = txt[-1] + txt[1:-1] + txt[0]
return new_txt
print front_back("code")
我在函数中使用return
,因为这是处理文本的常规方式,并且在您的问题中要求这样做。