统计每个元素出现在列表中的次数。然后从这个
中写出一个条件语句来写一个函数,该函数将一个名为aList的列表作为参数。如果列表中包含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。
在循环内部有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
但要做到这一点最简单的方法是简单地对列表进行排序,并检查它是否是你在找什么:
def isItAStraight(aList):
return sorted(aList) == list(range(1, 7))
你需要注意什么里面的名单。什么你写的是基本相同下面的伪代码:
let count = 0
for every unique element in aList:
Add 1 to count
if count is now 1, return true.
这将总是返回true,如果有至少一个元素aList
,因为你加1计数,然后立即返回。
几种方法可以考虑:
- 创建一个名为
flags
全零6元素列表。遍历aList
并将flags
中的对应元素设置为1
。如果flags
是全部,那么你返回true。 - 对列表进行排序,然后检查前六个数字是否为
1, 2, 3, 4, 5, 6
。
我忘了提列表中的内容。我已经改变了我的帖子,上面反映了它,但列表仅仅是一个从1到6的随机生成列表。 – Wiggs
有人可以告诉我这个答案有什么问题,使它值得赞赏吗? – TigerhawkT3
其实这个答案帮我解决了我的代码有问题。我不知道为什么它被拒绝投票。我没有意识到我只是检查一个元素。 (仍然是python的新手)因此,直到你说了些什么之后,我才发现它有什么问题。 – Wiggs