今年は、パリオリンピックが開催される。
そこで、私はよくサッカーの試合でエンドを決めるために使われているコイントスをPythonを使い、プログラムコードを書くことについて、興味を持った。
What is Coin Toss?
硬貨などを投げ上げて、落ちたそれの裏表で物事を決めることである。
プログラムコード
import random
def get_user_choice():
while True:
try:
user_choice = int(input("What do you choose? Type 1 for Heads, 2 for Tails, or 3 to Quit: "))
if user_choice not in [1, 2, 3]:
print("Invalid input. Please choose 1 for Heads, 2 for Tails, or 3 to Quit.")
else:
return user_choice
except ValueError:
print("Invalid input. Please enter a number.")
def main():
print("Welcome to the Heads or Tails game!")
while True:
user_choice = get_user_choice()
if user_choice == 3:
print("Thanks for playing!")
break
coin = random.randint(1, 2) # 1 for Heads, 2 for Tails
print("Computer flips the coin...")
if coin == 1:
print("It's Heads!")
else:
print("It's Tails!")
if user_choice == coin:
print("Congratulations! You guessed correctly.")
else:
print("Sorry, you guessed wrong. Better luck next time!")
play_again = input("Do you want to play again? (yes/no): ").lower()
if play_again != "yes":
print("Thanks for playing!")
break
print()
if __name__ == "__main__":
main()
コードの説明と遊び方
最初に、画面に表示される指示に従って、1(表)か2(裏)を選びます。
コンピュータも同時にランダムで1か2を選びます。
コンピュータの選んだ結果が表示されます。もし1なら「表」、2なら「裏」と表示されます。
プレイヤーとコンピュータの選択が一致すれば、「おめでとうございます!当たりです!」(Congratulations! と表示されます。
違う場合は、「残念!外れです。次は頑張ってください!」と表示されます。
各ラウンドの後、もう一度遊ぶかどうかを尋ねられます。「はい」を選べば再度ゲームが始まります。選ばない場合はプログラムが終了します。
注意点:
プレイヤーが1(表)か2(裏)以外の数字を入力した場合、無効な入力として扱われます。
ゲームを終了するには、3を入力してください。
この場合、プレイヤーはコンピューターが選んだコインを予想するだけになってしまう。
そこで、私はコンピューターとプレイヤーがコイントスゲームをできるようなプログラムコードを書いてみた。
改良したプログラムコード
import random
def get_user_choice():
while True:
try:
user_choice = int(input("表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: "))
if user_choice not in [1, 2]:
print("無効な入力です。1を入力して表、2を入力して裏を選んでください。")
else:
return user_choice
except ValueError:
print("無効な入力です。数字を入力してください。")
def main():
print("コンピュータとのコインゲームに挑戦しましょう!最初に5回勝った方が勝者です。デュースの場合もあります。")
computer_wins = 0
player_wins = 0
while computer_wins < 5 and player_wins < 5:
print("\n--- 新しいラウンド ---")
print(f"現在のスコア: プレイヤー {player_wins} - {computer_wins} コンピュータ")
user_choice = get_user_choice()
coin = random.randint(1, 2) # 1が表、2が裏
if coin == 1:
print("コンピュータが表を選びました。")
else:
print("コンピュータが裏を選びました。")
if user_choice == coin:
print("あなたの勝ちです!")
player_wins += 1
else:
print("コンピュータの勝ちです。")
computer_wins += 1
# デュースの場合の処理
if player_wins == computer_wins and player_wins == 4:
print("\nデュースです!最後の勝者を決めるためのラウンドです。\n")
if player_wins > computer_wins:
print("おめでとうございます!あなたの勝ちです!")
else:
print("残念!コンピュータの勝ちです。")
if __name__ == "__main__":
main()
プログラムコードを使った実際のゲームプレイ
コンピュータとのコインゲームに挑戦しましょう!最初に3回勝った方が勝者です。デュースの場合もあります。
--- 新しいラウンド ---
現在のスコア: プレイヤー 0 - 0 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 1
コンピュータが裏を選びました。
コンピュータの勝ちです。
--- 新しいラウンド ---
現在のスコア: プレイヤー 0 - 1 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが表を選びました。
コンピュータの勝ちです。
--- 新しいラウンド ---
現在のスコア: プレイヤー 0 - 2 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 1
コンピュータが表を選びました。
あなたの勝ちです!
--- 新しいラウンド ---
現在のスコア: プレイヤー 1 - 2 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 1
コンピュータが表を選びました。
あなたの勝ちです!
デュースです!最後の勝者を決めるためのラウンドです。
--- 新しいラウンド ---
現在のスコア: プレイヤー 2 - 2 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが裏を選びました。
あなたの勝ちです!
おめでとうございます!あなたの勝ちです!
しかし、ここで疑問点を感じた。2-2でデュースなら、本来は4点取った方が勝ちになる。
この場合、あなたの勝ちです!と出力した。
デュースを含めたプログラムコード
import random
def get_user_choice():
while True:
try:
user_choice = int(input("表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: "))
if user_choice not in [1, 2]:
print("無効な入力です。1を入力して表、2を入力して裏を選んでください。")
else:
return user_choice
except ValueError:
print("無効な入力です。数字を入力してください。")
def main():
print("コンピュータとのコインゲームに挑戦しましょう!最初に5回勝った方が勝者です。デュース(同点)が発生した場合、相手に2点差がつくまで続きます。")
computer_wins = 0
player_wins = 0
while computer_wins < 5 and player_wins < 5:
print("\n--- 新しいラウンド ---")
print(f"現在のスコア: プレイヤー {player_wins} - {computer_wins} コンピュータ")
user_choice = get_user_choice()
coin = random.randint(1, 2) # 1が表、2が裏
if coin == 1:
print("コンピュータが表を選びました。")
else:
print("コンピュータが裏を選びました。")
if user_choice == coin:
print("あなたの勝ちです!")
player_wins += 1
else:
print("コンピュータの勝ちです。")
computer_wins += 1
# デュース(同点)の処理
if player_wins == computer_wins and player_wins >= 4:
print("\nデュースです!相手に2点差がつくまで続けます。\n")
while abs(player_wins - computer_wins) < 2:
user_choice = get_user_choice()
coin = random.randint(1, 2)
if coin == 1:
print("コンピュータが表を選びました。")
else:
print("コンピュータが裏を選びました。")
if user_choice == coin:
print("あなたの勝ちです!")
player_wins += 1
else:
print("コンピュータの勝ちです。")
computer_wins += 1
if player_wins >= 10:
print("おめでとうございます!あなたの勝ちです!")
else:
print("残念!コンピュータの勝ちです。")
if __name__ == "__main__":
main()
デュースを含めたプログラムコードの実際のゲームプレイ
コンピュータとのコインゲームに挑戦しましょう!最初に5回勝った方が勝者です。デュース(同点)が発生した場合、相手に2点差がつくまで続きます。
--- 新しいラウンド ---
現在のスコア: プレイヤー 0 - 0 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが裏を選びました。
あなたの勝ちです!
--- 新しいラウンド ---
現在のスコア: プレイヤー 1 - 0 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 1
コンピュータが裏を選びました。
コンピュータの勝ちです。
--- 新しいラウンド ---
現在のスコア: プレイヤー 1 - 1 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが表を選びました。
コンピュータの勝ちです。
--- 新しいラウンド ---
現在のスコア: プレイヤー 1 - 2 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 1
コンピュータが裏を選びました。
コンピュータの勝ちです。
--- 新しいラウンド ---
現在のスコア: プレイヤー 1 - 3 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが裏を選びました。
あなたの勝ちです!
--- 新しいラウンド ---
現在のスコア: プレイヤー 2 - 3 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが裏を選びました。
あなたの勝ちです!
--- 新しいラウンド ---
現在のスコア: プレイヤー 3 - 3 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが表を選びました。
コンピュータの勝ちです。
--- 新しいラウンド ---
現在のスコア: プレイヤー 3 - 4 コンピュータ
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 1
コンピュータが表を選びました。
あなたの勝ちです!
デュースです!相手に2点差がつくまで続けます。
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 2
コンピュータが表を選びました。
コンピュータの勝ちです。
表か裏かを選んでください。1を入力して表、2を入力して裏を選んでください: 1
コンピュータが表を選びました。
6-4で、あなたの勝ちです!
このように、ちゃんとデュースを含めたプログラムコードを作成することができた。
皆さんも時間がある時に、このプログラムコードを参考にして、コイントスゲームをやってみてはいかがでしょうか。