0

ユーザーにカナダの首相の任期日と任期番号を与えるトリビアを作成する必要があり、プレーヤーは正しい首相を入力する必要があります。これが私のコードです:

from random import*

pm=["Macdonald", "Mackenzie", "Macdonald", "Abbott", "Thompson", "Bowell",
"Tupper", "Laurier", "Borden", "Borden", "Meighen", "King", "Meighen", "King",
"Bennett", "King", "St-Laurent", "Diefenbaker", "Pearson", "Clark", "Trudeau",
"Turner","Mulroney", "Campbell", "Chretien", "Martin", "Harper"]

terms=["July 1, 1867 to Nov. 5, 1873", "Nov. 7, 1873 to Oct. 8, 1878",
   "Oct. 17, 1878 to June 6, 1891", "June 16, 1891 to Nov. 24, 1892",
   "Dec. 5, 1892 to Dec. 12, 1894", "Dec. 21, 1894 to April 27, 1896",
   "May 1, 1896 to July 8, 1896", "July 11, 1896 to Oct. 6, 1911",
   "Oct. 10, 1911 to Oct. 12, 1917", "Oct. 12, 1917 to July 10, 1920",
   "July 10, 1920 to Dec. 29, 1921", "Dec. 29, 1921 to June 28, 1926",
   "June 29, 1926 to Sept. 25, 1926", "Sept. 25, 1926 to Aug. 7, 1930",
   "Aug. 7, 1930 to Oct. 23, 1935", "Oct. 23, 1935 to Nov. 15, 1948",
   "Nov. 15, 1948 to June 21, 1957", "June 21, 1957 to Apr. 22, 1963",
   "Apr. 22, 1963 to Apr. 20, 1968", "Apr. 20, 1968 to June 4, 1979",
   "June 4, 1979 to March 3, 1980", "March 3, 1980 to June 30, 1984",
   "June 30, 1984 to Sept. 17, 1984", "Sept. 17, 1984 to June 25, 1993",
   "June 25, 1993 to Nov. 4, 1993", "Nov. 4, 1993 to Dec. 11, 2003",
   "Dec. 12, 2003 to Feb. 5, 2006", "Feb. 6, 2006 -"]

termnum=["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14",
     "15", "16", "17", "18", "19", "20", "21", "22", "23","24", "25", "26", "27", 
     "28"]
score=0
choiceterm=choice(terms)
choicePM=choice(pm)
choicetermnum=choice(termnum)

    for i in range(10):
        print(choiceterm[i], choicetermnum[i])
        ans=input("Which prime minister reigned in this time?:\n")
        if ans == choicePM[i]:
        print("Great job!")
        score+=1
    else:
        print("Incorrect!  The corret answer was", choicePM[i])

ユーザーがどのように行ったかについてのフィードバックを提供する最終的な出力がないという事実を無視してください。現在、choice 関数を使って、適切な総理大臣に対応する任期日と任期番号を出力するようにしようとしていますが、作成したリストの順序で出力されません (例:「1 期、7 月 1 日」)。 、1867 年から 1873 年 11 月 5 日」など)。現時点では、このプログラムは学期の日付と数字が一致しない 1 文字を出力します。また、ユーザーが間違った回答を入力すると、文字列インデックスが範囲外になります。私はこれまでにさまざまなことを試してきましたが、うまくいきませんでした。だから私の質問は、すべての変数を互いに対応させるにはどうすればよいのですか?リストにリストした順序ではありませんか? もし可能なら、また、いつ使用するかについての一般的な知識はありますが、それが何をするのか正確にはわからないため、インデックスと「for i in ...」の部分を理解するのに役立ちます。ありがとうございました。

4

3 に答える 3

0

次のようなものが必要になる場合があります。

score=0
index = randint(1, 29)
choiceterm=terms[index]
choicePM=pm[index]
##print index, choiceterm, choicePM

for i in range(10):
    print(choiceterm)
    ans=input("Which prime minister reigned in this time?:\n")
    if ans == choicePM:
        print("Great job!")
        score+=1
    else:
        print("Incorrect!  The corret answer was", choicePM)
于 2013-10-31T03:57:22.190 に答える