2014-02-17 39 views
-1

我必須爲學校編寫一個程序,檢查單詞是否是迴文。我要求檢查這個詞,並且希望將它分成兩半。這裏是我的代碼:TypeError:sttring索引必須是python中的整數,用於將變量分解爲2

print("\n \n" * 100) 
print("Please enter a word to check if it is a palindrome: ") 
word = input("?: ") 

wordLength = int(len(word)) 
finalWordLength = int(wordLength/2) 
firstHalf = word[0, finalWordLength] 
secondHalf = word[finalWordLength, -1] 
print(firstHalf) 
print(secondHalf) 

#This is as far as i got 

感謝

+3

我想你想使用':'而不是',':'字[finalWordLength:-1]' –

+0

@hivert,這無關奇數或偶數, 「轉子」 和「中午「兩者都是迴文詞。 –

+0

你爲什麼想把這個詞分成兩半?迴文詞在前後方向上讀取相同,因此您可能對Python內置'reversed()':-)感興趣。 –

回答

0

你拿到你的字符串割掉略有語法。使用:而不是,。逗號產生一個元組,所以你基本上要求word[(0, finalWordLength)],Python不知道該怎麼處理。相反,使用冒號的片斷:

firstHalf = word[0:finalWordLength] 
secondHalf = word[finalWordLength:-1] 

您也可以省略第一個和最後一個指標,如果你的意思是抓住一個迭代,劈成兩半的全部(和你應該的,因爲上面的代碼錯過了在原詞的最後一個字母):

firstHalf = word[:finalWordLength] # "from beginning to finalWordLength" 
secondHalf = word[finalWordLength:] # "from finalWordLength to end" 

有一些疑問,爲什麼你這樣做的話 - 在半分割一個字不來測試迴文一個明顯的方式 - 但是這這不是問題的關鍵。 :-)

+0

謝謝,這有很多幫助! – user3320350

0

你得到string indices must be integers, not tuple,因爲word是一個字符串。你可以參考任何字母在單詞都以整數索引:

In [84]: word = "amandabee" 

In [85]: word[4] 
Out[85]: 'd' 

但是你給它一個元組:

In [86]: wordLength = int(len(word)) 
In [87]: wordLength 
Out[87]: 9 

所以word[0, wordLength]相同word[0,9],並作爲一個字符串..

In [90]: type(word) 
Out[90]: str 

word不知道如何處理兩個值。

0

你試過Extended Slices

print("\n \n" * 100) 
print("Please enter a word to check if it is a palindrome: ") 
word = input("?: ") 

if word.lower() == word.lower()[::-1]: 
    print "It's palindrome" 
else: 
    print "It's not palindrome" 
相關問題