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()で整数型に変換しましょう。
しょうもない落とし穴で延々と悩み続ける羽目になったのだわ。