空飛ぶチンアナゴの統計解析日記

統計解析を嗜むチンアナゴのメモ帳です

pythonで割り算した時の型

paizaでだいぶあったまった事案があったので、あったまっているまとめておく。

コードチェックに通らない

paiza.jp
の「C:火山島」のコードチェックに通らない。
paiza.hatenablog.com
正答はpaizaにしては珍しく公開されていたので、これを見たんだけどイマイチ自分の書いた

# coding: utf-8
# 自分の得意な言語で
# Let's チャレンジ!!
num_order = int(input())

price_s, price_m, price_l = map(int, input().rstrip().split())

price_sum = 0

for i in range(num_order):
    order = input()
    if order == "S":
        price_sum += price_s
    elif order == "M":
        price_sum += price_m
    elif order == "L":
        price_sum += price_l
    elif order == "LL":
        price_sum += price_l*2
    elif order == "SS":
        price_sum += price_s/2

print(price_sum)

との違いがわからずなんか釈然としないままクリアだけはした。

/と//の違い

正答例との違いが/か//の違いで、//にしないとチェックに通らないみたいなので、色々と実験してみた

a = 10
b = 2

c = a / b
d = a // b

type()関数でそれぞれの型を調べてみるとa, b, dはintで返ってくるが、cはfloatで返ってくる。
表示は整数で返せとのことだったので、それはチェックに通らないわけである。

まとめ

/と//では返ってくる型が違うので、整数型での回答が必要な時は最初から//で割るか、int()で整数型に変換しましょう。
しょうもない落とし穴で延々と悩み続ける羽目になったのだわ。