🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

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

Q&A

解決済

6回答

1771閲覧

python ifを使った条件分岐と戻り値 returnについて

vinakiyoshi

総合スコア19

Python

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

0グッド

0クリップ

投稿2019/10/22 07:31

python

1 2class MenuItem: 3 def __init__(self, name, price): 4 self.name = name 5 self.price = price 6 7 def info(self): 8 return self.name + ': ¥' + str(self.price) 9 10 def get_total_price(self, count): 11 total_price = self.price * count 12 13 # countが3以上のとき、total_priceに0.9をかけてください 14 if count>=3: 15 total_price*=0.9 16 17 # total_priceを四捨五入して、returnしてください 18 return round(total_price)

この最後のif~returnに関して質問です。
この意味は
もしcountが3以上ならtotal_priceを0.9倍して、それを四捨五入するといういみでしょうか??
もしそうだとするなら、returnはインデントしてifの中に入れた方が良いのではないでしょうか??

このreturnはどう解釈すればよいでしょうか。
教えてください。

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

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

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

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

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

guest

回答6

0

  • 3 つ以上なら 10 % 割引にします。
  • 割引の有無にかかわらず、総額は四捨五入します

という処理です。

returnはインデントしてifの中にしらてもよいですが、
その場合、個数が 2 以下の場合でも総額の四捨五入することをどこかに記載する必要があります。

投稿2019/10/23 22:11

katoy

総合スコア22324

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

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

0

ベストアンサー

もしcountが3以上ならtotal_priceを0.9倍して、それを四捨五入するといういみでしょうか??

はい。その通りです。

もしそうだとするなら、returnはインデントしてifの中に入れた方が良いのではないでしょうか??

その場合、countが3以上であるならばtotal_priceを0.9倍して、それを四捨五入した値をreturnしますが、countが3未満の場合何もreturnされないことになってしまいます。よって、ifの中にreturnを入れてはいけません。

投稿2019/10/22 09:11

編集2019/10/22 09:12
SoulaS

総合スコア18

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

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

0

・countが3以上の場合、total_priceに0.9をかけてreturn

・3未満の場合は、そのまま(0.9はかけずに)return

で、わかりますでしょうか?

投稿2019/10/22 07:53

madone99

総合スコア1857

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

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

vinakiyoshi

2019/10/22 07:56

returnをifの中にいれると countが3以上の場合は0.9倍して四捨五入 3未満の場合はtotal_priceは0.9倍も四捨五入もしていないということになりますか?
madone99

2019/10/22 09:39 編集

ブラケットのある言語で書くと if (count >= 3) { total_price *= 0.9 } return round(total_price) のようになり、3以上の場合だけブラケットの中が実行されるという意味です。 pythonに戻ってお話しすると、インデントの中に入れると言うことは、他の回答者様も仰られているように、3未満のreturnが無くなるようになります。(ifがtrueの時だけ、returnされる)
vinakiyoshi

2019/10/22 09:45

3未満を四捨五入したくなければifの中にreturnを入れてしまっても問題ないですか?
madone99

2019/10/22 09:49 編集

total_priceを返す関数だと思うので、ifの中に入れるのであれば3未満の場合のreturnを考える必要があるのではないでしょうか。(3未満だと何も返さないとなるため)
guest

0

round(total_price) の値を、get_total_priceメソッドの戻り値とする、ということです

投稿2019/10/22 07:38

y_waiwai

総合スコア88038

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

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

0

returnはインデントしてifの中に入れた方が良いのではないでしょうか??

if文の条件を満たさないとき、return文を通らなくなるのでダメです。
ただしreturn文丸ごとでは無くround処理をifブロックに放り込むのは良いアイデアでしょう。

Python

1if count >= 3: 2 total_price *= 0.9 3 total_price = round(total_price) 4 5return total_price

投稿2019/10/22 07:37

LouiS0616

総合スコア35668

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

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

vinakiyoshi

2019/10/22 07:43

# countが3以上のとき、total_priceに0.9をかけてください if count>=3: total_price*=0.9 # total_priceを四捨五入して、returnしてください return round(total_price) この意味はcountが3以上でも、3未満でも四捨五入するという意味であってますか?
vinakiyoshi

2019/10/22 07:45

3以上の場合は0.9倍して四捨五入する。 3未満の場合は四捨五入だけする という認識でしょうか?
LouiS0616

2019/10/22 09:04

> countが3以上でも、3未満でも四捨五入するという意味であってますか? はい。
guest

0

ifの中に入れると、countが3未満の時のreturn処理が無くなってしまいます。
ということで、解釈は間違っています。

投稿2019/10/22 07:37

編集2019/10/22 07:40
otn

総合スコア85891

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

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

vinakiyoshi

2019/10/22 07:47

3未満でreturn処理がないということは、3未満の場合は「何もしない」つまり四捨五入しないという意味になるのでしょうか?
otn

2019/10/22 10:58

四捨五入とかは末節の問題で、「関数が何の値も返さない」という意味になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問