在Python中创建测验 - 错误

时间:2015-10-19 18:22:42

标签: python

作为Python的新手,我在尝试开发测验程序时遇到了错误。我发现当程序生成两个随机数加在一起,并且用户试图输入正确的问题值时,程序会跳起来并仍然打印出来自用户的输入无效。

def quiz():
    print("The quiz will begin shortly")
    print(numberone)
    print("+")
    print(numbertwo)
    answerone=input("Answer:")
    if answerone==(numberone + numbertwo):
        print("Correct")
        score+1
        print("You're score is", score, ".")
    else:
        print("Incorrect")
        print(numberone+numbertwo)

我不明白我做错了什么,所以任何帮助都会非常感激。

(注意:'numberone'和numbertwo'都是定义的)

4 个答案:

答案 0 :(得分:0)

您需要在函数numberone中定义numbertwoquiz

def quiz():
    numberone = 6
    numbertwo = 3   # etc.

或者,将它们作为参数传递:

def quiz(numberone, numbertwo):
    print numberone   #etc

答案 1 :(得分:0)

您的问题是您的用户输入的是字符串。在比较之前,您需要将其转换为整数。

int(answerone)

所以试试这个:

def quiz():
    print("The quiz will begin shortly")
    print(numberone)
    print("+")
    print(numbertwo)
    answerone=input("Answer:")
    if int(answerone)==(numberone + numbertwo):
        print("Correct")
        score += 1
        print("You're score is {}.".format(str(score)))
    else:
        print("Incorrect")
        print(numberone+numbertwo)

答案 2 :(得分:0)

您在增加

时忘记分配分数

是:

    print("Correct")
    score+1
    print("You're score is", score, ".")

应该是:

    print("Correct")
    score += 1
    print("You're score is", score, ".")

答案 3 :(得分:0)

您的代码中存在许多问题。让我们一个接一个地看。

  • 你的缩进是错的。你应该先解决它。
  • numberonenumbertwoscore无法在此范围内访问。一个好主意是将它们作为函数参数传递。

像这样:

def quiz(numberone,numbertwo,score):
  • 由于answerone应为整数,请将输入转换为int

像这样:

answerone=int(input("Answer:")) #if using python3     
  • 您正在使用1添加score,但不会将其重新分配。

使用score=score+1score+=1而非score+1

  • 从函数返回score以使用score的更新值进行下一次调用。

所以,工作代码可以是这样的:

def quiz(numberone,numbertwo,score):
    print("The quiz will begin shortly")
    print(numberone)
    print("+")
    print(numbertwo)
    answerone=int(input("Answer:"))
    if answerone==(numberone + numbertwo):
        print("Correct")
        score += 1
        print("You're score is", score, ".")
    else:
        print("Incorrect")
        print(numberone+numbertwo)
    return score

你可以像下面这样打电话:

score=0
while(score<10):
    score=quiz(someRandNumber,anotherRandNumber,score)
else:
    print "Your score is 10"