为什么我的Python前/后程序不起作用?

2024-04-26 12:46:45 发布

您现在位置:Python中文网/ 问答频道 /正文

任务是:

Given a string, return a new string where the first and last chars have been exchanged.

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

Tags: andthenewstringreturnbackwheregiven
3条回答

首先,从不调用变量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,因为这是处理文本的正常方式,这是在您的问题中要求的。你知道吗

字符串文本可以切片添加

>>> s = "hello world"
>>> s[-1] + s[1:-1] + s[0]
'dello worlh'

p.S.str是python中的内置代码,因此将其用作变量名是个坏主意。你知道吗

Why?

它不起作用,因为.replace()将替换该字符的所有出现,而不一定只替换第一个和最后一个

下面是一个用第一部分、正文部分和最后一部分构造字符串的解决方案

text = 'code'
first, body, last = text[0], text[1:-1], text[-1]
result = last + body + first
# 'eodc'

相关问题 更多 >