如何在Python中从输入交换第一个和最后一个字符

时间:2013-06-18 21:47:59

标签: python python-3.x

我是编程新手,从在线课程学习Python3。这个练习要求我编写一个程序,使用input()读取一个字符串,并输出相同的字符串,但交换了第一个和最后一个字符(例如:Fairy变为yairF)。使用更高级的函数可能有一种更简单的方法,但是,为了本练习的目的,我应该只使用类,子串和索引来编写程序。这就是我现在所拥有的:

myString = input()
newString = (myString[1:len(myString)-1])
print(myString[len(myString)-1],newString,myString[0])

使用输入'Fairy'的例子,输出'y air F',这不是我想要的。我也试过

myString = input()
newString = (myString[1:len(myString)-1])
newString[0] = myString[len(myString)-1]
newString[len(newString)-1] = myString[0]
print(newString)

然而,第三行给了我:TypeError: 'str' object does not support item assignment。所以我猜我无法为索引中的位置分配新值。我的另一种方法,下面也给了我一个错误:

myString = input()
newString = (myString[1:len(myString)-1])
lastString = str(myString[len(myString)-1],newString,myString[0])
print(lastString)

第三行给了我:TypeError: decoding str is not supported,所以我似乎无法将它们组合起来。有关处理此事的任何提示吗?

9 个答案:

答案 0 :(得分:10)

试试这个:

>>> temp = "abcde"
>>> temp[1:-1]
'bcd'
>>> temp[-1:] + temp[1:-1] + temp[:1]
'ebcda'
>>> 

简而言之,python具有华丽的字符串切片语法。你可以用它做魔术。

答案 1 :(得分:2)

这也适用于temp = 'x'

temp[-1] + temp[1:-1] + temp[0] if temp[1:-1] else temp[::-1]

答案 2 :(得分:1)

只是为了好玩:

>>> temp = "abcde"
>>> temp2 = list(temp)
>>> temp2[0],temp2[-1]=temp2[-1],temp2[0]
>>> temp = ''.join(temp2)
>>> temp
'ebcda'

答案 3 :(得分:1)

python中的字符串是不可变的,所以你不能简单地这样做:

mystr[0] = mystr[-1]

要交换字符串中的字母,您可以将其变为list,然后只需更改列表的顺序:

mystr = "abcde"
mylist = list(mystr)
store = mylist[0], mylist[-1]
mylist[0] = store[1]
mylist[-1] = store[0]
print ''.join(mylist)

打印:

ebcda

答案 4 :(得分:0)

word = input()
wordLength = len(word)
print(word[wordLength-1]+word[1:wordLength-1]+word[wordLength-wordLength])

答案 5 :(得分:0)

我偶然发现了这个问题,在看完答案之后,我发现这可能是最简单的方法:

mystring= input(cantastif) 

print(mystring[-1]+mystring[1:8]+mystring[0]) 

我故意使用了一个例子,因为我觉得它更容易理解

答案 6 :(得分:0)

both = Foo.objects.all().annotate(Count("bar1__value")
                       ).annotate(Count("bar2__value", distinct=True))

这是我的菜鸟脑子想出的。

答案 7 :(得分:0)

def front_back(word):
    word_list = list(word)
    keep_in_mind = word_list[0], word_list[-1]
    word_list[0] = keep_in_mind[1]
    word_list[-1] = keep_in_mind[0]
    return (''.join(word_list))

print(front_back('a'))

答案 8 :(得分:-1)

您可以执行以下操作:

myString = input()
newString = (myString[1:len(myString)-1])
print(myString[len(myString)-1]+newString+myString[0])

完成!