关于在Python中创建测验:在Python中创建测验 – 错误

Creating a Quiz in Python - error

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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'都是定义的)


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

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

像这样:

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

像这样:

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

使用score=score+1score+=1而不是score+1

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

您可以像下面这样调用它:

1
2
3
4
5
score=0
while(score<10):
    score=quiz(someRandNumber,anotherRandNumber,score)
else:
    print"Your score is 10"

你忘了在增加时分配分数

是:

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

应该:

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


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

1
int(answerone)

试试这个:

1
2
3
4
5
6
7
8
9
10
11
12
13
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)


您需要在函数quiz中定义numberonenumbertwo

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

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

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