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

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

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

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

Q&A

1回答

1840閲覧

expected an indented blockの解決方法

hinako__

総合スコア6

Python

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

0グッド

0クリップ

投稿2019/07/25 06:41

編集2019/07/25 06:46

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)電話帳プログラミングを学校の課題でつくっています
以下のエラーメッセージが発生しました。

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

IndentationError : IndentationError : expected an indented blockが出てしまいました。
エラーメッセージ
IndentationError : expected an indented block

該当のソースコード

python>> 「電話帳DB」アルゴリズムのスケッチ

from sys import exit
import pickle # pickleモジュールを使う
import re # 正規表現モジュールを使う

phone = dict() # グローバル変数

def main():
global phone # グローバル変数を使うための宣言

pickleされたものがあるか調べる(step12参照)

あればphoneにloadする

なければ「初回起動」

# メインメニューを表示し、コマンド番号を受け取る while True: scenestr = input(''' # ユーザから文字列を受け取る 番号を入力してください 1:電話番号を検索 2:電話番号を登録 3:電話番号を削除 4:電話番号を一覧 0:プログラムの終了 ->''') if (not re.search(r'^[0-4]$',scenestr)): # 入力値をチェック continue scene = int(scenestr) # 整数に変換 # 各コマンドへの分岐(「マニュフォールド」) if scene == 0: 終了() elif scene == 1: 検索() elif scene == 2: 登録() elif scene == 3: 削除() elif scene == 4: 一覧()

def 終了():
# phoneをpickleする
exit()

コード

def 検索():
# ユーザーから名前を受け取る
# 電話番号を表示
pass # 関数が未実装ならこれを置いておくこと

def 登録():
global phone # ここは必須
# ユーザーから名前を受け取る
# ユーザーから電話番号を受け取る
if re.search(r'【正規表現パターン】', num): # 「電話番号として適切」かチェック
phone[name] = num
else:
# 「電話番号として不適切です」
def 削除():
# ユーザーから名前を受け取る
if (name in phone):
# del phone[name] # これは古い書き方
phone.pop(name) # こちらをお勧めする
else:
# 「その名前の番号は登録されていません」
def 一覧():
for kv in phone.items(): # キーと値のペアを1つずつ返す
k, v = kv
# ペアを表示

if name == 'main':
main()

試したこと

何度インデントを入れたり文字を打ち直しても直りません。。

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

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

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

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

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

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

azuapricot

2019/07/25 06:43

質問をするときのタイトルは「初心者です。。。」とかどうでもいいものではなく、 後世同じことで困る後輩たちのために「IndentationError : expected an indented block が解決できない」とかにしましょうねー
退会済みユーザー

退会済みユーザー

2019/07/25 06:45

「インデントブロックが必要」って言われているのに、インデントのわからないコード貼り付けられても、特定は無理ですよ。。。
gentaro

2019/07/25 06:46

ガイドラインを読みましょう。 https://teratail.com/help/question-tips 「ありがちな失敗としては、「助けてください」「初心者です」という表題をつけてしまうことです。」 https://teratail.com/help/avoid-asking 「何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。」
guest

回答1

0

Pythonは、文字下げ(先頭に特定個数のスペースを入れる)によって、コードの区分けをする言語です。

先頭のスペースの数が同じ行の集まりが、一塊(ブロック)として扱われます。

質問に書かれているコードのように、先頭にスペースが入っている行が無いというのは、pythonではありえません。

まず、Pythonというプログラム言語を基礎の基礎から解説している本やMook (”初めてのPytho”というような言葉が題名に入っているもの)を2,3冊読みましょう。

投稿2019/07/25 07:24

coco_bauer

総合スコア6915

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問