0
0

【paiza】残り物の量 (paizaランクC相当) 問題をPython4行で実行・解説

Last updated at Posted at 2024-08-09

本投稿の趣旨

以下の問題をpythonでコーディングの解説を行います。

問題

あなたはスーパーマーケットを経営しています。
今、ある生鮮食品を m[kg] 仕入れました。
とても新鮮だったため、生のまま販売したところ、
m[kg] のうち p[%] を売ることができました。
次にその売れ残りをすべてお惣菜にして販売したところ、
売れ残った量のうち q[%] が売れました
さて、m[kg] 仕入れたこの食品は最終的に何kg 売れ残ったでしょうか。
ただし、生鮮食品をお総菜にする際は、量を変えることなく調理できるものとします。

image.png

コードの要点

  1. 3つの整数m,p,qを受け取る ←おそらくここが1番難点
  2. 生鮮食品をp%売った後の残りの量を計算
  3. 売れ残りを惣菜にしてq%売った後の残りの量を計算
  4. 最後に売れ残った量を表示

コード全体 (4行しかないが…)

# 1.m,p,qを受け取る
m, p, q = map(int, input().split())

# 2.生鮮食品の売れ残りを計算
seisen_nokori = m * (1 - p / 100)

# 3.惣菜の売れ残りを計算
souzai_nokori = seisen_nokori * (1 - q / 100)

# 4.売れ残った量を出力
print(float(f'{souzai_nokori:.4f}'))

コードの解説

1. m,p,qを受け取る

m, p, q = map(int, input().split())

このコードを実行すると入力欄が表示されます。
そこに任意の m,p,q を入力します。

  • input() は操作ユーザーからの入力を受け取る関数です。
    例: 「1 80 40」→ ["1 80 40"]

  • split() は上記input関数で得た文字列をスペースで分解します。
    例:["1 80 40"] → ["1", "80", "40"]

  • map(int, ...) は、このリストの各要素を整数 (int) に変換し、m, p, q の3つの変数に順番に割り当てます。

上記の結果として、m=100、p=20、q=30 という整数値を持ちます。

2. 生鮮食品の売れ残りを計算

seisen_nokori = m * (1 - p / 100)

p / 100 は「生鮮食品の売れた割合」、1 - p / 100 は「生鮮食品の売れ残った割合」、
m * (1 - p / 100) は「売れ残った惣菜量」を計算します。
例えば、m = 1 , p = 80 なら、1 * 0.8 で 0.2kg が売れ残ります。

3. 惣菜の売れ残りを計算

souzai_nokori = seisen_nokori * (1 - q / 100)

1 - q / 100 は「惣菜の売れ残った割合」
seisen_nokori * (1 - q / 100) は「惣菜の売れ残り量」を計算します。
例えば、seisen_nokori=0.2 , q = 40 の場合、0.12kg が売れ残ります。

4. 売れ残った量を出力

print(float(f'{souzai_nokori:.4f}'))

最後に結果の出力です。

ここでは Python のフォーマット文字列 (f-string) を使っています。
souzai_nokori の値を小数点以下4桁まで表示する形式でフォーマットします。
:.4f はフォーマット指定子で、: の後の .4f は「小数点以下4桁まで表示し、それ以上の桁は四捨五入する」という意味です。
例: souzai_nokori が 0.333333 の場合、f'{souzai_nokori:.4f}' は '0.3333' という文字列で表示します。

また、f'{souzai_nokori:.4f}' の結果は文字列 ('0.3333') ですが、それを float 関数を使って浮動小数点数に変換します。
この変換により、末尾の余分なゼロが削除されます。
例: '0.1200' という文字列が float('0.1200') によって 0.12 という浮動小数点数に変わります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0