#46 サイコロ 36
● 問題
サイコロを振って,36になるべく近づけるゲームです。
判定が間違っているようです。
import random
pc = 0
you = 0
print('PC:')
while pc <= 33:
dice = random.randint(1,6)
print(f'{dice}',end=' ')
pc += dice
print('',end='\n')
print(f'合計 = {pc}')
print('=========================')
print('You:')
while True:
dice = random.randint(1,6)
result =input('サイコロを振りますか?:はい(1),いいえ(0)')
if result in ['0','1']:
if result == '1':
you += dice
print(f'サイコロの目 = {dice},合計 = {you}')
if you > 36:
break
elif result == '0':
if you < 33:
print('合計が33以上でストップできます')
else:
break
if pc > 36 and you > 36:
print('ドロー')
elif pc == you:
print('ドロー')
elif pc < you:
print('あなたの勝ち')
elif pc > you:
print('PCの勝ち')
PC:
2 1 6 2 1 5 5 5 6 6
合計 = 39
=========================
You:
サイコロを振りますか?:はい(1),いいえ(0)1
サイコロの目 = 5,合計 = 5
サイコロを振りますか?:はい(1),いいえ(0)1
サイコロの目 = 3,合計 = 8
サイコロを振りますか?:はい(1),いいえ(0)1
サイコロの目 = 3,合計 = 11
サイコロを振りますか?:はい(1),いいえ(0)1
サイコロの目 = 6,合計 = 17
サイコロを振りますか?:はい(1),いいえ(0)1
サイコロの目 = 5,合計 = 22
サイコロを振りますか?:はい(1),いいえ(0)1
サイコロの目 = 6,合計 = 28
サイコロを振りますか?:はい(1),いいえ(0)1
サイコロの目 = 1,合計 = 29
サイコロを振りますか?:はい(1),いいえ(0)1
サイコロの目 = 5,合計 = 34
サイコロを振りますか?:はい(1),いいえ(0)0
PCの勝ち
● 解答
勝ち・負け・ドローの場合分けを確認しましょう。
このような場合には,コンピュータでいきなりコードを打ち込むより,紙に場合分けを書いて,すべての場合がつくされているかを確認するとよいでしょう。
そのとき,最初はわかりやすい場合分けを考えてif文にすると,あとから見直したときにわかりやすいコードになるでしょう。
今回の場合は,まず,大きく3つの場合に分けて整理しました。
(1)どちらも36を超える場合
(2)どちらか一方が36を超える場合
(3)どちらも33以上36以下の場合
さらに(3)の場合を,3つの場合に分けます。
①等しい場合
②あなたが大きい場合
②PCが大きい場合
import random
pc = 0
you = 0
print('PC:')
while pc <= 33:
dice = random.randint(1,6)
print(f'{dice}',end=' ')
pc += dice
print('',end='\n')
print(f'合計 = {pc}')
print('=========================')
print('You:')
while True:
dice = random.randint(1,6)
result =input('サイコロを振りますか?:はい(1),いいえ(0)')
if result in ['0','1']:
if result == '1':
you += dice
print(f'サイコロの目 = {dice},合計 = {you}')
if you > 36:
break
elif result == '0':
if you < 33:
print('合計が33以上でストップできます')
else:
break
if pc > 36 and you > 36:
print('ドロー')
if pc > 36 and you <= 36:
print('あなたの勝ち')
if pc <= 36 and you > 36:
print('PCの勝ち')
if pc <= 36 and you <= 36:
if pc == you:
print('ドロー')
elif pc < you:
print('あなたの勝ち')
elif pc > you:
print('PCの勝ち')
#Python #プログラミング
この記事が気に入ったらサポートをしてみませんか?