回答編集履歴

3

 

2022/05/18 15:16

投稿

退会済みユーザー
test CHANGED
@@ -18,3 +18,14 @@
18
18
  elif (m == 4 or m== 6 or m == 9 or m == 11) and (d >= 1 and d <= 30):
19
19
  ```
20
20
 
21
+ # 短絡評価
22
+ pythonの or や and は短絡評価といって一般的なANDやORとは少し違い、
23
+ 簡単に言えば下記のような動作になっています。(計算の高速化)
24
+ 「a or b」
25
+ a がTrueならその時点でTrue (bは評価されません)
26
+ a がFalseなら次にbが評価され、bがTrueなら 全体がTrueとなります。bもFalseなら全体はFalseになります。
27
+
28
+ 「a and b」
29
+ a がFalseならその時点でFalse (bは評価されません)
30
+ a がTrue なら次にbが評価され、bがTrueなら 全体がTrueとなります。bがFalseなら全体はFalseとして評価されます。
31
+

2

 

2022/05/18 15:07

投稿

退会済みユーザー
test CHANGED
@@ -1,7 +1,7 @@
1
1
  ```
2
2
  elif m == 1 or m== 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12 and d >= 1 and d <= 31:
3
3
  ```
4
- この部分で、m == 12 and d >= 1 and d <= 31 は Falseとなりますが、m==1の時点でTrueと評価されて全体がTrueとなります。(短絡評価)
4
+ この部分で、先に評価される m == 12 and d >= 1 and d <= 31 は Falseとなりますが、m==1の時点でTrueと評価されて全体がTrueとなります。(短絡評価)
5
5
   
6
6
  m == 1 or m== 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12
7
7
 

1

修正

2022/05/18 15:06

投稿

退会済みユーザー
test CHANGED
@@ -1,7 +1,7 @@
1
1
  ```
2
2
  elif m == 1 or m== 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12 and d >= 1 and d <= 31:
3
3
  ```
4
- この部分で、mが1の時点で全体がTrueと評価されての部分は評価されません。
4
+ この部分で、m == 12 and d >= 1 and d <= 31 は Falseとなります、m==1の時点でTrueと評価されて全体がTrueとなます。(短絡評価
5
5
   
6
6
  m == 1 or m== 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12
7
7