こんちわ、kmdです。
学習3週間目です。
今回はこのような問題を解いていきました。
↓ 参考サイト
https://joytas.net/programming/python/python%E6%BC%94%E7%BF%92%E5%95%8F%E9%A1%8C%E5%88%9D%E7%B4%9A
1~99の番号のついたボールが計99個入っている袋
その中から2人が交互にボールを取り出し大きい数を引いた方が勝ちとなる。
ゲームは5回戦で競う。
なお、取り出したボールは袋に戻さないものとする(同じボールを二度ひくことはない)
import random
def game():
balls=list(range(1,100))
random.shuffle(balls)
playerwin = 0
comwin = 0
for i in range(5):
player = 0
com = 0
player = balls[i] #プレイヤーにリストのi番目
com = balls[i + 5] #コンピュータにリストのi +1番目
print(i + 1, '回戦目(あなた、コンピュータ):\n', player, ' ', com)
if player > com:
playerwin = playerwin + 1
elif player < com:
comwin = comwin + 1
if comwin < playerwin:
print('勝利数が', playerwin, '回のため、あなたの勝ちです!!')
else:
print('敗北数が', comwin, '回のため、あなたの負けです…')
game()
コードの出力例はこちら
1 回戦目(あなた、コンピュータ):
58 48
2 回戦目(あなた、コンピュータ):
85 26
3 回戦目(あなた、コンピュータ):
60 41
4 回戦目(あなた、コンピュータ):
30 77
5 回戦目(あなた、コンピュータ):
62 83
勝利数が 3 回のため、あなたの勝ちです!!
今回はfor文を利用したものを作ってみました。
勝利数のカウントなどはもっと工夫できたかなと思います。
こういう問題って就活のSPI問題でよく見ましたよね。
マジで悪夢を思い出します…
プログラミングの基本をまだ理解できていないのですが次はDBを利用してみたいです。
-----2/12追記-----
コメントのほうでミスのほう教えてくれてありがとうございました!
もともとのコードは下記のようなものになっていました。
◇回戦目…ってのが0から始まってましたね…w
それと一番重要なボールの数字がi + 1でリストから出す方法のために、2回戦目3回戦目で再登場してしまうという凡ミス。
for i in range(5):
player = 0
com = 0
player = balls[i] #プレイヤーにリストのi番目
com = balls[i + 1] #コンピュータにリストのi +1番目
print(i, '回戦目(あなた、コンピュータ):\n', player, ' ', com)
・修正としては試合回数は
「i + 1」にすることで1からカウントできるように対応
・同じ数字が出力されてしまうのには
comでリストから出力する番号を+5にすることで、playerと被らないように修正。
playerは0~4番を
comは5~9番を選択するようにしました。
以上、ありがとうございました。