数当てゲームヒット&ブローを作っています。
ランダムに指定された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()
あなたの以前の質問( https://teratail.com/questions/177177 )でもインデントのミスが指摘されていますが、そもそもpythonにおけるインデントの必要性を理解した上でコーディングしてるのですか?
すみません。初心者です。
ご意見大変有難いです。
初心者なので毎回同じ質問をする、という姿勢ではなく、ぜひ初心者だからこそ、同じ質問を繰り返さないように、回答から1歩進んで学習する姿勢を身に着けましょう。
特にあなたの質問において問題なのは、質問のタイトルが質問の内容と合致していない、ということです。3つの質問の全てで「数当てゲームヒット&ブローが~」というタイトルになっていますが、このタイトルが質問内容の要約になっているとはとても言いきれません。質問の内容とタイトルが合致できるように、ぜひ学習してください。
回答1件
あなたの回答
tips
プレビュー