我仍然忙于我的多项选择测验计划。我快到了。只有几个错误仍然可以解决。该程序会记录您正确,错误和当前百分比的数字问题。但是,我的程序不会运行,因为最初,用户没有回答任何问题。因此,他们有NULL%正确。我的代码如下:
import random
import sys
import os
import math
right_answer_total = float(0)
wrong_answer_total = float(0)
answer_total = float(right_answer_total + wrong_answer_total)
percentage = 100 * (float(right_answer_total) / float(answer_total))
word_drills = {'class': 'Tell Python to make a new kind of thing.',
'object': 'Two meanings: the most basic kind of thing, and any instance of some thing.',
'instance': 'What you get when you tell Python to create a class.',
'def': 'How you define a function inside a class.',
'self': 'Inside the functions in a class, self is a variable for the instance/object being accessed.',
'inheritance': 'The concept that one class can inherit traits from another class, much like you and your parents.',
'composition': 'The concept that a class can be composed of other classes as parts, much like how a car has wheels.',
'attribute': 'A property classes have that are from composition and are usually variables.',
'is-a': 'A phrase to say that something inherits from another, as in a Salmon *** Fish',
'has-a': 'A phrase to say that something is composed of other things or has a trait, as in a Salmon *** mouth.'}
def start():
# For loop that creates a list named keys. It grabs 3 random keys from the dictionary word_drills
keys = [x for x in random.sample(word_drills, 3)]
# User is presented with a question. A value from the previous randomly selected keys is selected as the 'question'
correctanswer = word_drills[random.choice(keys)]
print "Question: ", correctanswer
# Set the variables key1, key2, & key3 to the 3 keys in the list 'keys'
key1, key2, key3 = keys[0], keys[1], keys[2]
# User is presented with 3 choices.
print "\n\n(a)%s (b)%s (c)%s" % (key1, key2, key3)
a, b, c = word_drills[key1], word_drills[key2], word_drills[key3]
selection = raw_input("> ")
print selection
if selection == "a":
if a == correctanswer:
print "That's correct!"
answered_correctly()
else:
print "I'm sorry, that is incorrect..."
not_answered_correctly()
elif selection == "b":
if b == correctanswer:
print "That's correct!"
answered_correctly()
else:
print "I'm sorry, that is incorrect..."
not_answered_correctly()
elif selection == "c":
if c == correctanswer:
print "That's correct!"
answered_correctly()
else:
print "I'm sorry, that is incorrect..."
not_answered_correctly()
else:
print "That is not a valid selection."
exit(0)
def answered_correctly():
global right_answer_total
right_answer_total += 1
stat_tracking()
def not_answered_correctly():
global wrong_answer_total
wrong_answer_total += 1
stat_tracking()
def stat_tracking():
os.system('cls' if os.name=='nt' else 'clear')
print "-" * 37
print "| Stat Tracking |"
print "-" * 37
print "| Correct | Incorrect | Percentage |"
print "-" * 37
print "| %d | %d | %d %% |" % (right_answer_total, wrong_answer_total, percentage)
print "-" * 37
print "\n\n\n"
start()
stat_tracking()
我不确定是否有针对此的解决方法,或者我可能会解决这个问题。任何和所有的帮助将不胜感激。感谢。
答案 0 :(得分:4)
没有回答任何问题时,没有任何意义可以打印出来。添加除数为0的特殊检查,并打印100%,或只打印N / A或其他东西。
此外,以下是您的代码的一些提示。
right_answer_total = float(0)
wrong_answer_total = float(0)
answer_total = float(right_answer_total + wrong_answer_total)
percentage = 100 * (float(right_answer_total) / float(answer_total))
如果您将from __future__ import division
放在代码的开头,则所有float
都是不必要的。
print "| %d | %d | %d %% |" % (right_answer_total, wrong_answer_total, percentage)
不推荐使用字符串插值运算符。如果不需要Python 2.5兼容性,请使用str.format
。
print "| {} | {} | {} % |".format(right_answer_total, wrong_answer_total, percentage)
答案 1 :(得分:2)
自启动时,用户尚未回答任何问题,您最初可以将其设置为0
。
如果稍后出现问题,您可以事先检查零分割
if answer_total != 0:
percentage = 100 * (float(right_answer_total) / float(answer_total))
else:
percentage = 0.0
您也可以考虑使用浮点文字(如0.0
)来初始化变量,而不是使用float
函数来转换整数。
修复了您可能找到的错误之后,最好使用您的代码转到http://codereview.stackexchange.com以获得一些通用编码建议。
答案 2 :(得分:0)
将第9行更改为:
percentage = 100 * (float(right_answer_total) / float(answer_total)) if (right_answer_total>0 and answer_total >0) else 0