3

我是编程新手,从在线课程中学习 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,所以看来我不能那样组合它们。处理这个有什么技巧吗?

4

10 回答 10

12

尝试这个:

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

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

于 2013-06-18T21:49:32.593 回答
2

纯娱乐:

>>> temp = "abcde"
>>> temp2 = list(temp)
>>> temp2[0],temp2[-1]=temp2[-1],temp2[0]
>>> temp = ''.join(temp2)
>>> temp
'ebcda'
于 2013-06-18T22:01:34.403 回答
1

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

mystr[0] = mystr[-1]

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

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

印刷:

ebcda
于 2013-06-18T22:29:09.793 回答
1

这也适用temp = 'x'

temp[-1] + temp[1:-1] + temp[0] if temp[1:-1] else temp[::-1]
于 2013-06-19T01:26:37.187 回答
0
word = input()
print(word[-1]+word[1:-1]+word[0])

我在这个问题上遇到了麻烦-在网上找到了这个解释,这有帮助

  1. 我们初始化一个变量 start,它存储字符串的第一个字符 ( string[0])
  2. 我们初始化另一个变量 end 存储最后一个字符 ( string[-1])
  3. 然后我们将使用字符串切片,string[1:-1]这将访问除最后一个字符之外的第二个位置的所有字符。
  4. 然后我们根据需要添加这三个,形成一个新字符串,其中交换了原始字符串的第一个和最后一个字符。然后我们将打印它。

我最初添加了额外的变量作为字符串的第一个和最后一个字符的占位符,但你只能通过调用索引、切片和连接字符串来做到这一点。

于 2021-12-12T05:07:03.587 回答
0

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

mystring= input(cantastif) 

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

我特意用了一个例子,因为我认为它更容易理解

于 2017-04-18T11:23:10.633 回答
0
word = input()
wordLength = len(word)
print(word[wordLength-1]+word[1:wordLength-1]+word[wordLength-wordLength])
于 2016-06-29T06:11:29.570 回答
0
string = input()

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

print (slice_end + slice_mid + slice_beg)

这就是我的菜鸟大脑想出的。

于 2018-07-21T03:15:36.297 回答
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'))
于 2020-07-28T08:59:56.427 回答
-1

您可以简单地执行以下操作:

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

完毕!

于 2013-06-18T21:54:05.037 回答