1~2人のクラスメートと協力することは問題ありませんが、そのグループのすべての受講生が等しく実習に貢献することが求められます。FIFAワールドカップのシミュレーションプログラムを作成します。決勝トーナメントは16チームで行われます。各ラウンドでは、それぞれのチームが別のチームと対戦し、負けたチームは除外されます。2チームしか残っていない場合、決勝戦の勝者がチャンピオンとなります。レーティングが与えられます。FIFAの格付が高いほど、過去の試合の結果が良いことを示しており、2チームのFIFAの格付を考慮すると、どちらかのチームが現在の格付けに基づいて試合に勝つ確率を推定することが可能です。過去2回のワールドカップのFIFAレーティングは、2018年5月の男子FIFAランクと2019年3月の女子FIFAランクです。この情報をもとに、1チームで終わるまでのラウンドシミュレーションを繰り返すことで、大会全体をシミュレーションすることができます。(例:1000シミュレーション)、各チームがシミュレートしたトーナメントで何回優勝したかをカウントします。1000回のシミュレーションは多いように見えるかもしれませんが、今日の計算能力をもってすれば、数ミリ秒のうちにこれらのシミュレーションを行うことができます。このラボの最後には、実行時間のトレードオフを考慮した上で、シミュレーションの回数を増やすことにどの程度の価値があるのかを実験してみます。このLabの課題は、Pythonを使ってそれを実現することです。ターミナルウィンドウ内をクリックすることから始めて、それからcdを実行します。その後プロンプトは次のようになっていることがわかります。$ターミナルウィンドウの内側をクリックし、次のように入力します。https://cdn.cs50.net/2022/fall/labs/6/world-cup.zipその後にEnterを押すと、world-cup.zipというZIPがあなたのCodespaceにダウンロードされます。wgetと次のURLの間にあるスペースや、その他の文字を見落とさないように注意してください。world-cup.zipを実行して、world-cupというフォルダを作成します。“に続いてEnterで応答すると、ダウンロードしたZIPファイルが削除されます。world-cupの後にEnterを押して、そのディレクトリに移動する(つまり、開く)。これでプロンプトは以下のようになります。$すべて成功した場合は、次のように実行します。ls次のファイルが表示されます。tournament.pyもし問題が発生した場合は、もう一度同じ手順を踏んで、どこが間違っていたかを確認してください理解を深めるまず、2018m.csvファイルを確認します。このファイルには、2018年男子ワールドカップのノックアウトラウンドの16チームと各チームの評価が含まれています。各ラウンドでどのチームが互いに対戦するかは、チームがリストされる順序によって決まります(例えば、第一ラウンドで、ウルグアイはポルトガルと対戦し、フランスはアルゼンチンと対戦します。次のラウンドで、ウルグアイ-ポルトガルの試合の勝者は、フランス-アルゼンチンの試合の勝者と対戦します)。したがって、このファイルに表示されるチームの順序は編集しないでください。最終的にPythonでは、「チーム」と「格付」という2つの値を含む辞書として各チームを表すことができます。976}と表現したいでしょう。次に、2019w.csvを見てみましょう。このファイルには、同じ形式で2019年女子ワールドカップのデータが含まれています。tournament.pyを開いて、既にコードがいくらか書かれていることを確認してください。上にある変数Nは、実行するワールドカップシミュレーションの数を表します。この場合は1000です。それらのチーム間のゲームをシミュレートします。最初のチームが勝つと、関数はTrueを返します。それ以外の場合はFalseを返します。入力として受け取り、チームの各ペア間のゲームをシミュレートします。次に、この関数は、そのラウンドに勝ったすべてのチームのリストを返します。2であることを確認します。コマンドライン引数を使用して、トーナメントシミュレーションの実行に使用するチームCSVファイルをPythonに指示します。呼ばれる辞書を定義します。現時点ではどちらも空なので、どのように完成させるかはあなた次第です。高い順にチームを並べ、それぞれのチームがワールドカップで優勝する確率をプリントします。teamsとcountsを定義し、simulate_tournament関数を作成するのが今回の課題です。複数のトーナメントをシミュレートし、各チームの勝率を出力するように、tournament.pyの実装を完了します。mainで、CSVファイルからプログラムのメモリにチームデータを読み込み、各チームをリストteamsに追加します。使用するファイルは、コマンドライン引数として指定されます。ファイルの名前にアクセスするには、sys.argv[1]を使用します。open(filename)を使用してファイルを開くことができます。ここで、filenameはファイルの名前を格納する変数です。リーダーとは、Pythonでループしてファイルを1行ずつ読み取り、各行を辞書として扱うオブジェクトです。デフォルトでは、ファイルから読み込まれるすべての値は文字列になります。(Pythonでint関数を使用してこれを行うことができます)。最終的には、各チームの辞書をteamsに追加します。関数呼び出しteams.append(x)は、リストteamsにxを追加します。各チームは、チーム名teamと格付ratingを含む辞書でなければならないことを思い出してください。次に、simulate_tournament関数を実装します。この関数は、チームのリストを入力として受け入れ、1つのチームが残るまでラウンドを繰り返しシミュレートします。この関数は、そのチームの名前を返します。simulate_round関数を呼び出すことができます。simulate_round関数は、単一のラウンドをシミュレートし、チームのリストを入力として受け入れ、すべての勝者のリストを返します。使用してリストの長さを決定できます。トーナメントのチーム数を想定するのではなく、2の累乗を想定してもいいでしょう。最後にmain関数に戻り、N回トーナメントのシミュレーションを実行し、各チームが辞書countsで何回優勝したかを追跡します。simulate_tournamentを使用して各トーナメントをシミュレートし、勝者を決定します。xのような構文は、team_nameに格納されたキーをxに格納された値に関連付けることを思い出してください。Pythonでinキーワードを使用すると、その辞書にすでに特定のキーがあるかどうかをチェックできます。counts:は、「Portugal」が既に辞書countsに存在する値を持っているかどうかを調べます。IDEを使用していたときに記録されたものです。インターフェイスはあなたのCodespaceと異なるように見えますが、2つの環境の動作はほぼ同じであるはずですヒントファイルを読み込むときは、filenameをファイル名、fileを変数として、この構文を使用すると便利です。reader=csv.DictReader(file)Pythonでリストの最後に追加するには、.append()関数を使用します。解決方法がわかりませんか?テストプログラムは、次の例に従って動作する必要があります。シミュレーションはそれぞれランダムであるため、出力は以下の例と完全には一致しません。winning2018年と2019年のワールドカップで実際に何が起こったのか不思議に思うかもしれません。男子ではフランスが決勝でクロアチアに勝ちました。ベルギーはイギリスを破って3位になりました。女子ではアメリカが決勝でオランダに勝ちました。イングランドはスウェーデンが破って3位に入りました。シミュレーション数コードが正しいことを確認したら、ファイルの先頭にある定数Nの値をいじって、トーナメントのシミュレーションの回数を調整しましょう。トーナメントのシミュレーションの回数を増やせば、より正確な予測が可能になりますが、その分時間がかかります。コマンドラインでの実行の前にtimeを付けることで、プログラムの時間を計ることができます。2019w.csvとすれば次のように出力されるはずです。0m0.008sただし、時間は前後する可能性があります。realという指標に注目してください。これは、tournament.pyの実行にかかった合計時間です。分と秒の単位で、1000分の1秒の精度で表示されることに注意してください。answers.txtに、tournament.pyがシミュレーションに要した時間を記録してください10(十)トーナメント100(百)トーナメント1000(千)トーナメント10000(1万)トーナメント100000(10万)トーナメント1000000(100万)トーナメントNを調整するたびに、0m0.000sフォーマットで、answer.txtの適切なTODOに実時間を記録してください。各シナリオで時間を計った後、与えられたTODOを上書きして、2つのフォローアップの質問に答えてください。シミュレーションの回数を増やすにつれて、どのような予測が誤っていることが判明しましたかあなたのプログラムが使用する計算時間1秒ごとに料金を請求されるとします。enough"?:...くらいから予測が安定したような気がします。コードのテスト方法check50を使用して以下を実行し、コードの正確さを評価してください。コンパイルとテストは必ず自分で行ってください。cs50/labs/2023/x/worldcup以下を実行し、style50を使用してコードのスタイルを評価します。tournament.py提出方法ターミナルで、以下のコマンドを実行して提出してください。languages.。