ペネトレーションしのべくん

さようなら、すべてのセキュリティエンジニア

【写経】『みんなのPython 第3版』 Chapter 01 プログラミング言語Python

概要

『みんなのPython 第3版』から、「Chapter 01 プログラミング言語Python」のサンプルコードを写経する。 今更確認するまでも無いようなことがほとんどだけれど、やるからには最初からやらないと気持ち悪い性分。自分でも損だと思う。

01-01 Pythonの魅力

Pythonは覚えやすい

  • 予約後が少ない。
    • ルールがシンプルになる。

Pythonは使いやすい

  • DropboもPythonで書かれている。
  • ライブラリが豊富。

Pythonには将来性がある

  • Pythonでは誰がプログラムを書いても同じような書き方になるように工夫されている。
    • プログラムの書き方に曖昧さを許さない。
    • 可読性を見込んだルール。
    • 後方互換性を考慮したバージョンアップ。

01-02 Pythonの入手とインストール方法

01-03 Pythonプログラミングの基本

キーボードからコードを入力する

  • print()命令の実行
>>> print("スパム美味しい!")
スパム美味しい!
>>>
  • print()命令を記述しなくても同じ結果に
>>> print(1 + 1)
2
>>> 1 + 1
2
>>>

Pythonのプログラムを実行する

  • 1行目のコード(おまじない)
    • 以前Macで試した時はうまくいったが、ImportErrorが起きるので割愛。一度動いてるところ見てるし。
>>> from turtle import *
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/bef/.pyenv/versions/anaconda3-4.1.0/envs/py3/lib/python3.5/turtle.py", line 107, in <module>
    import tkinter as TK
  File "/home/bef/.pyenv/versions/anaconda3-4.1.0/envs/py3/lib/python3.5/tkinter/__init__.py", line 35, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
ImportError: libX11.so.6: cannot open shared object file: No such file or directory
>>>

オブジェクトとメソッド

  • 入れ物に文字列を入れる
    • nameのような入れ物を変数と呼ぶ。
    • 入れ物にデータなどの中身を入れることを代入と呼ぶ。
    • ピカソの本名は本人ですらきちんと覚えておらず、諸説あるらしい。
>>> name = "Pablo Diego Jose Francisco de Paula Juan Nepomuceno Crispin Crispiniano de la Santisima Trinidad Ruiz Blasco Picasso y Lopez"
>>>
  • 入れ物の中身を表示する
>>> print(name)
Pablo Diego Jose Francisco de Paula Juan Nepomuceno Crispin Crispiniano de la Santisima Trinidad Ruiz Blasco Picasso y Lopez
>>>
  • Picassoが何文字目かを確認する
    • データ(nameの中に入っているPiccasoのフルネーム)と命令(後述のindexなど)をセットで持つものをオブジェクトと呼ぶ。
    • 命令のことをメソッドと呼ぶ。
>>> name.index("Picasso")
109
  • いろいろな文字列メソッド
# 英字を小文字に変換する
>>> name.lower()
'pablo diego jose francisco de paula juan nepomuceno crispin crispiniano de la santisima trinidad ruiz blasco picasso y lopez'
>>>

# 小文字のoが何回使われているか調べる
>>> name.count('o')
10
>>>
  • 文字列から直接メソッドを使う
    • (変数に格納していない)単なる文字列の定義も、オブジェクトとして機能する。
    • Pythonで扱うデータは、全てオブジェクトである。
>>> "ABCDE".lower()
'abcde'
>>> "ABCDE".index('C')
2
>>>

プログラムをファイルに書く

  • エディタ
    • 今のところVimを使っている。
  • UTF-8エンコード
    • 自分が書くときは単に「# encoding: utf-8」とするが、「# coding: -- utf-8 --」みたいにオシャレな書き方する人もいてオシャレだなと思う。
  • LinuxMacOS Xスクリプトを直接起動する
    • スクリプトの1行目にシェバン(#!/usr/bin/env python3みたいなやつ)を書く。
    • 実行権限を与える。

エディタを選ぶ

  • オートインデント
  • 日本語が扱える
  • インデントに空白文字を使うよう設定できる
    • ソフトタブのこと?
    • Pythonは4つの空白を1つのインデントとする。

エラーが起こったら

メモ

  • 考えながら写経すること。