パソコン仕事5倍塾
35,000人を指導した東大卒・元日本IBM社内講師が直伝
MENU
受講生さんの投稿
(投稿ID: 5345) 添付ファイルのダウンロード権限がありません
import random hand_list = ["グー", "チョキ", "パー"] judge_dic = { (0,0):"あいこ", (0,1):"勝ち", (0,2):"負け", (1,0):"負け", (1,1):"あいこ", (1,2):"勝ち", (2,0):"勝ち", (2,1):"負け", (2,2):"あいこ", } janken_cnt = 0 my_point = 0 cpu_point = 0 while janken_cnt == 0 or janken_cnt >= 6: janken_cnt = int(input("勝負の回数は?(1~5回)まで可能")) if janken_cnt == 0 or janken_cnt >= 6: print("1~5を入力してください") for cnt in range(0,janken_cnt): my_hand = int(input("あなたは何を出しますか? 0:グー, 1:チョキ 2:パー :")) rival_hand = random.randint(0,2) print("あなたは", hand_list[my_hand], "である") print("相手は", hand_list[rival_hand], "である") if my_hand == 0 and rival_hand == 1 or my_hand == 1 and rival_hand == 2 or my_hand == 2 and rival_hand == 0: my_point += 1 elif my_hand == 1 and rival_hand == 0 or my_hand == 2 and rival_hand == 1 or my_hand == 0 and rival_hand == 2: cpu_point += 1 print(judge_dic[(my_hand, rival_hand)], "!") if my_point > cpu_point: print(f'あなたは{my_point}点,相手は{cpu_point}点であなたの勝ち') elif my_point < cpu_point: print(f'あなたは{my_point}点,相手は{cpu_point}点であなたの負け') elif my_point == cpu_point: print(f'あなたは{my_point}点,相手は{cpu_point}点で引き分けです。') print("おわり")
受講生さんのコメント
(コメントID: 7628)
小川 慶一さんのコメント
(コメントID: 7633)
import random hand_list = ["グー", "チョキ", "パー"] even = win = lose = 0 my_hand = int(input("あなたは何を出しますか? 0:グー, 1:チョキ 2:パー :")) rival_hand = random.randint(0, 2) if my_hand == rival_hand: result = 'あいこ' even += 1 elif my_hand - rival_hand == -1 or my_hand - rival_hand == 2: result = '勝ち' win += 1 elif my_hand - rival_hand == 1 or my_hand - rival_hand == -2: result = '負け' lose += 1 result_dic = { 'my_hand': hand_list[my_hand], 'rival_hand': hand_list[rival_hand], 'result': result, } print(result_dic)
あなたは何を出しますか? 0:グー, 1:チョキ 2:パー :2 {'my_hand': 'パー', 'rival_hand': 'パー', 'result': 'あいこ'}
import random hand_list = ["グー", "チョキ", "パー"] janken_cnt = int(input("勝負の回数は?(1~5回)まで可能")) if not (0 < janken_cnt < 6): raise ValueError("回数の指定が不正です!") result_dic_list = [] even = win = lose = 0 for i in range(0, janken_cnt): my_hand = int(input("あなたは何を出しますか? 0:グー, 1:チョキ 2:パー :")) rival_hand = random.randint(0, 2) if my_hand == rival_hand: result = '分け' even += 1 elif my_hand - rival_hand == -1 or my_hand - rival_hand == 2: result = '勝ち' win += 1 elif my_hand - rival_hand == 1 or my_hand - rival_hand == -2: result = '負け' lose += 1 result_dic = { 'my_hand': hand_list[my_hand], 'rival_hand': hand_list[rival_hand], 'result': result, } result_dic_list.append(result_dic) print(f'{len(result_dic_list)}回じゃんけんをしました') print(f'{win}勝 {lose}負 {even}分けでした') print('各回の詳細:') for i, result_dic in enumerate(result_dic_list): print(f'{i + 1}回目は {result_dic["result"]}: {result_dic["my_hand"]} vs. {result_dic["rival_hand"]}')
勝負の回数は?(1~5回)まで可能5 あなたは何を出しますか? 0:グー, 1:チョキ 2:パー :1 あなたは何を出しますか? 0:グー, 1:チョキ 2:パー :0 あなたは何を出しますか? 0:グー, 1:チョキ 2:パー :2 あなたは何を出しますか? 0:グー, 1:チョキ 2:パー :2 あなたは何を出しますか? 0:グー, 1:チョキ 2:パー :1 5回じゃんけんをしました 2勝 1負 2分けでした 各回の詳細: 1回目は 分け: チョキ vs. チョキ 2回目は 勝ち: グー vs. チョキ 3回目は 勝ち: パー vs. グー 4回目は 分け: パー vs. パー 5回目は 負け: チョキ vs. グー
(コメントID: 7637)
elif my_hand - rival_hand == -1 or my_hand - rival_hand == 2: result = '勝ち' win += 1 elif my_hand - rival_hand == 1 or my_hand - rival_hand == -2:
result_dic = { 'my_hand': hand_list[my_hand], 'rival_hand': hand_list[rival_hand], 'result': result, } result_dic_list.append(result_dic)
たかちゃんさんのコメント
(コメントID: 7638)
#OKパターン print(f"{i + 1}回目は {result_dic['result']}: {result_dic['my_hand']} vs. {result_dic['rival_hand']}") print(f’{I + 1}回目は {result_dic[“result”]}: {result_dic[“my_hand”]} vs. {result_dic[“rival_hand”]}’) # NGパターン print(f"{i + 1}回目は {result_dic[“result”]}: {result_dic[“my_hand”]} vs. {result_dic[“rival_hand”]}”) print(f’{I + 1}回目は {result_dic[‘result’]}: {result_dic[‘my_hand’]} vs. {result_dic[‘rival_hand’]}’)
藤本 博子さんのコメント
(コメントID: 7662)
janken_cnt = int(input("勝負の回数は?(1-5回まで可能)")) if not (0 < janken_cnt < 6): raise ValueError("回数の指定が不正です!")
while True: try: janken_cnt2 = int(input("勝負の回数は?(1-5回まで可能)")) break except ValueError: print("数値を入力してください")
(コメントID: 7645)
if my_hand == rival_hand: result = 'あいこ' even += 1 elif my_hand - rival_hand in (-1, 2): result = '勝ち' win += 1 elif my_hand - rival_hand in (1, -2): result = '負け' lose += 1
(コメントID: 7647)
アベノミクスさんのコメント
(コメントID: 7652)
Captcha:
たった1ヶ月で人生が劇的に変わりました
佐藤信さん
役員クラスの方から高い評価を受けるようになりました。
佐賀県 - 岩本徹さん
今までまったく知らなかったショートカットキーを使いまくっています。
東京都 - 鷹觜慶さん
年齢60才間近、営業で外回りの時間が多い私でも退社時間が1-2時間程度早くなりました。
東京都 - 宗内隆明さん
受講前もすでにパソコン得意でしたが、そんな私でも受講して本当に良かったと思えた講座です。
東京都 - 佐伯とも子さん
ここまで包括的に仕事に役立つ深い学びを受けれた講座は初めてでした
東京都 - 飯田倫子さん
2025年01月28日 23:56
2025年01月28日 08:53
2025年01月22日 09:26
2025年01月13日 07:25
2024年12月28日 17:20
2025年02月01日 08:41
2025年02月01日 08:28
2025年01月28日 23:57
2025年01月27日 11:28
2022年02月24日 10:59
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
2022年02月02日 00:00
2022年02月02日 03:00
2022年02月02日 06:00
2022年02月02日 09:00
2022年02月02日 12:00
2024年12月19日 11:30
2024年12月18日 13:30
2024年10月21日 17:30
2024年10月18日 17:00
2024年10月17日 17:30
2024年11月27日 11:48
2024年11月25日 12:07
2024年11月17日 09:51
2024年11月15日 16:41
2024年11月15日 13:07
受講生さんの投稿
(投稿ID: 5345) 添付ファイルのダウンロード権限がありません
じゃんけんゲームを他サイト参考にしながら作成してみました。
judge_dic (ディクショナリー)のkeyでタプルが設定
受講生さんのコメント
(コメントID: 7628)
>>judge_dic (ディクショナリー)のkeyでタプルが設定
すいません。こちら間違いて書いていました。
小川 慶一さんのコメント
(コメントID: 7633)
いただいたコードを元にして、ここまでに学んだもろもろを組み合わせた別案を提示します。
まずは、じゃんけんは1回しかやらないものとして:
以下は結果出力の例。
さらに...じゃんけんを複数回行うなら、たとえば、以下のような感じですかね。
以下は結果出力の例。
また、いろいろ投稿してください!
受講生さんのコメント
(コメントID: 7637)
コードの別案提示ありがとうございます!
さきほど提示して頂いたコードをコピーしてデバッグしながら実行いたしました。
シンプルで分かりやすかったです。
>>特にこちらの条件式ですが「そんな法則があったのか!」という感想でした。
>>また下記のコードも大変参考なりました。
ディクショナリーをリストに1個ずつ追加していくやり方(こんな使い方あるんですね。)
たかちゃんさんのコメント
(コメントID: 7638)
F文字と辞書のキーの所で、「“」と「’」同じではダメなのですね。(@@)
藤本 博子さんのコメント
(コメントID: 7662)
期待しない値がくる場合は、raiseキーワードを使用して例外を意図的に発生させることができるのですね。
もし、インプット関数でただ文字列の値が返ってきた時に、例外を送出する場合は、python邦訳ドキュメント # 8. エラーと例外 8.3. 例外を処理するに記載されているtry-exceptも参考になるかと思いました。
pythonでは数を0で割るとZeroDivisionErrorという例外か送出される。左記のように、例外が発生する可能性がある箇所をtry-exceptで囲んで例外を補足することで、プログラムが停止するのを防ぐという処理があることを知りました。
https://docs.python.org/ja/3/tutorial/errors.html
小川 慶一さんのコメント
(コメントID: 7645)
こういうとき、 in 演算子を使うのも良いかと。
> たかちゃんさん
ダブルクオートとシングルクオートの使い分けも、慣れです。
IDEでの色の違いにも気をつけると上達早いかと思います!
小川 慶一さんのコメント
(コメントID: 7647)
raise と エラーの種類については説明すると長いのですが、先々、クラスについての解説をしてからと思っています。
try ... except 文も含めて、こういう例外処理に慣れていない人にはなかなかしんどいかな、と。
今回は、いずれ出てきたときに突然すぎるとびっくりするかなとも思いまして、チラ見せしてみました (^^;
アベノミクスさんのコメント
(コメントID: 7652)
ありがとうございます。
in 演算子使うとさらにシンプルになりますね!