2013-06-18 61 views
2

我是一個全新的編程,從在線課程學習Python3。這個練習要求我編寫一個程序,它使用input()來讀取一個字符串,並輸出相同的字符串,但交換了第一個和最後一個字符(例如:Fairy變成yairF)。用更高級的函數可能會有一個更簡單的方法,但是爲了這個練習的目的,我應該只使用類,子字符串和索引編寫程序。以下是我現在有:如何在Python中輸入首字母和最後一個字符

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

使用輸入的「仙女」,這個輸出「Y空氣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

試試這個:

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

總之,Python有華麗的字符切片語法。你可以用它做魔術。

+2

請不要命名變量'str',它是類型的名稱。而一個測試,如果len(s)<2'會有用。 – kay

+0

@你說得對。更新。 – ducin

+0

@Kay:一個測試,如果len(s)<2:我不是寫一個完整的函數,而是給出一個提示 - 我希望 - 足以讓提問者自己處理這個問題。 – ducin

-1

您只需做到以下幾點:

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

完成!

+0

哦,我的上帝......這也不是很pythonic。 – ducin

1

只是爲了好玩:

>>> temp = "abcde" 
>>> temp2 = list(temp) 
>>> temp2[0],temp2[-1]=temp2[-1],temp2[0] 
>>> temp = ''.join(temp2) 
>>> temp 
'ebcda' 
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 
+0

可以寫得更簡潔:'store [0],store [-1] = store [-1],store [0]'。但是不處理空字符串。 – martineau

2

這也適用於temp = 'x'

temp[-1] + temp[1:-1] + temp[0] if temp[1:-1] else temp[::-1] 
0
word = input() 
wordLength = len(word) 
print(word[wordLength-1]+word[1:wordLength-1]+word[wordLength-wordLength]) 
0

我在這個問題迷迷糊糊過了,閱讀的答案後,我發現可能做到這一點最簡單的方法:

mystring= input(cantastif) 

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

我特意用一個例子,因爲我認爲這是更容易理解

相關問題