【发布时间】:2019-02-18 16:33:53
【问题描述】:
我正在尝试根据两个因素(对于硬币计数程序)创建一个百分比,我必须在其中创建人们计数硬币的准确度。这是通过获取他们计算的硬币袋总数以及他们正确计算的袋子总数占总数的百分比来计算的。
在我的程序中,如果志愿者为该特定硬币输入正确的硬币袋重量,+1 将添加到 bags_correct 列和 total_bags 列。如果权重错误,+1 将添加到 bags_incorrect 列以及 total_bags 列。
然后我会使用这个c.execute("UPDATE volunteers SET bags_correct = bags_correct + 1, total_bags = total_bags + 1, total_bags_value = total_bags_value + (?), percentage = (bags_correct / total_bags)*100 WHERE name = (?)", (100, name)) 来尝试计算一个百分比(准确度),但我得到了奇怪的值,例如“0”或“400”,它需要是一个百分比,即 0% 到 100%,但我这样做有困难。
我尝试将real 更改为integer,但发生了同样的事情
我算错了吗?
conn = sqlite3.connect("volunteers.db")
c = conn.cursor()
c.execute("""CREATE TABLE volunteers (
name text,
bags_correct integer,
bags_incorrect integer,
total_bags integer,
total_bags_value integer,
percentage real
)""")
####This is when NEW volunteers add their first bag of coins when they counted it CORRECTLY without weight error.
c.execute("INSERT INTO volunteers VALUES (?, ?, ?, ?, ?, ?)", (name, 1, 0,
1, 100, 100))
conn.commit()
HOWEVER
####This is when NEW volunteers add their first bag of coins BUT it is INCORRECT
c.execute("INSERT INTO volunteers VALUES (?, ?, ?, ?, ?, ?)", (name, 0, 1,
1, 100, 0))
conn.commit()
####This is when NON-NEW volunteers add their bag of coins if it's CORRECT, hence the UPDATE.
c.execute("UPDATE volunteers SET bags_correct = bags_correct + 1, total_bags = total_bags + 1, total_bags_value = total_bags_value + (?), percentage = (bags_correct / total_bags)*100 WHERE name = (?)", (100, name))
conn.commit()
####This is when NON-NEW volunteers add their bag of coins but it's INCORRECT.
c.execute("UPDATE volunteers SET bags_incorrect = bags_incorrect + 1, total_bags = total_bags + 1, total_bags_value = total_bags_value + (?), percentage = (bags_correct / total_bags)*100 WHERE name = (?)", (100, name))
conn.commit()
注意:total_bag_value 以便士为单位。
【问题讨论】:
标签: python math sqlite sql-update percentage