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

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

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

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

Q&A

解決済

1回答

2983閲覧

数当てゲームヒット&ブローを作っています。

waruwaru

総合スコア13

Python

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

0グッド

0クリップ

投稿2019/03/08 13:14

編集2019/03/08 13:16

数当てゲームヒット&ブローを作っています。
ランダムに指定された4桁の数字と入力した4桁の数字が何個一致するかを得点化したゲームです。
実行をすると
expected an indented blockが表示されますがどこが間違っているかが分かりません。
間違っている点をご教示頂けますと幸いです。

#conding:utf-8 import random import tkinter as tk import tkinter.messagebox as tmsg #ボタンがクリックされたときの処理 def ButtonClick(): #テキスト入力欄に入力された文字列を取得 b=editbox1.get() #メッセージとして表示する tmsg.showinfo("入力された数字",b) #4桁の数字か判定する isok=False if len(b)!=4: tmsg.showerror("エラー","4桁の数字を入力してください") else:kazuok=True for i in range(4): if (b[i]<"0")or(b[i]>"9"): tmsg.showerror("エラー","数字ではありません") kazuok=False break if kazuok: isok=True if isok: #4桁の数字であったとき #ヒットを判定 hit=0 for i in range(4): if a[i]==int(b[i]): hit=hit+1 #ブローを判定 blow=0 for j in range(4): for i in range(4): if (int(b[j])==a[i])and(a[i]!=int(b[i]))and(a[j]!=int(b[j])): blow=blow+1 break #ヒットが4なら当たりで終了 if hit=4: tmsg.showinfo("当たり","おめでとうございます。当たりです") #終了 root.destroy() else: #ヒットとブロー数を表示 tmsg.showinfo("ヒント","ヒット"+str(hit)+"/"+"ブロー"+str(blow)) #メインのプログラム #最初にランダムな数字を作成しておく a=[random.randint(0,9), random.randint(0,9), random.randint(0,9), random.randint(0,9)] #メインのプログラム root=tk.Tk() root.geometry("400x150") root.title("数当てゲーム") #テキスト labell=tk.Label(root,text="数を入れてね") labell.place(x=40,y=20) #テキストボックスを作る editbox1=tk.Entry(width=4,font=("Belvetica",28)) editbox1.place(x=120,y=60) #ボタンを作る button1=tk.Button(root,text="チェック",font=("Helvetica",14), command=ButtonClick) button1.place(x=220,y=60) #ウィンドウを表示する root.mainloop()

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

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

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

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

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

nmoa

2019/03/08 13:24 編集

あなたの以前の質問( https://teratail.com/questions/177177 )でもインデントのミスが指摘されていますが、そもそもpythonにおけるインデントの必要性を理解した上でコーディングしてるのですか?
waruwaru

2019/03/08 13:26

すみません。初心者です。 ご意見大変有難いです。
nmoa

2019/03/08 13:35

初心者なので毎回同じ質問をする、という姿勢ではなく、ぜひ初心者だからこそ、同じ質問を繰り返さないように、回答から1歩進んで学習する姿勢を身に着けましょう。 特にあなたの質問において問題なのは、質問のタイトルが質問の内容と合致していない、ということです。3つの質問の全てで「数当てゲームヒット&ブローが~」というタイトルになっていますが、このタイトルが質問内容の要約になっているとはとても言いきれません。質問の内容とタイトルが合致できるように、ぜひ学習してください。
guest

回答1

0

ベストアンサー

for i in range(4):

if a[i]==int(b[i]): hit=hit+1

ここんところのインデント

投稿2019/03/08 13:18

y_waiwai

総合スコア87774

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

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

waruwaru

2019/03/08 13:35

ありがとうございます!作動しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問