我们想要编写一个能识别数字列表的函数
可以解释为“Yahtzee”
列表中的所有五个数字必须
是相同的。编写一个名为isYahtzee(aList)
的函数,
作为参数,列出5个数字并返回Boolean
。如果全部五个
数字是相同的,它应该返回True
,否则,它应该返回
返回False
。例如,isYahtzee([1,2,3,4,5])
应该返回
False
,isYahtzee([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
答案 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)
您的代码存在许多问题:
isYahtzee
期待一个单一的争论(一个列表),但你传递的是五个。这就是提升TypeError
。
Range
应为小写。
true
和false
应该大写。
i
永远不会等于i+1
。因此,if语句的条件将始终评估为True
。
您的功能永远不会检查甚至使用aList
中的项目。
以下是适用的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
>>>