0

学校で Python を学び始めて約 1 か月が経ちましたが、クイズを作ることにしました。採点システムを追加したので、質問に間違って答えた場合、スコアが表示されます。ただし、これは機能せず、常にスコアが 0 になります。また、質問に失敗した場合に、各質問に 1 つではなく、else ステートメントを 1 つだけ配置する方法はありますか? ありがとう :)

コードの例を次に示します (Python 3.2.3):

#QUIZ


print("Welcome to the quiz")
print("Please choose a difficulty:")
difficulty = input("A) Hard   B)Easy")


if difficulty == "A":
    score = 0
    print("")
def question(score):
     print("You chose the hard difficulty")
     print("Where is the Great Victoria lake located?")
     answer1 = input("A) Canada   B)West Africa   C)Australia   D)North America")
     if answer1 == "C":
         print("Correct")
         score = score+1
     else:
         print("you failed the quiz")
         print("Score:",score)
         quit()





def question2(score):
     print("Who is most responsible for cracking the Enigma Code")
     answer2 = input("A) Alan Turing   B) Jeff Bezos   C) George Boole   D) Charles   Babbage")
     if answer2 == "A":
         print("Correct")
         score = score+1
     else: 
         print("you failed the quiz")
         print("Score:",score)
         quit()




def diff_easy(difficulty):
    if difficulty == "B":
        score2 = 0
        print("")


def question4(score2):
        print("You chose the easy difficulty")
        print("What is the capital of Australia?")
        answer1 = input("A) Canberra   B) Sydney   C)Melbourne")
        if answer1 == "A":
            print("Correct")
            score2 = score2+1
 else:
         print("you failed the quiz")
         print("Score:",score2)
         quit()


def question5(score2):
    print("When was the Great Fire of London?")
    answer2 = input("A) 1666   B) 1555   C)1605")
    if answer2 == "A":
         print("Correct")
         score2 = score2+1

    else:
         print("you failed the quiz")
         print("Score:",score2)
         quit()

if difficulty == "A":
    question(score)
    question2(score)



if difficulty == "B":
    diff_easy(difficulty)
    question4(score2)
    question5(score2)
4

2 に答える 2

3

これはscore、関数内に表示される変数が、設定した変数のコピーであり、値によってscore渡されるためです(このトピックを改訂することを強くお勧めします)。ステータスを渡す方法が必要です。

すぐにオブジェクトを発見することになりますが、今のところ (そして今後もそれ以上になることはありません!)、単純な解決策はscore変数をグローバルにすることです。交換するだけ

def question2(score):

def question2():

すべての質問関数で、次のようにそれぞれの最初のステートメントとして追加しglobal scoreます。

def question5():
    global score
    print("When was the Great Fire of London?")
    answer2 = input("A) 1666   B) 1555   C)1605")
    if answer2 == "A":
         print("Correct")
         score = score + 1 
    else:
         print("you failed the quiz")
         print("Score:", score)
         quit()

すべての出現箇所をscore2withに置き換えれscoreば完了です。

もちろんif: else、すべての質問に対して単一のブランチを使用できます。演習できるように、完全な解決策は提供しませんが、ヒントは次のとおりです。3 つの引数を取る関数を作成します。

  1. 質問
  2. 可能な答えのリスト
  3. 正解

この関数を呼び出しましょうquiz。これで、次のように使用できます。

quiz("When was the Great Fire of London?", ["1666", "1555", "1605"], "1666")
quiz("What is the capital of Australia?", ["Canberra", "Sydney", "Melbourne"], "Canberra")
于 2013-10-06T18:29:09.043 に答える
0

のようなステートメント

   score2 = score2+1

ローカル変数を変更するため、コード内では効果がありません。

もう 1 つの質問については、データ構造を使用して質問と回答を保存し、同じコードを何度も繰り返さずに繰り返し処理できるようにする必要があります。

于 2013-10-06T18:31:20.307 に答える