質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1053閲覧

条件文のコードにおける倍数の表現について

cuteworld

総合スコア32

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/10/16 03:51

python

1def isleap(year): 2 if year % 4: # 4で割り切れなければうるう年でない 3 return False 4 elif year % 100: # 4の倍数で100で割り切れなければうるう年である 5 return True 6 elif year % 400: # 100の倍数で400で割り切れなければうるう年でない 7 return False 8 else: # 400の倍数はうるう年である 9 return True 10コード

上記の記述のif文の意味が分からないです。 yearを4で割った余りがあればFalseが返るという
ことだと思いますが、if year % 4 != 0: なら意味が分かります。上記のif文のコードは!= 0不足している
という認識は合っていますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

あなたは正しいです。
ただ、きちんと!= 0を書かなくても、ifなどの条件式の結果は下記ドキュメントのとおりに真偽のいずれかに判定されます。

Pythonの真偽値bool型(True, False)と他の型との変換・判定 | note.nkmk.me

「Pythonにおける真偽値(真理値)の判定」の項を読んでください。

早い話、条件式の評価結果が0ならFalse、それ以外ならTrueということになります。

投稿2021/10/16 04:00

itagagaki

総合スコア8402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cuteworld

2021/10/16 05:39

回答いただきありがとうございます。 else: # 400の倍数はうるう年である 最後のelse文は必要だと思わないのですが、 それ以外(else)とはどのような場合を指すのかを教えていただけますでしょうか? よろしくお願いいたします。
itagagaki

2021/10/16 05:47

最後に残るのはどんな条件になると思いますか? 4の倍数であり、100の倍数でもあり、400の倍数でもある場合ということになりますよね。
cuteworld

2021/10/16 06:37

>100の倍数でもあり 前の条件にないものは、4の倍数でなく、100の倍数であり、400の倍数でない ものだと思いましたが、これは違うのでしょうか?
itagagaki

2021/10/16 06:42

400の倍数でなければ elif year % 400 で真となり return False していますよね?
cuteworld

2021/10/16 06:56

Falseの意味を勘違いしてしまいました。最初のif文で、4の倍数であれば余りが0になり「False=0」となるためFalseを返すのだと思っていました。4の倍数であれば次のelif文に進むという認識でしょうか?
itagagaki

2021/10/16 07:09

if year % 4: では、yearが4の倍数であれば year % 4 の値は 0 となります。 if の構文では条件式の結果の真偽が求めれれていますから、この値は真偽値(True か False か)に自動的に変換されます。 回答に貼ったリンクのドキュメントが示しているとおり、整数 0 は False に変換されます。 if の条件式の値が False なので、直後の文は実行されず、次の elif または else に進みます。 もし if の条件式の値が True なら(if year % 4: の場合だと、year % 4 が 0 以外、すなわち4の倍数でないならば)そこに記述された文(この場合 return False)が実行されます。
cuteworld

2021/10/16 07:34

分かりやすい解説をいただきありがとうございます。 条件式を理解しているつもりでしたが、条件式の値の換算までは認識できていませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問