array([[[ 0.62507486, 0.3246161 , 0.43934602],
[ 0.14476213, 0.76139957, 0.92813474],
[ 0.26556504, 0.02475475, 0.90740073],
[ 0.08017973, 0.97526789, 0.2213122 ]],
[[ 0.70042586, 0.8122381 , 0.79289031],
[ 0.0369414 , 0.10780825, 0.77501732],
[ 0.10386232, 0.86237574, 0.5829311 ],
[ 0.1888348 , 0.85105735, 0.31599012]],
[[ 0.26350111, 0.8787083 , 0.12869285],
[ 0.25927794, 0.25701383, 0.81212741],
[ 0.06661031, 0.53449911, 0.50212061],
[ 0.40009728, 0.78002244, 0.81524432]],
[[ 0.49921468, 0.82028496, 0.51261139],
[ 0.62790054, 0.64566481, 0.02624587],
[ 0.39364958, 0.99537313, 0.33225098],
[ 0.88214922, 0.20252077, 0.78350848]],
[[ 0.29032609, 0.95975012, 0.06733917],
[ 0.24497923, 0.51818371, 0.93520784],
[ 0.80267638, 0.88271469, 0.30779642],
[ 0.57030594, 0.34175804, 0.52563131]],
[[ 0.61039209, 0.57186425, 0.76554799],
[ 0.55681604, 0.33107477, 0.05680386],
[ 0.15465826, 0.13452645, 0.09498007],
[ 0.29682869, 0.93196124, 0.94435322]],
[[ 0.23904459, 0.94893754, 0.97033942],
[ 0.89159942, 0.85306913, 0.02144577],
[ 0.57696968, 0.82578647, 0.33358794],
[ 0.81979036, 0.73351973, 0.027876 ]],
[[ 0.6568135 , 0.25458351, 0.10369358],
[ 0.06151289, 0.00939822, 0.00798484],
[ 0.92518032, 0.19057493, 0.84838325],
[ 0.78189474, 0.15273546, 0.34607282]],
[[ 0.46961641, 0.19778872, 0.1498462 ],
[ 0.55704814, 0.96889585, 0.08894933],
[ 0.48003736, 0.59383452, 0.42212519],
[ 0.78752649, 0.07204869, 0.4215464 ]],
[[ 0.6454156 , 0.84189773, 0.10041234],
[ 0.89345407, 0.60821944, 0.56667495],
[ 0.62806529, 0.67642623, 0.4951494 ],
[ 0.85371262, 0.13159418, 0.3402876 ]],
[[ 0.39828625, 0.50659049, 0.34835485],
[ 0.06839356, 0.74652916, 0.5722388 ],
[ 0.20762053, 0.0692997 , 0.02790474],
[ 0.84786427, 0.98461425, 0.19105092]],
[[ 0.36976317, 0.44268745, 0.23061621],
[ 0.47827819, 0.43044546, 0.90150601],
[ 0.2307732 , 0.61590552, 0.82066673],
[ 0.49611789, 0.4480612 , 0.46685895]],
[[ 0.40907925, 0.15996945, 0.05480348],
[ 0.70230347, 0.00926704, 0.97775948],
[ 0.19834276, 0.20127937, 0.44351548],
[ 0.48512974, 0.07319999, 0.5580616 ]],
[[ 0.35749629, 0.88443983, 0.55465496],
[ 0.61600298, 0.08260803, 0.4010818 ],
[ 0.40910226, 0.31984288, 0.50188118],
[ 0.34836289, 0.14394118, 0.06841569]]], dtype=float32)
这是我们需要实现的功能。 seq和item来自这些测试函数。
def search_sequence( seq, item ):
""" Search a sequence for the given item. PROVIDE AN IMPLEMENTATION (TASK
#2). This function should use **car** and **cdr**.
:param seq: the sequence to be searched.
:param item: the item to be searched
:type seq: tuple
:type item: str
:returns: True if the item is contained in the sequence, False
otherwise.
:rtype: bool
"""
我们在顶部有多个起点。我们获得了汽车(lst)功能:
def test_search_sequence_0(self):
""" Search empty tuple """
sandwich = ()
self.assertEqual( search_sequence( sandwich, 'ham' ), False)
def test_search_sequence_size_1_1(self):
""" Search single-element tuple: successful search"""
sandwich = ('mustard',)
self.assertEqual( search_sequence( sandwich, 'mustard' ), True)
def test_search_sequence_size_1_2(self):
""" Search single-element tuple: unsuccessful search"""
sandwich = ('mustard',)
self.assertEqual( search_sequence( sandwich, 'ham' ), False)
def test_search_sequence_size_7_1(self):
""" Search 7-element tuple: successful search"""
sandwich = ("jelly","butter", "mustard", "bread", "pickles", "jam",
"cheese")
self.assertEqual( search_sequence( sandwich, 'pickles'), True)
def test_search_sequence_size_7_2(self):
""" Search 7-element tuple: unsuccessful search"""
sandwich = ("jelly","butter", "mustard", "bread", "pickles", "jam",
"cheese")
self.assertEqual( search_sequence( sandwich, 'pear'), False)
我们还获得了cdr(lst)函数:
def car(lst):
""" The first of the 3 primitive functions: return the first element of a sequence.
.. note:: The Law of Car: The `car` function is only defined for non-empty lists.
:param lst: a non-empty sequence; passing an empty sequence will raise an exception.
:type lst: tuple
:returns: an object
:rtype: object
"""
if type(lst) is not tuple:
raise WrongTypeArgumentException("Argument is not a list.")
if len(lst)==0:
raise WrongTypeArgumentException("List has no element")
if len(lst)>=1:
return lst[0]
最后,我们得到了cons函数:
def cdr( lst ):
""" The second of the 3 primitive functions: return a sequence, minus the first element.
.. note:: The Law of Cdr: The `cdr` function is only defined for non-empty lists; the `cdr` of any non-empty list is always another list.
:param lst: a non-empty sequence; passing an empty sequence will raise an exception.
:type lst: tuple
:returns: a tuple; if the sequence has only one element, return an empty sequence.
:rtype: tuple
"""
if type(lst) is not tuple:
raise WrongTypeArgumentException("Argument is not a list.")
if len(lst)==0:
raise WrongTypeArgumentException("Cannot cdr on an empty list.")
if len(lst)==1:
return ()
return lst[1:]
我试图修复实现代码,但是,出于某种原因,我尝试的代码会返回此错误:
def cons( a, lst):
""" The third of the 3 primitive functions: return the sequence created by adding element `a` to the sequence `lst`.
.. note:: The Law of Cons: the primitive `cons` takes two arguments; the second argument to `cons` must be a list; the result is a list.
:param a: an object
:param lst: a tuple
:type a: object
:type lst: tuple
:returns: the tuple resulting from adding parameter `a` in front of sequence `lst`.
:rtype: tuple
"""
if type(lst) is not tuple:
raise WrongTypeArgumentException("Argument is not a list.")
return (a,) + lst
这是我的代码:
Traceback (most recent call last):
File "C:\Users\MacKenzy\Desktop\pylisp_skeleton.py", line 223, in test_search_sequence_size_1_2
self.assertEqual( search_sequence( sandwich, 'ham' ), False)
File "C:\Users\MacKenzy\Desktop\pylisp_skeleton.py", line 133, in search_sequence
return search_sequence(cdr(seq, item))
TypeError: cdr() takes 1 positional argument but 2 were given
你们能告诉我自己错了什么吗?或者如何解决?非常感谢你!!!
答案 0 :(得分:0)
您的cdr()
只接受一个参数,列表:
def cdr( lst ):
""" The second of the 3 primitive functions: return a sequence, minus the first element.
.. note:: The Law of Cdr: The `cdr` function is only defined for non-empty lists; the `cdr` of any non-empty list is always another list.
:param lst: a non-empty sequence; passing an empty sequence will raise an exception.
:type lst: tuple
:returns: a tuple; if the sequence has only one element, return an empty sequence.
:rtype: tuple
"""
但是你传递了两个论点:
return search_sequence(cdr(seq, item))
您可能打算将item
作为参数传递给search_sequence()
而不是cdr()
:
return search_sequence(cdr(seq), item)