search
LoginSignup
1
Help us understand the problem. What are the problem?

posted at

updated at

『Python1年生』で勉強中(その1)

この記事について

人工知能とかスクレイピングとかいうことばが気になったので、
だらだら調べていたら『Python1年生』(以下、書籍)という初心者向けの本に行き当たったので、その勉強結果や気になったことの記録を残そうかと思います。

書籍の内容自体には(いろいろ権利とかあるでしょうから)なるべく触れません。
バージョン差異などで試してみたら違っていた!というようなところとか、個人的に気になった点を挙げるにとどめようと思います。

また、言語はJavaScriptをかろうじて使える(基本的な構文が分かるくらい)なので、当たり前なことや見当はずれなことも書いてそうですがご容赦ください、という言い訳をしておきます。
その分、なるべく誤解や曖昧な箇所が無いようには気を付けるつもりです。

あと、タイトルに「(その1)」と付けているように、今後も続けていくつもりです。
続かなかったら……
各回の記事の品質は保証できかねますが、誤り等あれば随時直したいと思います。また言い訳しました。
Qiita自体も慣れてないので、変な書き方してたらそれもすみません。直します。

前置きはここまで。我ながらだらだら書きました。

実行環境

OS・MW バージョンなど
OS Windows 10 Pro 21H2 19044.1586
Python 3.10.4
IDLE 3.10.4

やったこと

2022/4/10現在の最新バージョンである3.10.4をインストールしました。
今のところ(p58までの時点で)、書籍の内容から大きく外れたところはありませんでした。※Windowsの場合
インストールは「Install Now」クリック後、約1分30秒ほど経過後に完了。

インストール後、スタートメニューから「IDLE(Python 3.10 64-bit)」を起動し、書籍に記載されているサンプルプログラムを実行してみました。

気になったところ

IDLEについて

  • IDLE上で↑キーを押すと、普通にカーソルが上の行に移動しました。
    (直前に入力したコマンドの履歴が表示されるのを期待してた……)

  • IDLEの「Run Module」のショートカットはF5。これは期待通り

  • ファイルオープンのダイアログで、最初に表示されるされるフォルダを変更したいと思いましたが「Options」→「Configure IDLE」を見ても、それらしいフォルダ指定の設定が見つかりません。ので諦めました。

Pythonについて

  • 返り値が循環小数になるようにすると、小数点以下は16桁まで表示されました。
    16桁までというのは、Python自体の仕様なのかIDLEの仕様なのか……(的外れな推測かも……)
    後で覚えてたら調べようかなと。
print(1/3)
0.3333333333333333
  • あえて、文字列の最初と最後のリテラルを間違えてみました。
    エラーにはなりますが、書籍p41に例示されているエラーメッセージとは異なった文言でした。
    バージョンの違いによるものですかね、たぶん。
print("hello')
SyntaxError: unterminated string literal (detected at line 1)
print('hello")
SyntaxError: unterminated string literal (detected at line 1)
  • 冒頭に書いた通り、私、JavaScriptは初心者向けの書籍に載っているくらいなら分かる(つもり)なんですが、JavaScriptと違って、末尾に「;」とか要らないんですね。
    簡潔ですが慣れないとちょっと気になる……

  • 書籍本文で「インデントは取っちゃダメ」という旨を言われたので取ってみました。
    以下、「1.」~「3.」まで3パターンを試してみた結果です。

1. サンプルプログラム(p56, 以下同じ)の、forに続く2行のインデントを完全に除去
⇒ SyntaxErrorになりました。

expected an indented block after 'for' statement on line 3

2. サンプルプログラムの、2行目のインデントを1行目よりも更に1段深くしてみる
⇒ これもSyntaxErrorになりましたが、種類が違いました。

unexpect indent

3. サンプルプログラムの、1行目のインデントを2行目よりも更に1段深くしてみる
⇒ これもまた違うSyntaxErrorに。

SyntaxErrorunindet dows not match any outer indentation level

IDLEでは、プログラムの実行時にエラー箇所がオレンジ色になるようですけど、「1)」と「2)」とではオレンジ色になった箇所が異なったので、それぞれ別の箇所でエラーになっているんですかね。
エラーも本当は深掘りして調べて把握すべきなんでしょうが、とりあえずこの辺で。

余談

すぐ上で使った番号付きリストは、QiitaのMarkdown記法に則った形で書いたつもりだったんですが、プレビューを見ると全部「1.」になってました。
ので、取り急ぎ「数字.」の後のスペースを全角にして乗り切ってます。
たぶん間にコードブロックを挟んでいるのが原因でしょうか。ひとまずこのままにします。

参考書籍

『Python1年生』(森 巧尚 著、翔泳社)初版第6冊 p1~p58

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
1
Help us understand the problem. What are the problem?