Matthew Polack wrote: > Hi All, > > Thanks to your help I've nearly got my demo 'Times Tables' program fully > working. > > The last remaining issue is the program does not calculate the percentage > right when you make mistakes...it just keeps giving a result of 100%. > > I've looked and head scratched...and am not sure. > > Can anyone figure out what is wrong with this code?
You increment the score no matter whether the answer is correct or not. > if response == answer: > score = int(score + 1) > else : > score= int(score + 1) Random remarks - Your code suffers from "over-globalisation". You only need to declare a variable global when you want to change it from within a function. Example: x = 0 def show_x(): # no global necessary print("x =", x) def inc_x(): global x x += 1 - You create a new Label in every call of viewXXX(). For long-running applications that will consume a lot of memory. You should instead create the label once and then update it percentViewLab = Label(...) percentViewLab.grid(...) def viewPercent(): percentViewLab["text"] = percentScore - You convert integers to integers. > score = int(score + 1) should better be written score = score + 1 or score += 1 - I rarely say that, but you have too many functions -- or rather you have written them in such a way that you need to call them in a special order. Personally I would omit the percentCheck function and the percentScore variable and rewrite viewPercent as def viewPercent(): percentViewLab["text"] = score/total*100 or if you want to keep the function def get_percent_score(): return score/total*100 def viewPercent(): percentViewLab["text"] = get_percent_score() With both approaches viewPercent() can never show an out-of-date value. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor