回答編集履歴

1 追記

hayataka2049

hayataka2049 score 30722

2019/03/29 19:49  投稿

本当に改行含めてそう書いてありましたか? 構文上エラーになるのですが。
普通に改行・インデントして書けば動きます。
```python
drinks = {"おいしい":"vodka", "すき":"gin"}
for name, contents in drinks.items():
   if 'vodka' in contents:
       print(name) # =>おいしい
```
これも可。
```python
drinks = {"おいしい":"vodka", "すき":"gin"}
for name, contents in drinks.items():
   if 'vodka' in contents: print(name) # =>おいしい
```
しかしインデントブロックを作るような文の場合は改行を省略できないことになっています。
> 複合文は、一つ以上の '節 (clause)' からなります。節は、ヘッダと 'スイート (suite)' からなります。一つの複合文を成す各節のヘッダは、全て同じインデントレベルに置かれます。各節のヘッダは一意に識別するキーワードで始まり、コロンで終わります。スイートは、節によって制御される文の集まりです。スイートは、ヘッダがある行のコロンの後にセミコロンで区切って置かれた一つ以上の単純文、または、ヘッダに続く行で一つ多くインデントされた文の集まりです。後者の形式のスイートに限り、さらに複合文をネストできます; 以下の文は、 else 節がどちらの if 節に属するかがはっきりしないなどの理由から不正になります:
> ```
> if test1: if test2: print(x)
> ```
> https://docs.python.org/ja/3/reference/compound_stmts.html
> https://docs.python.org/ja/3/reference/compound_stmts.html
気になるので、本当にそう書いてあったのなら、よろしければなんという本の何ページなのか教えてください。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る