teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2019/09/20 10:00

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -20,4 +20,38 @@
20
20
  42
21
21
  ```
22
22
 
23
- 結局は素直にif文を使う方法が一番良いです。紹介した方法は推奨しません。
23
+ 結局は素直にif文を使う方法が一番良いです。紹介した方法は推奨しません。
24
+
25
+ おまけ:if文を置き換える汎用的な方法は?
26
+ ---
27
+ **条件演算子の利用**
28
+ ```Python
29
+ >>> print('"{}"'.format(s) if isinstance(s, str) else s)
30
+ "spam"
31
+ >>> print('"{}"'.format(n) if isinstance(n, str) else n)
32
+ 42
33
+ ```
34
+
35
+ 俗称では有りますが、**三項演算子**や**if式**と呼ぶ人もいます。
36
+
37
+ ---
38
+ **リストや辞書の利用**
39
+ ```Python
40
+ >>> print(['"{}"', '{}'][isinstance(s, int)].format(s))
41
+ "spam"
42
+ >>> print(['"{}"', '{}'][isinstance(n, int)].format(n))
43
+ 42
44
+ ```
45
+
46
+ ```Python
47
+ >>> print(
48
+ ... {str: '"{}"', int: '{}'}[type(s)].format(s)
49
+ ... )
50
+ "spam"
51
+ >>> print(
52
+ ... {str: '"{}"', int: '{}'}[type(n)].format(n)
53
+ ... )
54
+ 42
55
+ ```
56
+
57
+ 半ば遊びです。後者はぎりぎり使い道があるかも。