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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

503閲覧

書籍 ”独学プログラマー” に掲載されている”War Game”について

Sh0He1

総合スコア13

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/09/03 02:11

Python初心者です。書籍”独学プログラマー”に掲載されている”War Game”について質問させていただきます。
#War Gameのコード
リンク内容

コード内に以下のような関数がありました。

python

1def __lt__(self, c2): 2 if self.value < c2.value: 3 return True 4 if self.value == c2.value: 5 if self.suit < c2.suit: 6 return True 7 else: 8 return False 9 return False

最終行にあるreturn Falseの役割がいまいちよくわかりません。実験で最終行抜きでコードを実行してみたのですが問題なく動きました。

以上です。ご回答いただけると幸いです。

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

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

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

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

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

mdj

2018/09/03 02:23

最終行にあるreturn False を無くして、「self.value > c2.value」になるケースの値を与えてみてはどうでしょうか
guest

回答3

0

ベストアンサー

次のように書いてみたら納得いくのでは無いでしょうか。

Python

1def __lt__(self, c2): 2 if self.value < c2.value: 3 return True 4 elif self.value == c2.value: 5 if self.suit < c2.suit: 6 return True 7 else: 8 return False 9 else: 10 return False

結果をreturnする場合そこで関数を抜けるので、else節を省略できるのです。

実験で最終行抜きでコードを実行してみたのですが問題なく動きました。

既に回答が付いているとおり、偽値として判定できるNoneが返されるからです。
ただし、意味合い的にreturn Falseを省略すべきではないでしょう。

投稿2018/09/03 02:28

編集2018/09/03 02:28
LouiS0616

総合スコア35658

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

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

0

Pythonの場合、returnを書かなくても、Noneという値が返ることとなります。

そして、NoneFalseも真理値としては偽なので(リファレンス)、ifなどに投げ込んだ結果は変わりません。

もちろん、受け取った側でNoneなのかFalseなのかで処理が違うなら、結果は変化します。

投稿2018/09/03 02:22

maisumakun

総合スコア145121

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

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

0

pythonではreturnがない場合、Noneが返却されるのですが、評価時にはFalseとなるので、結果が同じになります。

投稿2018/09/03 02:21

t_obara

総合スコア5488

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問