比较列表中的for或while循环

时间:2014-02-28 02:07:16

标签: python for-loop while-loop

我们想要编写一个能识别数字列表的函数 可以解释为“Yahtzee”列表中的所有五个数字必须 是相同的。编写一个名为isYahtzee(aList)的函数, 作为参数,列出5个数字并返回Boolean。如果全部五个 数字是相同的,它应该返回True,否则,它应该返回 返回False。例如,isYahtzee([1,2,3,4,5])应该返回 FalseisYahtzee([1,1,1,1,1])应返回True。你必须使用 检查时此函数中的“for loop”“while loop” 列表中的值。

这是我到目前为止所做的,我一直收到错误!

def isYahtzee(aList):
    for i in Range(0,5):
        if i != i+1:
            return false
        else:
            return true

isYahtzee(1,2,3,4,5)

Traceback (most recent call last):
  File "<string>", line 1, in <fragment>
builtins.TypeError: isYahtzee() takes 1 positional argument but 5 were given

4 个答案:

答案 0 :(得分:2)

我认为这更好:

def isYahtzee(aList):
    return len(set(aList)) == 1

>>> isYahtzee([1,1,1,1,1])
True
>>> isYahtzee([1,2,3,4,5])
False

答案 1 :(得分:1)

def isYahtzee(aList):
    for i in range(4):
        if aList[i] != aList[i+1]:
            return False
    return True

isYahtzee([1,1,1,1,1])
# True

isYahtzee([1,2,3,4,5])
# False

答案 2 :(得分:0)

以下是使用while的版本,我认为for版本更易于实施。

def isYahtzee(aList):
    i = 0
    while i < len(aList) - 1:
        if aList[i] != aList[i + 1]:
            return False

        i += 1

    return True

这是输出:

>>> isYahtzee([1, 2, 3, 4, 5])
False
>>> isYahtzee([1, 1, 1, 1, 1])
True

答案 3 :(得分:0)

您的代码存在许多问题:

  1. isYahtzee期待一个单一的争论(一个列表),但你传递的是五个。这就是提升TypeError

  2. 的原因
  3. Range应为小写。

  4. truefalse应该大写。

  5. i 永远不会等于i+1。因此,if语句的条件将始终评估为True

  6. 您的功能永远不会检查甚至使用aList中的项目。


  7. 以下是适用的isYahtzee版本:

    # Declare the function isYahtzee
    def isYahtzee(aList):
        # Iterate over the items in aList
        for item in aList:
            # See if the current item is different from the first
            if item != aList[0]:
                # If so, return False because not all items in aList are duplicates
                return False
        # If we get here, return True because all items in aList are duplicates
        return True
    

    以下是演示:

    >>> def isYahtzee(aList):
    ...     for item in aList:
    ...         if item != aList[0]:
    ...             return False
    ...     return True
    ...
    >>> isYahtzee([1,1,1,1,1])
    True
    >>> isYahtzee([1,2,3,4,5])
    False
    >>>