pythonについて、つまづいていたことが解決したので、覚書の意味も含めて書いておこうと思う。
ことの発端は、AOJの問題を解いて練習していたときのこと。
最初のうちはサイトの中でコンパイルが通るかどうかだけで、正解不正解を判断していたのだが、それでは効率が悪いと思い、一度自分のPCでコンパイルをしてみて、そのうえで提出する方針に切り替えた。
切り替えて最初の問題。
以下のコードを実行しようとするにもsyntax errorがでる。
while true: H,W = map(int,raw_input().split()) if W==0 and H==0 : break print '#' * W + '\n' print ('#'+ '.'*(W-2)+ '#'+'\n')*(H-2) print '#'*W + '\n'
出てくるエラーはこれ。
print '#' * W + '\n ^
いろいろ原因を探るもわからず。
『初めてのpython 第3版』の文字列の章も見てみるが、特にprint文や文字列の扱いは間違っていないように見える。。。そんな感じで、行き詰っていた。
しかし、もっとよく調べてみると書いてあった。
ver3.0から仕様が変わったらしい。
「はじめに」の14ページからの「python3.0からの仕様変更について」の部分を順番に読んでいくと、
printはステートメントではなく関数になり機能が増える。print x, yではなくprint(x, y)と書くようになる。と記述がある。
あるいは、本文の第10章[pythonのステートメント」218ページの脚注に
python 3.0では、printとexecはステートメントではなく関数になる予定です。とある。
それを踏まえて、pythonインストール時についてきたマニュアルもみてみる。
マニュアルを開くには例えば以下の方法で開く。
-
デスクトップのスタートボタンを開き、「すべてのプログラム」を表示すると、その中に「python x.x」のフォルダがある(自分はpython3.3だったので、python3.3というフォルダ)。
その中の、「Python manuals」というファイルがある。
-
あるいは、デスクトップのマイコンピュータのアイコン(自分はwindows7なので。XPとかの人はコンピュータというアイコン)を開き、C:のドライブを開き、その中の「Pythonxx」というフォルダを開き、その中の「Doc」フォルダを開き、その中の「pythonxxx.chm」というファイルを開く。
開いたら、画面の左側の「What's New in Python」の階層を開き、「What's New in Python3.0」をクリック。
少し画面を下にスクロールすると、「Print Is A Function」とという見出しがあり、その旨の記述がある。
ということで、print "Hello world" ではダメで、print("Hello world")と書くらしい。
0 件のコメント:
コメントを投稿