0

我正在做一项任务,我必须进行测验。到目前为止,这是我的代码。

print("Hello and welcome to Shahaad's quiz!") #Introduction
name = input("What is your name? ")
print("Alright", name,", these will be today's topics:")  #Topics
print("a) Video Games") 
print("b) Soccer")
print("c) Geography") 
choice = input("Which topic would you like to begin with?")
if choice == 'video games' or choice == 'Video Games' or choice == 'Video games' or choice == 'a)' or choice == 'a':
    print("You picked Video Games.")
print("Question number one:")                                      #Question one
print("What is the most popular FPS (First Person Shooter) game?")
print("a) Call of Duty")
print("b) Battlefield")
print("c) Grand Theft Auto 5")
print("d) Counter Strike")       
maxGuesses = 2 #Max number of attempts for the problem
guessesTaken = 0
points = 0
question = input("Your answer: ")
if question == 'Call of duty' or question == 'call of duty' or question == 'Call Of Duty' or question == 'Call of Duty' or question == 'a' or question == 'a)':
    print("You are correct! You guessed the question on the first try!")
    points = points + maxGuesses-guessesTaken
    print("You scored",(maxGuesses-guessesTaken), "points!")
else:
    print("Incorrect!")
    print("You have", (maxGuesses-guessesTaken-1), "guesses remaining!")
    answerb = input("Your answer: ")
if answerb == 'Call of duty' or answerb == 'call of duty' or answerb == 'Call Of Duty' or answerb == 'Call of Duty' or answerb == 'a' or answerb == 'a)':
    print("You are correct!")
    points = points + maxGuesses-guessesTaken
    print("You scored", (maxGuesses-guessesTaken-1), "points!")

我遇到的问题在第 28 行,它说未定义 answerb 但我确实定义了它。我应该用我学过的术语来做这个测验,而且我不允许使用我没有学过的术语,比如 while。我把 else: print wrong 并把 answerb == input 给用户第二次回答的机会。如果他们第一次尝试就得到它,他们不需要为 answerb 插入一些东西。

4

3 回答 3

1

这条线...

    answerb = input("Your answer: ")

缩进太远。它只会在前面if语句的“else”部分中调用。

answerb = input("Your answer: ")

取消缩进,使其与以下 处于同一级别if,以便始终调用它(因此answerb将始终定义)。

于 2013-10-29T01:39:56.623 回答
0

编辑:

根据您的评论和代码结构,我认为您想缩进这部分:

if answerb == 'Call of duty' or answerb == 'call of duty' or answerb == 'Call Of Duty' or answerb == 'Call of Duty' or answerb == 'a' or answerb == 'a)':
    print("You are correct!")
    points = points + maxGuesses-guessesTaken

您的代码应如下所示:

print("Hello and welcome to Shahaad's quiz!") #Introduction
name = input("What is your name? ")
print("Alright", name,", these will be today's topics:")  #Topics
print("a) Video Games") 
print("b) Soccer")
print("c) Geography") 
choice = input("Which topic would you like to begin with?")
if choice == 'video games' or choice == 'Video Games' or choice == 'Video games' or choice == 'a)' or choice == 'a':
    print("You picked Video Games.")
print("Question number one:")                                      #Question one
print("What is the most popular FPS (First Person Shooter) game?")
print("a) Call of Duty")
print("b) Battlefield")
print("c) Grand Theft Auto 5")
print("d) Counter Strike")       
maxGuesses = 2 #Max number of attempts for the problem
guessesTaken = 0
points = 0
question = input("Your answer: ")
if question == 'Call of duty' or question == 'call of duty' or question == 'Call Of Duty' or question == 'Call of Duty' or question == 'a' or question == 'a)':
    print("You are correct! You guessed the question on the first try!")
    points = points + maxGuesses-guessesTaken
    print("You scored",(maxGuesses-guessesTaken), "points!")
else:
    print("Incorrect!")
    print("You have", (maxGuesses-guessesTaken-1), "guesses remaining!")
    answerb = input("Your answer: ")
    if answerb == 'Call of duty' or answerb == 'call of duty' or answerb == 'Call Of Duty' or answerb == 'Call of Duty' or answerb == 'a' or answerb == 'a)':
        print("You are correct!")
        points = points + maxGuesses-guessesTaken
    print("You scored", (maxGuesses-guessesTaken-1), "points!")
于 2013-10-29T01:39:45.323 回答
-1
  1. 不,你没有answerb正确定义。它在else可能尚未执行的语句内。我假设你想要的是缩进你的最后一条if语句,因为它只有在答案错误时才会执行。

  2. 而不是多次question ==使用question in ['bla1', 'bla2', 'bla3']。在这里你甚至不需要这个,因为你不关心大小写。您可以这样做question.lower() == 'bla bla bla'将匹配所有可能的大小写。(其他if的也一样)

  3. 你的程序结构很糟糕。您需要使用循环重写它并将您的问题和答案存储在数组中。

于 2013-10-29T01:41:43.567 回答