- 締切済み
pythonの編集仕様のいろいろ
pythonのプログラミングを少し始めているのですが、以下のような問題に直面しました。一番最初にhello world! を表示するものです。 hello.pyを作ってpython hello.py とすると実行するようです。 hello.pyの内容ですが、あるサイト(以下の画像)では、 print "Hello, Wordl!" とありますが、私の環境では動かず、さらにサイトを検索して、 print ( "Hello, Wordl!" ) が正しいとのことで、こちらは問題なく動作しました。 また、このprintコマンドですが、編集画面で左詰めでないとダメで、コマンドの前の空白(インデント)があったら正しく動作しないとのことです。 このようなささいな違い、またプログラム編集上の作法の問題とかを見ると、この言語の習得は難しいように感じてしまいます。アルゴリズムの完全性とか、文法上の問題が完全にクリアになってもなぜが動作しない、という問題に直面しそうなのですが。自分の知らない何かのしきたりに違反しているという状態で、しかもそれが本質的でないように見える言語仕様(先のインデントがダメという問題)というのであれば、後からいろいろ出てきそうなのですが。例えば、”コマンドは第一文字が大文字でなければならない”とかです。数百、数千行のコードを書いたりすると、間違いの可能性のあるところが目に見えないところにいっぱいという感じがするのですが。バグフィックスというのは絶対に絶対に間違いない、と断言してそれでいてうっかりミスが見つかるわけです。”間違っているかもしれないな”じゃバグフィックスできません。 それでいて割と巷間ではpython人気という感じがしているのですが。 pythonのどこがいい、ということなのでしょうか。私が考えている困難を補う効用があるのでしょうか。 私の環境はanaconda 3.5です。バージョン毎にかなり違うのでしょうか。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ballville
- ベストアンサー率47% (233/487)
printについてはバージョンの差によものです https://postd.cc/the-key-differences-between-python-2-7-x-and-python-3-x-with-examples/ 言語規格のバージョンアップは有用で広く使われている言語ではよくあることで、例えばC言語のK&RとC11、Fortran66とFortran 2008などは、ほとんど別言語のような様相を呈しています。 インデントに関しては >本質的でないように見える言語仕様(先のインデントがダメという問題) というようなことではなくPython言語の本質部分(設計思想)と関わる部分です。 http://bugrammer.g.hatena.ne.jp/nisemono_san/20111203/1322839032 要は、インデントはプログラムの構造理解に有用だが、誤ったインデントのソースは見つけにくいバグを誘発する。それならいっそのことインデントを言語仕様に取り込んでしまえばいい、という設計思想です。
お礼
回答ありがとうございます。 解説サイトではどこかに対応バージョンを明示しているとは思いますが、拾い読みなどしていると分からない場合も多いと思いました。 インデントについては実施と関係なく、プログラムスタイルという美意識に訴えるような説明が従来の言語に対してされていたように思います。また、インデントしない方が見やすい場合もあると思うのですが。 例えば、 for i in range(0,2): for j in range(0,2): とかよりも、 for i in range(0,2): for j in range(0,2): の方は縦方向に同じ属性が並ぶので見やすいし間違いも見出しやすいと思うのです。私は従来後者でやっていましたが、Pythonではエラーになります。