我正在实施以下算法:
创建一个执行以下操作的函数manipulate_data
接受指定要使用的数据结构的字符串作为第一个参数list
,set
或dictionary
接受基于指定的数据结构(例如,对于列表数据结构为[1,4,9,16,25])要操纵的数据作为第二参数
基于第一个参数
返回列表的反向或将项"ANDELA"
,"TIA"
和"AFRICA"
添加到集合中并返回结果集
返回字典的键。
我的代码如下所示:
manipulate_data(data_type, data):
data_type = 'list'
data_type = 'set'
data_type = 'dictionary'
if data_type == 'list':
data = [1, 4, 9, 16, 25]
new_data = data[::-1]
return new_data
elif data_type == 'set':
data = set()
new_set = data.add("ANDELLA", "TIA", "AFRICA")
return new_set
elif data_type == 'dictionary':
data = {"Name": "John", "Age": 26,"School": "Holy"}
new_dict = data.keys()
return new_dict
else:
raise ValueError
测试课程如下:
import unittest
class DataStructureTest(unittest.TestCase):
def setUp(self):
self.list_data = [1,2,3,4,5]
self.set_data = {"a", "b", "c", "d", "e"}
self.dictionary_data = {"apples": 23, "oranges": 15, "mangoes": 3, "grapes": 45}
def test_manipulate_list(self):
result = manipulate_data("list", self.list_data)
self.assertEqual(result, [5,4,3,2,1], msg = "List not manipulated correctly")
def test_manipulate_set(self):
result = manipulate_data("set", self.set_data)
self.assertEqual(result, {"a", "b", "c", "d", "e", "ANDELA", "TIA", "AFRICA"}, msg = "Set not manipulated correctly")
def test_manipulate_dictionary(self):
result = manipulate_data("dictionary", self.dictionary_data)
self.assertEqual(result, ["grapes", "mangoes", "apples", "oranges"], msg = "Dictionary not manipulated correctly")
我在执行代码时遇到错误。
答案 0 :(得分:1)
你的功能毫无意义,你的传递" data_type"然后在顶部设置三次。这将强制解释器使用最后一个值集,在您的情况下,是"字典":
尝试按如下方式编写:
def manipulate_data(data):
if type(data) is list:
return [1, 4, 9, 16, 25]
elif type(data) is set:
return set(["ANDELLA", "TIA", "AFRICA"])
elif type(data) is dict:
data = {"Name": "John", "Age": 26, "School": "Holy"}
return data.keys()
else:
raise ValueError
看起来好像你已经知道了这些类型,因此将它作为字符串传递是没有意义的,因为它可以使用"类型"来检查。
您的语法错误是因为您忘记包含" def"在声明函数名之前。