読者です 読者をやめる 読者になる 読者になる

Psycho-Logic

Psychology, Programming, and occasional Rat.

Python3 DAY6:paizaスキルチェック「かまくらづくり」

Python3 paiza
今回の問題は
「標準入力で渡されるr1m(1辺の長さ)の立方体から、r2m分の立方体をくり抜いたときの体積m^3を出力せよ」
というもの。
(大雑把に説明すると、何が何やらわかりませんね…)
回答までにかかった時間は8分35秒。
コード自体はすぐに思いついたのですが、思いもよらぬところで時間を食いました。

 

最初に思いついたコード

 
input_lines = input()
volume = int(input_lines.split(" "))
print(volume[0]^3 - volume[1]^3)

 

1行目と2行目はいつもと同じなので、省きます。

 

今回のハイライト

 
print(volume[0]^3 - volume[1]^3)
 
これは「初学者あるある」の1つではないでしょうか。
立方体の面積の求め方は 1辺 * 1辺 * 1辺 、つまり 1辺^3 になりますね。
なので、volumeリストに格納されている各値を3乗して、本体のr1からくり抜く分のr2を引けばかまくらの体積m^3が求まります!
 
True
 
(算数としては。)
 
完全に失念していたのは、Python3において累乗の演算子 ^ ではないということ。
それに気づくまでに5分以上はかかりました。
どこをどう見ても、コードに誤りはないとしか思えなかったのですが、出力の値がやけに小さい。
(117であるべきところを7と出力)
 
ふとした瞬間に天明を受けて、
 

「累乗の演算子って ^ じゃない! ** だ!」

 
と無事気づくことができました。
 
今回はこれだけなのですが、躓きやすい段差ではないでしょうか。
 

参考サイト

・Python3を計算用途に活用する:http://d.hatena.ne.jp/pcjpnet/20090813/1250122208