为什么Python中的front_back程序不起作用?

时间:2016-06-08 14:45:36

标签: python str-replace

任务是:

  

给定一个字符串,返回一个新字符串,其中第一个和最后一个字符已被交换。

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")

3 个答案:

答案 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,因为这是处理文本的常规方式,并且在您的问题中要求这样做。