Я пытаюсь создать процент, основанный на двух факторах (для программы подсчета монет), где я должен создать точность того, насколько хорошо люди считают монеты.Это рассчитывается путем получения общего количества сумок монет, которые они подсчитали, и общего количества сумок, которые они посчитали ПРАВИЛЬНО, в процентах от их общего количества.
В моей программе, если добровольцы введут правильный вес мешка с монетами для этой конкретной монеты, +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 находится в пене.