質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

1219閲覧

数あてゲームと'break'outsideloop

ChainsawMeat

総合スコア5

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/09/23 20:48

前提・実現したいこと

数当てゲーム、ヒットアンドブローで間違っていても繰り返し遊べるようにしたい。
ヒットが4つあったら終わりというif文でbreakを書いてもエラーが出てしまう

発生している問題・エラーメッセージ

’break’outsideloop

該当のソースコード

python

1#coding:utf-8 2import random 3 4a=[random.randint(0,9), 5 random.randint(0,9), 6 random.randint(0,9), 7 random.randint(0,9)] 8#print(str(a[0])+str(a[1])+str(a[2])+str(a[3])) 9 10isok=False 11while isok==False: 12 b=input("数を入れてね") 13 if len(b)!=4: 14 print("4桁の数を入力してください") 15 else: 16 kazuok=True 17 for i in range(4): 18 if (b[i]<"0")or(b[i]>"9"): 19 print("数字ではありません") 20 kazuok=False 21 break 22 if kazuok: 23 isok=True 24 25print(b[0]) 26print(b[1]) 27print(b[2]) 28print(b[3]) 29 30if kazuok: 31 isok=True 32 33hit=0 34for i in range(4): 35 if a[i] == int(b[i]): 36 hit=hit+1 37 38blow=0 39for j in range(4): 40 for i in range(4): 41 if(int(b[j])==a[i])and(a[i]!=int(b[i]))and(a[j]!=int(b[j])): 42 blow=blow+1 43 44 #ヒット数とブロー数を表示 45print("ヒット"+str(hit)) 46print("ブロー"+str(blow)) 47#ヒ 48if hit==4: 49 print("当たり!") 50 break 51 52 53 54

試したこと

原因をgoogleで調べる

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

機能を変更したり追加したりするのであれば、関数の使い方を覚えたほうが良いと思います。

公式ドキュメント 4.6. 関数を定義するなどをお読みください。

関数の使い方がわかれば、以下のような感じで再ゲームのコーディングが楽にできるようになります。
(ゲームは簡略化してあります)

python

1def ask_answer(): 2 while True: 3 your_answer = input("数を入れてね > ") 4 if len(your_answer) != 1: 5 print("1桁の数を入力してください\n") 6 elif your_answer < "0" or your_answer > "9": 7 print("数字ではありません\n") 8 else: 9 return int(your_answer) 10 11def game(): 12 import random 13 correct_answer = random.randint(0,9) 14 while True: 15 if correct_answer == ask_answer(): 16 print("当たり!\n") 17 return 18 else: 19 print("はずれ!") 20 21def ask_retry(): 22 while True: 23 retry = input("続けますか? (YかNで答えて下さい) > ") 24 if retry == 'Y' or retry == 'y': 25 return True 26 elif retry == 'N' or retry == 'n': 27 return False 28 else: 29 print("Y か N を入力してください\n") 30 31while True: 32 game() 33 if not ask_retry(): 34 break

投稿2021/09/24 00:40

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

if hit==4:

print("当たり!") break

こいつがループの中に入ってないため、break が意味不明になってます。
これをどうにかしましょう

投稿2021/09/23 23:05

y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

breakがfor文の外にあるのでエラーが出ています。break文を含むif文をインデントしてfor文の中に記述することでエラーがなくなります。

投稿2021/09/23 22:18

tarou2

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問