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

2024-09-24 22:23:44 发布

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

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

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

以输入“F air y”为例,输出“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,所以看起来我不能那样组合它们。有什么处理这个的技巧吗?


Tags: 方法字符串程序inputlen编程notair
3条回答

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

试试这个:

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

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

只是为了好玩:

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

相关问题 更多 >