我创建了一个名为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`
我觉得很简单。你想用一个整数除以另一个整数,这就是问题所在。在这种情况下,Python执行整数除法,并且您试图将较小的int除以较大的int,当然您几乎总是应该得到0(int相等时除外)
用
float
替换int
s,如下所示这个问题应该得到解决
相关问题 更多 >
编程相关推荐