如何在Python中交换输入的第一个和最后一个字符
我是编程新手,从在线课程学习Python 3。本练习要求我编写一个程序,该程序使用如何在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
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'))