2014-11-21 63 views
0

我有一個包含這個字符串的字符的列表:如何檢查一個字符串的字符是否存在並與另一個字符串中的字符位於同一位置?

wordtoguess = [ 'T', 'R', 'A', 'N', 'S', 'M', 'I', 'S','S','I','O','N']

而且我讓用戶猜測一個單詞並將它存儲在變量'guessed'中。我也有一個被稱爲 'correct_chars' 變量,它等於0。

猜到=輸入()

correct_chars = 0

當用戶猜測一句話我想的Python迭代通過單詞的每個字符,如果它存在並與wordtoguess中的相應字符位於相同的位置,則將1添加到correct_chars。例如,如果用戶輸入字符串'translations',那麼correct_chars將等於5.我一直無法弄清楚如何做到這一點。

+1

您可以張貼在你是怎麼想的想法,這可能做到嗎? – sfjac 2014-11-21 21:42:22

回答

0
guessed = input() 

correct_chars = 0 
wordtoguess = ['T', 'R', 'A', 'N', 'S', 'M', 'I', 'S', 'S', 'I', 'O', 'N'] 

for i, c in enumerate(guessed): 
    try: 
     if c.upper() == wordtoguess[i]: 
      correct_chars += 1 
    except IndexError: 
     pass 

print(correct_chars) 
+1

一旦你有一個IndexError,其餘的將是IndexError,所以你可以打破,而不是通過那裏。你也可以使用zip而不是處理相同效果的索引(它在最短參數耗盡後停止)。 – lvc 2014-11-21 22:18:47

1

這裏是一個可能實現:

>>> wordtoguess = "TRANSMISSION" 
>>> guessed = "TRANSLATIONS" 
>>> correct_chars = sum(1 for (x, y) in zip(wordtoguess, guessed) if x.lower() == y.lower()) 
>>> correct_chars 
5 
+1

你也可以直接對bools求和:'sum(x.lower()== y.lower()for x,y in zip(wordtoguess,guessed))''。我覺得這與英文非常接近,「翻遍每個字符串中的相應字符並加起來有多少匹配」。 – lvc 2014-11-21 22:13:02

0

這裏是一個可能的解決方案

guessed = input() 

correct_chars = 0 
wordtoguess = ['T', 'R', 'A', 'N', 'S', 'M', 'I', 'S', 'S', 'I', 'O', 'N'] 

for i in range(len(wordtoguess)): 
    if i >= len(guessed): 
     break 
    if wordtoguess[i] == guessed[i]: 
     correct_chars = 0 
相關問題