计算每个元素在列表中出现的次数。然后从

2024-04-27 03:29:53 发布

您现在位置:Python中文网/ 问答频道 /正文

写一个函数,它接受一个名为list的列表作为参数。如果列表只包含1到6之间的每个整数一次,则返回布尔值True,否则返回False。在

这是家庭作业,我以为我做得对,但现在它告诉我它不对。这是我的密码。在

def isItAStraight(aList):
    count = 0
    for i in set(aList):
        count += 1
        return aList.count(i) == 1

因为某些原因,即使一个数字出现了不止一次,它仍然是真的,我不明白为什么它不会给我假,除非第一个或最后一个数字被改变。在

每个数字只能出现一次,否则为假。在

所以就拿[1,2,3,4,5,6] 是真的。 但是[1,2,2,3,4,5] 会是假的。在

我也不想把收集的东西分开来做

列表从1到6随机生成。在


Tags: 函数falsetrue密码列表for参数def
2条回答

如果循环中有一个return,则只检查一个值。你需要检查每个值。另外,不要循环遍历列表中的项,而应该遍历实际查找的项。这也有助于确保列表中的项目数量正确。在

def isItAStraight(aList):
    if len(aList) != 6:
        return False
    for i in range(1, 7):
        if aList.count(i) != 1:
            return False
    return True

但最简单的方法是简单地对列表进行排序并检查它是否是您要查找的内容:

^{pr2}$

你需要小心列表中的内容。您所写的基本上与下面的伪代码相同:

let count = 0
for every unique element in aList:
   Add 1 to count
   if count is now 1, return true.

如果aList中至少有一个元素,则这将始终返回true,因为您要将1添加到count,然后立即返回。在

考虑以下几种方法:

  1. 创建一个名为flags的包含所有零的6个元素的列表。迭代aList,并将flags中的相应元素设置为1。如果flags都是1,则返回true。在
  2. 对列表进行排序,然后检查前六个数字是否为1, 2, 3, 4, 5, 6。在

相关问题 更多 >