class Histogram:
def __init__(self, range , max_mark):
self.__range = range
self.__max_mark = max_mark
self.__occurrence_list = [0] * self.__range
def get_range(self):
return self.__range
def set_range(self, value):
self.__range = value
def get_max_mark(self):
return self.__max_mark
def set_max_mark(self, value):
self.__max_mark = value
def get_occurrence_list(self):
return self.__occurrence_list
def append_marks(self, value):
if value > self.__max_mark:
return 'value should be bigger than max mark'
else:
self.__occurrence_list[value] += 1
#From here is the part where I find a problem
def draw(self):
print(self.__occurrence_list)
for x in len(self.__occurrence_list):
print(x,':','*'*self.__occurence_list[x])
如果用这段代码检查答案 a1 =直方图(10,9) a1.append_marks(0) a1.append_marks(10) a1.append_marks(8) a1.append_marks(2) a1.append_marks(8) a1.draw()
它说
for x in len(self.__occurrence_list):
TypeError: 'int' object is not iterable
但我看到的是自我的长度.__ occurrence _list是完全整数。 我的代码有什么问题?
答案 0 :(得分:0)
你的问题在这里:
for x in len(self.__occurrence_list)
列表的 len
将返回元素的数量,但这不是你可以循环的东西,这是错误消息告诉你的。显然你的意图是遍历列表的索引:
for x in range(0, len(self.__occurrence_list)):
这将为您提供可以循环的n
元素列表。