2013-09-21 97 views
0

爲什麼這不正常?我知道高級切片([:: - 1])選項,但我想弄清楚如何以這種方式反轉str。用標準索引切片字符串

word = input("Please enter a word to reverse: ") 

cut = len(word) 
print(word[cut:-cut]) 
+1

''cut''表示從字符串末尾開始的'cut'步驟。 – rlms

+0

@ user2387370請發表那個評論作爲答覆;) – tacaswell

+0

那麼爲什麼在這種情況下沒有否定符號功能呢? – Zack

回答

2
word[cut:-cut] 

可以去從cut-cut,你也可以寫

word[cut:0] 

一步依然是1,這是仍積極。所以它會從末尾分割,並停止,因爲它已經到了最後!

這意味着步驟是需要的任一方式,word[cut:-cut:-1]。向後索引時,兩個索引都需要減1,因此您有word[cut-1:-cut-1:-1]word[cut-1:-6:-1],或者甚至只有word[::-1]。請注意,-1作爲最終參數將被重新調整回到字符串的末尾!

+2

實際上,您必須使用'word [cut-1:-1:-1]'。 –

+1

@Martijn,不,不起作用。在切片中,Python首先將序列的長度添加到任何負數索引。所以你的中間'-1'魔法變成了'len(word) - 1',而這個片實際上是空的!試試吧;-)這只是和'range'或者'xrange'的參數不一樣。 '[cut-1 :: - 1]'這個詞有效(省略中間的參數)。 –

+0

@TimPeters:啊,你說的對,忘了那個角落的情況。沒有辦法指定'-1'的最終值,因爲負值超負荷。 –

0

除非您指定否定步驟,否則切片始終向前。在切片結束後指定開始位置只會產生一個空切片。你需要負面的一步。