2016-04-30 47 views
0

這是我的代碼:如何從另一個變量中的用戶輸入中找到一個單詞?

a = ('the', 'cat', 'sat', 'on', 'a', 'mat') 
for i,j in enumerate(a): 
    data = (i, j) 
    print (data) 
word = input('Type a word out of this sentence - \'The cat sat on a mat\' : ') 
word = word.lower() 
print(word.find(data)) 

這是我的代碼,基本上,當從句子中的詞彙,用戶類型,我想找到data索引位置和字,然後打印。 請你能幫我做到這一點很簡單,因爲我只是一個初學者。謝謝:)(對不起,如果我沒有解釋得很好)

回答

2

您正在嘗試錯誤的方向。

如果你有一個字符串,並調用find您搜索該字符串另一個字符串:

>>> 'Hello World'.find('World') 
6 

你需要的是周圍的其他方式,找到一個元組的字符串。對於使用 元組的index方法:

>>> ('a', 'b').index('a') 
0 

這就提出了一個ValueError如果元素不是該元組的內部。你可以這樣做:

words = ('the', 'cat', 'sat', 'on', 'a', 'mat') 
word = input('Type a word') 
try: 
    print(words.index(word.lower())) 
except ValueError: 
    print('Word not in words') 
+0

謝謝你,我真的很明白這一點 –

2

只需使用a.index(word)而不是word.find(data)。您只需要在a中找到word,並且您不需要for循環,因爲它所做的全部工作都是保持重新分配data

你最終的結果會是這個樣子:

a = ('the', 'cat', 'sat', 'on', 'a', 'mat') 
word = input('Type a word out of this sentence - \'The cat sat on a mat\' : ').lower() 
print(a.index(word)) 
2

既然你想要的a的索引,其中,word發生時,您需要更改word.find(data)a.index(word))

,這將拋出一個ValueError如果字是不是在a,你能趕上:

try: 
    print(a.index(word)) 
except ValueError: 
    print('word not found') 
+0

所以我不需要枚舉和數據位? –

+0

@ClareJordan根本不是 – timgeb

1

首先,你不需要你的循環,因爲它所做的只是分配的最後一個元素你元組到數據。

所以,你需要做這樣的事情:

a = ('the', 'cat', 'sat', 'on', 'a', 'mat') # You can call it data 
word = input('Type a word out of this sentence - \'The cat sat on a mat\' : ') 
word = word.lower() 
try: 
    print(a.index(data)) 
except ValueError: 
    print('word not found') 
相關問題