2016-11-17 92 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

相关问题