回答編集履歴

4

追記

2019/01/23 13:49

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -103,3 +103,71 @@
103
103
 
104
104
 
105
105
  効率的かはともかく、間違っているわけでは全く無いから。
106
+
107
+
108
+
109
+ おまけ
110
+
111
+ ---
112
+
113
+ elifやelseを使うメリットが無い場合もあります。
114
+
115
+ 例えば、しばしばこんなコードを目にしますが、個人的にはちょっと冗長に思えます。
116
+
117
+ ```Python
118
+
119
+ def is_aho(num):
120
+
121
+ """3の倍数か3の付く数値なら真を返す"""
122
+
123
+ if num % 3 == 0:
124
+
125
+ print('3の倍数')
126
+
127
+ return True
128
+
129
+ elif '3' in str(num):
130
+
131
+ print('3が付く数')
132
+
133
+ return True
134
+
135
+ else:
136
+
137
+ return False
138
+
139
+ ```
140
+
141
+
142
+
143
+ 次のように書き換えられます。
144
+
145
+ ```Python
146
+
147
+ def is_aho(num):
148
+
149
+ """3の倍数か3の付く数値なら真を返す"""
150
+
151
+ if num % 3 == 0:
152
+
153
+ print('3の倍数')
154
+
155
+ return True
156
+
157
+
158
+
159
+ # ここに来ている時点で3の倍数で無いことは確定
160
+
161
+ if '3' in str(num):
162
+
163
+ print('3が付く数')
164
+
165
+ return True
166
+
167
+
168
+
169
+ # ここに来ている時点で、直前の二条件を満たさないことは確定
170
+
171
+ return False
172
+
173
+ ```

3

追記

2019/01/23 13:49

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -3,8 +3,6 @@
3
3
 
4
4
 
5
5
  正しくは、『elifを使うと効率が良い場合がある』ですかね。
6
-
7
- これについて参考書に間違いがあるとはちょっと考えづらいので、誤読していると思います。
8
6
 
9
7
  ```Python
10
8
 
@@ -87,3 +85,21 @@
87
85
 
88
86
 
89
87
  実行結果を予想してから、実際に試してみると良いでしょう。
88
+
89
+
90
+
91
+ > ただし、入れ子ならばifのインデントの中に連続してifを入れることができるらしいです。
92
+
93
+
94
+
95
+ 入れ子であるかどうかは関係ないです。
96
+
97
+ これについて参考書に間違いがあるとはちょっと考えづらいので、誤読していると思います。
98
+
99
+
100
+
101
+ > 今回のコードでは並列してifを3つも使っているので、なぜ正しくコードが出力されたのかわかりません。
102
+
103
+
104
+
105
+ 効率的かはともかく、間違っているわけでは全く無いから。

2

追記

2019/01/23 13:41

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -3,6 +3,8 @@
3
3
 
4
4
 
5
5
  正しくは、『elifを使うと効率が良い場合がある』ですかね。
6
+
7
+ これについて参考書に間違いがあるとはちょっと考えづらいので、誤読していると思います。
6
8
 
7
9
  ```Python
8
10
 
@@ -81,3 +83,7 @@
81
83
  print('5の倍数')
82
84
 
83
85
  ```
86
+
87
+
88
+
89
+ 実行結果を予想してから、実際に試してみると良いでしょう。

1

追記

2019/01/23 13:34

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -43,3 +43,41 @@
43
43
  ...
44
44
 
45
45
  ```
46
+
47
+
48
+
49
+ また、条件に依っては挙動が異なることもあります。
50
+
51
+ ```Python
52
+
53
+ num = 15
54
+
55
+ if num % 3 == 0:
56
+
57
+ print('3の倍数')
58
+
59
+
60
+
61
+ if num % 5 == 0:
62
+
63
+ print('5の倍数')
64
+
65
+ ```
66
+
67
+
68
+
69
+ ```Python
70
+
71
+ num = 15
72
+
73
+ if num % 3 == 0:
74
+
75
+ print('3の倍数')
76
+
77
+
78
+
79
+ elif num % 5 == 0:
80
+
81
+ print('5の倍数')
82
+
83
+ ```