【问题标题】:How do I tell if the input has used duplicate letters? [duplicate]如何判断输入是否使用了重复的字母? [复制]
【发布时间】:2021-03-03 09:26:08
【问题描述】:
list = [ "A", "B" ,"C","T"]

我想从字符串中的字母组成一个单词。如果用户输入“cat”,那是正确的,但如果是“CATT”,那就错了。我将如何检测到这一点?计算机只查看是否使用了“A,B,C,T”而不是使用了多少次。

【问题讨论】:

  • 您知道count() 方法吗?您可以使用它来确保输入中每个字符的计数与输出的计数匹配。这有帮助吗?
  • 这真的是标记问题的重复吗?我认为这是检查字符串以查看列表中的字符是否重复。链接的问题是关于查看列表本身是否有重复的元素。

标签: python


【解决方案1】:

给定:

lst = [ "A", "B" ,"C","T"]

word = "CAT"

有很多方法可以做到这一点。

比较长度

print(len([i for i in word if word.count(i.upper()) <= lst.count(i.upper())]) == len(word))

所有方法

print(all([word.count(i.upper()) <= lst.count(i.upper()) for i in word]))

all 方法的扩展变体

word = word.upper()

print(all([word.count(i) <= lst.count(i) for i in word]))

【讨论】:

  • 字母列表随机生成10个字母。有时你会有多个字母所以 2 Fs 所以你可以创建一个包含 2 Fs 的单词,但是我如何检测每次列表生成时有多少重复的字母?
  • detect how many duplicate letters 非常模糊。这可能意味着重复的数量、包含重复的项目的数量或其他东西......
  • 抱歉,我没有意识到我在测试后没有更新操作符!让我用工作代码更新
  • 希望这应该是您的解决方案
  • 是的,谢谢!
【解决方案2】:

嗯,你可以使用len(word) 来获取单词的长度,对吧?

另外,set 是唯一值的容器。也就是说,你不能在一个集合中多次拥有相同的值。

您还可以将字符串传递到集合中,以使用字符串中的唯一字符填充集合。

最后,您可以通过len(set) 获取集合中唯一项目的数量。

所以,如果你把它们加在一起:

>>> word = “CATT”
>>> len(word)
4
>>> my_set = set(word)
>>> my_set  # Sets aren’t ordered, so it will probably come back in a different order
{‘T’, ‘A’, ‘C’}
>>> len(my_set)
3

嗯,3 != 4,对吧?看起来在获取“CATT”中的唯一值时,您必须丢弃其中一个,因为它是重复的。嘿,方便!所以简短的版本是:

word = “CATT”
if len(word) != len(set(word)):
    print(word, “has duplicate letters”)

哦,因为这可能会回答您的下一个问题:

如果您有两个集合 AB,当且仅当 A 中的每个项目也在 B 中时,A &lt;= B 为 True。例如:

>>> {1,2,3} <= {1,2,3,4}
True
>>> {1,2,3,4} <= {1,2,3}
False

嗯,这很方便,因为当且仅当单词中的每个字母也在字母列表中时,您可以用字母列表拼写单词,对吗?这看起来很像A &lt;= B 的定义!事实上,它是:

>>> letters = [‘a’, ‘b’, ‘c’, ‘t’]
>>> set('cat') <= set(letters)
True
>>> set('dog') <= set(letters)
False

方便,不是吗?

【讨论】:

    【解决方案3】:

    最简单的方法是使用any() 函数:

    any([user_input.count(letter) > 1 for letter in your_list])
    

    如果your_list 中的任何字母重复,则返回True,否则False

    【讨论】:

      猜你喜欢
      • 2016-07-04
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 2012-02-26
      相关资源
      最近更新 更多