我的函数被设置为返回一个字典。当被调用时,它返回字典。但是,如果我从另一个函数中调用该函数,它返回一个列表。
`
def draw(self, num: int) -> dict:
drawn_dict = {}
if num > len(self.contents):
return self.contents
else:
while num >= 1:
drawn_num = self.contents.pop(random.randint(0, len(self.contents) - 1))
drawn_dict.setdefault(drawn_num, 0)
drawn_dict[drawn_num] +=1
num -= 1
return drawn_dict
def experiment(hat, expected_balls, num_balls_drawn, num_experiments):
matches = 0
full_match = 0
count = 0
print(hat.draw(num_balls_drawn))
print(hat.draw(5))
`
当我调用draw函数并打印结果时,我得到的是预期的字典,但是当draw函数被调用并在experiment函数中打印结果时,我得到的是一个列表。
2条答案
按热度按时间jpfvwuh41#
什么是
self.contents
的类型?我想它是list
,这是对你问题的回答:-)cdmah0mi2#
我意识到了这个问题。我在实验函数之前调用了draw函数,通过调用draw,我编辑了self.contents列表,这影响了它的长度,从而触发了“if num〉len(self.contents)"。所以当我在实际使用它之前没有修改列表时,函数可以按预期工作!