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

回答編集履歴

4

追記

2019/01/23 13:49

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -50,4 +50,38 @@
50
50
 
51
51
  > 今回のコードでは並列してifを3つも使っているので、なぜ正しくコードが出力されたのかわかりません。
52
52
 
53
- 効率的かはともかく、間違っているわけでは全く無いから。
53
+ 効率的かはともかく、間違っているわけでは全く無いから。
54
+
55
+ おまけ
56
+ ---
57
+ elifやelseを使うメリットが無い場合もあります。
58
+ 例えば、しばしばこんなコードを目にしますが、個人的にはちょっと冗長に思えます。
59
+ ```Python
60
+ def is_aho(num):
61
+ """3の倍数か3の付く数値なら真を返す"""
62
+ if num % 3 == 0:
63
+ print('3の倍数')
64
+ return True
65
+ elif '3' in str(num):
66
+ print('3が付く数')
67
+ return True
68
+ else:
69
+ return False
70
+ ```
71
+
72
+ 次のように書き換えられます。
73
+ ```Python
74
+ def is_aho(num):
75
+ """3の倍数か3の付く数値なら真を返す"""
76
+ if num % 3 == 0:
77
+ print('3の倍数')
78
+ return True
79
+
80
+ # ここに来ている時点で3の倍数で無いことは確定
81
+ if '3' in str(num):
82
+ print('3が付く数')
83
+ return True
84
+
85
+ # ここに来ている時点で、直前の二条件を満たさないことは確定
86
+ return False
87
+ ```

3

追記

2019/01/23 13:49

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,7 +1,6 @@
1
1
  > プレイヤーがだしてきたグーショキパーに対してcomの対応を決める際に、単純にifですべてつないでしまったのですが、本を見たらifを2つ以上つなげる時はelifを用いるとなっていました。
2
2
 
3
3
  正しくは、『elifを使うと効率が良い場合がある』ですかね。
4
- これについて参考書に間違いがあるとはちょっと考えづらいので、誤読していると思います。
5
4
  ```Python
6
5
  num = 0
7
6
 
@@ -42,4 +41,13 @@
42
41
  print('5の倍数')
43
42
  ```
44
43
 
45
- 実行結果を予想してから、実際に試してみると良いでしょう。
44
+ 実行結果を予想してから、実際に試してみると良いでしょう。
45
+
46
+ > ただし、入れ子ならばifのインデントの中に連続してifを入れることができるらしいです。
47
+
48
+ 入れ子であるかどうかは関係ないです。
49
+ これについて参考書に間違いがあるとはちょっと考えづらいので、誤読していると思います。
50
+
51
+ > 今回のコードでは並列してifを3つも使っているので、なぜ正しくコードが出力されたのかわかりません。
52
+
53
+ 効率的かはともかく、間違っているわけでは全く無いから。

2

追記

2019/01/23 13:41

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,6 +1,7 @@
1
1
  > プレイヤーがだしてきたグーショキパーに対してcomの対応を決める際に、単純にifですべてつないでしまったのですが、本を見たらifを2つ以上つなげる時はelifを用いるとなっていました。
2
2
 
3
3
  正しくは、『elifを使うと効率が良い場合がある』ですかね。
4
+ これについて参考書に間違いがあるとはちょっと考えづらいので、誤読していると思います。
4
5
  ```Python
5
6
  num = 0
6
7
 
@@ -39,4 +40,6 @@
39
40
 
40
41
  elif num % 5 == 0:
41
42
  print('5の倍数')
42
- ```
43
+ ```
44
+
45
+ 実行結果を予想してから、実際に試してみると良いでしょう。

1

追記

2019/01/23 13:34

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -20,4 +20,23 @@
20
20
  elif num == 1: # 直前のif文の中身が実行されたならスキップ、
21
21
  # そうでないなら条件を判定して、真なら実行
22
22
  ...
23
+ ```
24
+
25
+ また、条件に依っては挙動が異なることもあります。
26
+ ```Python
27
+ num = 15
28
+ if num % 3 == 0:
29
+ print('3の倍数')
30
+
31
+ if num % 5 == 0:
32
+ print('5の倍数')
33
+ ```
34
+
35
+ ```Python
36
+ num = 15
37
+ if num % 3 == 0:
38
+ print('3の倍数')
39
+
40
+ elif num % 5 == 0:
41
+ print('5の倍数')
23
42
  ```