果物の税込価格を返すプログラムを作成したい
<前提>
・辞書fruits_priceはキーに果物の名前、値に価格を持っている
・変数taxは税率(%)
・関数get_priceは指定した果物の名前の価格を辞書fruitsの中から取得し、税込価格を返す
・辞書fruitsの中に名前が存在しない場合はNoneを返す
・税込み価格は価格 + 価格*税率/100の答えを小数点以下を切り捨てたもの
・関数get_priceがNoneを返さなかった場合、果物の名前と価格を表示し、Noneの場合は登録されていない旨を表示する
先に正解を記載します
python
1fruits_price = {'りんご': 100, 2 'みかん': 50, 3 'もも': 300} 4 5tax = 8 6 7def get_price_in_tax(fruit_name): 8 if fruit_name not in fruits_price: 9 return 10 return int(fruits_price[fruit_name] * (tax / 100 + 1)) 11 12 13 14def main(): 15 # 今日仕入れた果物 16 today_fruits = ['ぶどう', 'りんご', 'みかん'] 17 for fruit in today_fruits: 18 fruit_price = get_price_in_tax(fruit) 19 if fruit_price is not None: 20 print('{}の税込価格は{:,d}円です'.format(fruit, fruit_price)) 21 else: 22 print('{}の価格は登録されていません'.format(fruit)) 23 24 25if __name__ == '__main__': 26 main() 27
よく分からない点①
get_price_in_taxメソッド内で、税込価格を返すのはわかりますが、
if分の条件分岐でfruits_priceの中にfruit_nameが入っていなかったら
returnするものって何なのでしょうか?
よく分からない点②
mainメソッド内の条件分岐で、
if fruit_price is not None:
の意味は fruit_priceがNone(偽)じゃなければ
税込価格を出力する、という意味合いだと思いますが、
なぜこのような遠回しな言い方をしなければいけないのかわかりません。
そもそもNoneの性質がよくわかっておらず、なぜ==や!=ではなくて、
is や is notを使うのか、よくわかっていません。
下のように記述した結果、違う出力結果が出てきました。
python
1fruits_price = {'りんご': 100, 2 'みかん': 50, 3 'もも': 300} 4 5tax = 8 6 7 8def get_price_in_tax(fruit_name): 9 for frupri in fruits_price.values(): 10 includetax = frupri * (100 + int(tax)) / 100 11 return int(includetax) 12 13 14def main(): 15 # 今日仕入れた果物 16 today_fruits = ['ぶどう', 'りんご', 'みかん'] 17 for fruit in today_fruits: 18 fruit_price = get_price_in_tax(fruit) 19 if fruit in fruits_price: 20 print('{}の税込価格は{:,d}円です'.format(fruit, fruit_price)) 21 else: 22 print('{}の価格は登録されていません'.format(fruit)) 23 24 25if __name__ == '__main__': 26 main() 27
初歩的な質問かも知れませんが、教えていただけるとありがたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/21 14:21
2018/08/21 14:33
2018/08/22 10:09