Python类/总是返回0
问题描述:
我创建了一个名为bootcamp的类,它允许用户添加完成的任务,查看他们应该执行的所有任务,并检查未完成的任务。问题是我创建了一个算法来检查进度的百分比,我把完成列表的长度分配到总任务列表的长度上。我最初认为它没有记录这些变化,因为它总是返回零,但在用其他操作数(例如+和*)测试之后,它运行良好。为什么师总是返回0?共享代码将有助于了解我的问题:Python类/总是返回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`
答
我认为这很简单。你试图用另一个整数除int,那就是麻烦。 Python的执行整数除法在这种情况下,你试图通过一个较大的分化较小INT,你当然应该得到0几乎总是(除非该整数相等)
与float
小号更换int
S,像这
total_work = float(len(nick.tasks))
...
comleted_work = float(len(nick.completed))
,问题应该得到解决
它的工作.....它给了我很多头痛的,因为我认为我的方法是行不通的。现在我可以在课堂上实现它 – Nix
稍微好一点的解决方案:通过将'from __future__ import division'添加到文件顶部,移至Py3样式分区。然后'/'会产生浮点结果。如果你想划分楼层,你可以使用''''明确选择。 – ShadowRanger