【问题标题】:Checking if a value is equal to any value in an array [duplicate]检查一个值是否等于数组中的任何值[重复]
【发布时间】:2013-08-08 18:03:14
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你不知道我花了多长时间试图解决这个愚蠢的问题,当我找到完全相同的问题的确切答案时我是多么的松了一口气哈哈哈。

标签: python


【解决方案1】:

尝试使用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。

【讨论】:

  • 啊哈,谢谢你的解释!
【解决方案2】:

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

any(first == c for c in letter)

【讨论】:

  • 这个问题可能被标记为重复,但它是我在谷歌中寻求快速复习时找到的第一个结果。 IMO,这是最好的答案。
【解决方案3】:

您需要使用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

【讨论】:

  • 成功了,谢谢!
  • @ThaRemo :很高兴它有帮助。 :)
【解决方案4】:

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

尝试使用循环检查“字母”中的每个项目的“第一”。如果您需要帮助来了解如何执行此操作,请告诉我。

【讨论】:

    猜你喜欢
    • 2021-12-16
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    相关资源
    最近更新 更多