Python类/始终返回0

2024-04-26 08:09:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个名为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`

Tags: nameinselfadd列表returndefitems
1条回答
网友
1楼 · 发布于 2024-04-26 08:09:48

我觉得很简单。你想用一个整数除以另一个整数,这就是问题所在。在这种情况下,Python执行整数除法,并且您试图将较小的int除以较大的int,当然您几乎总是应该得到0(int相等时除外)

float替换ints,如下所示

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

这个问题应该得到解决

相关问题 更多 >