2016-11-17 81 views
-2

我在做一個掛人。如何檢查一個字母是否在一個字符串中

我讓用戶一次輸入一個字母,而我有兩個不同的列表,包含正確和錯誤的字母。這個問題是出於某種原因,不管這封信是否在這個詞裏,它都會出現在錯誤的列表中,不管我做什麼。例如,對於世界的「你好」

如果用戶在輸入一個f如果用戶輸入一個「H」

右邊框看起來應該是這樣的「h」 和錯箱應該是空的 正確的盒子應該看起來像這樣「h」 錯誤的盒子應該看起來像這個「f」等等。

我以爲我爲它做了完美的邏輯,但它似乎不工作賴特,因爲用戶類型的一切似乎是錯誤的框。我的代碼被附加的圖像 enter image description here

+4

'hello''中的''h'爲真,'hello''中的'''爲假' – depperm

+11

您忘記了密碼 – Aidin

+2

請[編輯]您的問題,以包括證明您遇到問題的最短完整程序有。有關更多信息,請參見[mcve]。 –

回答

1
word = 'hello' 
right_letters = [] 
wrong_letters = [] 

def guess(letter): 
    if letter in word: 
     right_letters.append(letter) 
    else: 
     wrong_letters.append(letter) 
0

速戰速決的!

替換以下兩行:

hold_random_word = [] 
hold_random_word.append(random_word) 

有:

hold_random_word = [i for i in random_word] 

而且你的代碼將工作!


問題在你的代碼:

因爲hold_random_word是字符串列表。所以,當你寫:

if i in hold_random_word: 

它存在於hold_random_word列表與i每個字符串進行比較。

例如如果hold_random_word = ["str","str1","str2"]和字符ch = 's',表達if ch in hold_random_word:將比較ch(其爲 'S')與"str"if 's' == "str" ?否),然後"str1"if 's' == "str1" ?否),然後"str2"if 's' == "str2" ?否)。沒有找到匹配,所以它會返回False

相關問題