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

如何在Python中交换输入的第一个和最后一个字符,python,python-3.x,Python,Python 3.x,我是编程新手,从在线课程学习Python 3。本练习要求我编写一个程序,该程序使用input()读取字符串,并输出相同的字符串,但交换了第一个和最后一个字符(例如:Fairy变为yairF)。可能有一种更简单的方法可以使用更高级的函数来实现这一点,但是,出于本练习的目的,我应该只使用类、子字符串和索引来编写程序。以下是我现在拥有的: myString = input() newString = (myString[1:len(myString)-1]) print(myString[len(my

我是编程新手,从在线课程学习Python 3。本练习要求我编写一个程序,该程序使用
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'对象不支持项分配
。所以我猜我不能给索引中的位置赋值。下面我的另一种方法也给了我一个错误:

myString = input()
newString = (myString[1:len(myString)-1])
lastString = str(myString[len(myString)-1],newString,myString[0])
print(lastString)
第三行告诉我:
TypeError:不支持对str进行解码
,所以我似乎无法以这种方式组合它们。有处理这个问题的技巧吗?

试试这个:

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

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

你只需做以下几件事:

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

只是为了好玩:

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

python中的字符串是不可变的,因此不能简单地执行以下操作:

mystr[0] = mystr[-1]
要交换字符串中的字母,可以将其放入
列表
,然后只需更改列表的顺序:

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

ebcda

这也适用于
temp='x'

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

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

mystring= input(cantastif) 

print(mystring[-1]+mystring[1:8]+mystring[0]) 
我故意用了一个例子,因为我认为它更容易理解

string = input()

slice_mid = string[1:-1]
slice_end = string[-1:]
slice_beg = string[0]

print (slice_end + slice_mid + slice_beg)

这就是我的noob brain想到的。

请不要命名变量
str
,它是类型的名称。如果
len(s)<2
,则测试将非常有用。@Kay:len(s)@Kay:work用于任何长度的字符串。@martineau,no.
temp='X';温度[-1:]+temp[1:-1]+temp[:1]='XX'
哦,我的天啊。。。这也不是很像Python。可以更简洁地写为:
store[0],store[-1]=store[-1],store[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'))
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'))