int的含义是不可迭代的?

时间:2018-01-17 06:33:38

标签: python class printing integer typeerror

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是完全整数。 我的代码有什么问题?

1 个答案:

答案 0 :(得分:0)

你的问题在这里:

for x in len(self.__occurrence_list)
列表的

len将返回元素的数量,但这不是你可以循环的东西,这是错误消息告诉你的。显然你的意图是遍历列表的索引:

for x in range(0, len(self.__occurrence_list)):

这将为您提供可以循环的n元素列表。