2017-11-27 24 views
1

私は町でトリビアゲームを主催しています。ペンで手動でプレイするのではなく、プレーヤーの答えを入力してスコアを計算できるようにするプログラムを作成しようとしていました。紙。私は始めようとしており、入力された答えが正しいかどうかを判断するためにコードの最初の部分を作成していましたが、いくつかのエラーが発生しています。文字列を使用して同じ名前のリストを呼び出す

answer1 = ["duke of cambridge", "prince of wales", 3] 
answer2 = ["android", 5] 

for i in range(2): 
    arrayToFind = "answer" + str(i+1) 
    answers = input("answers here:").split(",") 
    iteration = len(answers) 
    for x in range(iteration): 
     if(answers[x] == arrayToFind[x]): 
      print("right") 
     else: 
      print("wrong") 

2つの行列を作成し、ループを作成して回答を比較しました。私が問題を抱えているのは、ループごとに異なる配列をチェックする方法を見つけることです。たとえば、最初の実行では、入力された回答をanswer1配列の回答と比較します。ただし、2回目の実行はanswer2配列と比較されます。

私は2D配列を使うことを考えましたが、Javaのような他の言語ほど簡単ではありませんでした。どのようにコードを動作させるためのヒント?今、arrayToFindは文字列ですが、arrayToFind = answer1の場合のように、answer1配列を使用すると、ほぼキーワードになります。

ありがとうございます!

+0

また、行列の末尾の数値はポイント値です - 私はそれらをまだ実装していないので、この部分では重要ではありません。 – HunBurry

答えて

0

IMO、これを行う正しい方法はPython 2Dリストです。それはかなりシンプルです:

solutions = [ 
    ["ans1", "ans2", "ans3", 2], 
    ["ans4", "ans5", 3] 
    # etc. 
] # If you want "ans1", you can use solutions[0][0]. For "ans3": solutions[0][2] 

for question in solutions: 
    answers = input("answers here:").split(",") 
    if(answers == question): # This checks to see if the lists are the same, e.g. ["foo", 3, "bar"] == ["foo", 3, "bar"] returns True. 
     print("right") 
    else: 
     print("wrong") 
+1

これは多くの助けになりました。答えは==質問ラインがすべてをチェックしたので、ユーザーの回答を入力するたびにポイント値を入力する必要があったので、私が望んだのとまったく同じでした。しかし、答えのすべての項目について反復し、質問と同じインデックスの項目と比較して、点の値をチェックしないようにしました。ヘルプm8をありがとう。 – HunBurry

+0

うれしい私は助けることができました! – OldBunny2800

関連する問題