Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么将一个字符串传递给python函数时输出为两个字符串_Python - Fatal编程技术网

为什么将一个字符串传递给python函数时输出为两个字符串

为什么将一个字符串传递给python函数时输出为两个字符串,python,Python,我为一个实验创建了一个名为swap的函数。功能如下: def swap(x): return x[-1:] + x[1:-1] + x[0:1] 当我尝试传递字符串“a”时,输出为“aa”。我不知道这是怎么发生的。如果有人知道原因,请提前感谢。您的函数将根据以下内容返回一个新字符串: 字符串的最后一个字母(a) 第一个字母之后但最后一个字母之前的所有内容(在您的案例中为空) 和字符串的第一个字母(a) 因为你的最后一封信是你的第一封信,所以你会收到两次 要正确交换它们,必须测试字符

我为一个实验创建了一个名为swap的函数。功能如下:

def swap(x):
    return x[-1:] + x[1:-1] + x[0:1]

当我尝试传递字符串“a”时,输出为“aa”。我不知道这是怎么发生的。如果有人知道原因,请提前感谢。

您的函数将根据以下内容返回一个新字符串:

  • 字符串的最后一个字母(
    a
  • 第一个字母之后但最后一个字母之前的所有内容(在您的案例中为空)
  • 和字符串的第一个字母(
    a
因为你的最后一封信是你的第一封信,所以你会收到两次

要正确交换它们,必须测试字符串长度:

def swap(x):
    if len(x) < 2:
        return x
    return x[-1] + x[1:-1] + x[0]
def交换(x):
如果len(x)<2:
返回x
返回x[-1]+x[1:-1]+x[0]
既然您知道最后一行
x
至少有两个字符长,那么您也不需要对第一个/最后一个字符进行切片,并且可以使用直接元素访问(
x[0]
/
x[-1]
)。

实际上这是可以的

  • x[-1:]
    将返回最后一个字符,因为-1从末尾开始
  • x[0:1]
    将返回开头的第一个字符
  • x[1:-1]
    在本例中不算什么,因为您没有第二个字符

顺便说一句,对于交换,请在函数中使用
return x.reverse()
return x[::-1]

打印
x[-1:]
x[0:1]
,然后亲自查看。@lescurel-如果交换第一个和最后一个字母,则可以反转整个字符串。这有什么帮助?OP交换第一个字母和最后一个字母,将其他字母留在原位
x.reverse()
x[:-1]
反转整个字符串。。。