Python类/总是返回0

时间:2017-04-08 07:56:27

标签: python python-2.7 class division operands

我创建了一个名为bootcamp的类,允许用户添加已完成的任务,查看他们应该执行的所有任务,并检查他们未完成的任务。问题是我创建了一个算法来检查百分比的进度,其中我将完成列表的长度除以总任务列表的长度。我最初认为它不会记录更改,因为它总是返回零但是在使用其他操作数(例如+和*)进行测试之后它运行良好。为什么除法总是返回0?共享代码有助于理解我的问题:

class Bootcamp(object):
    tasks = {1: "TDD", 2: "OOP", 3: "Programming Logic", 4: "Version 
          Control", 5: "Agile Methodology",
                       6: "Growth Mindset", 7: "Asking Questions", 8: 
                  "Motivation and Commitment", 9: "Speaking"}
    def __init__(self, name, tasks=tasks):
        self.name = name
        self.tasks = tasks
        self.completed = []
        self.incompleted = tasks.values()

    def add_completed_items(self, i):
        if i in self.tasks.keys():
            self.completed.append(self.tasks[i])
            self.incompleted.remove(self.tasks[i])
            return "tasks added to complete"
        else:
            return "not in the tasks"


nick = Bootcamp("nick")
total_work = int(len(nick.tasks))
print nick.add_completed_items(1)
print nick.add_completed_items(2)
print nick.add_completed_items(3)
comleted_work = int(len(nick.completed))
progress = (comleted_work  / total_work) * 100
print nick.incompleted` 
print progress`

1 个答案:

答案 0 :(得分:1)

我认为这很简单。你试图将int除以另一个int,这就是麻烦。在这种情况下,Python会执行整数除法,并且您试图将较小的int除以较大的int,当然,您应该几乎总是得到0(除非int值相等)

int替换为float s,就像这样

total_work = float(len(nick.tasks))
...
comleted_work = float(len(nick.completed))

问题应该解决