17

我是 python 新手(和一般编程),我自己似乎无法找到解决方案。我想检查字符串的第一个字母是否等于存储在数组中的任何字母,如下所示:

letter = ["a", "b", "c"]
word = raw_input('Enter a word:')
first = word[0]

if first == letter:
    print "Yep"
else:
    print "Nope"

但这不起作用,有人知道它会如何吗?提前致谢!

4

4 回答 4

20

您需要使用in运算符。使用if first in letter:.

>>> letter = ["a", "b", "c"]
>>> word = raw_input('Enter a word:')
Enter a word:ant
>>> first = word[0]
>>> first in letter
True

还有一个错误的测试,

>>> word = raw_input('Enter a word:')
Enter a word:python
>>> first = word[0]
>>> first in letter
False
于 2013-08-08T18:04:13.370 回答
8

提示在您的问题中。使用any. 这使用生成器表达式来检查它是 True 还是 False。

any(first == c for c in letter)
于 2013-08-08T18:08:51.153 回答
6

尝试使用in关键字:

if first in letter:

在您当前的代码中,您将字符串字符(first等于 中的第一个字符word)与列表进行比较。所以,假设我的输入是"a word". 您的代码实际上在做的是:

if "a" == ["a", "b", "c"]:

这将永远是错误的。

然而,使用in关键字正在做:

if "a" in ["a", "b", "c"]:

在这种情况下,它测试是否"a"是的成员["a", "b", "c"]并返回 true。

于 2013-08-08T18:04:38.617 回答
1

在我看来,问题是您要问一个字符是否等于一个数组。这将始终返回 false。

尝试使用循环检查“字母”中的每个项目的“第一”。让我知道您是否需要帮助来弄清楚如何做到这一点。

于 2013-08-08T18:10:12.323 回答