Python
Python(パイソン)はプログラミング言語のひとつです。オブジェクト指向でスクリプト的に記述できるプログラミング言語です。 また、コンパイルの必要がないインタプリタです。
また、ほとんどのUNIX/LINUXに搭載されているので、それらのOSでは特別なインストール作業をしないでも、すぐに使用することができます。
目次
目次[編集]
初心者むけの単元[編集]
- Python/基本事項
(2017-07-18) (コマンド「python3」,print 、数値の計算) - Python/変数と代入
(2017-07-26)(a=a+1について, 予約語、大文字と小文字の区別) - Python/数値入力と文字入力と出力表示
(2017-07-26)(input(), int(), float() ) - Python/条件分岐と繰り返し
(2017-07-26)(if, else, for, while) - Python/リスト
(2017-07-26)(※ ほかのプログラミング言語でいう「配列」のようなもの) - Python/ファイルの書き込みと読み込み
(2017-07-27)(※ open, close, "r"と"w"、write, readline, ) - Python/例外処理
(2017-07-29)(try, except, finally, 複数の例外の場合分け) - Python/関数
(2017-07-29)(def、引数、ローカル変数、id()、戻り値、キーワード引数) - Python/モジュールのインポート
(2017-07-29)(math モジュール, random モジュール,)
中級者むけの単元[編集]
- Python/クラス
(2017-11-09)(クラス定義, __init__() , self ,)
整理作業中[編集]
- Python/整理中 (複素数、正規表現、HTTPクライアント、JSON、pass)
エスケープシーケンス[編集]
たとえばprint()関数で、「こんにちわ」と表示させたい場合なら
print("こんにちわ")
と書きました。
でも、もし「"」そのものを表示したい場合、いったい、どうすれば良いのでしょうか?
答えを先にいうと、
print("\"")
と記述します。
つまり「"」の直前に「\」(バックスラッシュ)を追加して「\"」と記述すると、文字列としての「"」になります。
このような方法をエスケープシーケンスといいます。
ほかにも、「\n」とすることにより、改行を指定できます。
また、バックスラッシュ自身を表示したい場合には「\\」にします。
| 関数 | 内容 |
|---|---|
| \" | ダブルクオート 「"」 |
| \n | 改行 |
| \\ | バックスラッシュ自身 「\」 |
例
>>> print("\"")
"
>>> print("\\")
\
>>> print("あ\nいうえ")
あ
いうえ
| 関数 | 内容 |
|---|---|
| \' | シングルクオート 「'」
|
| \r | キャリッジリターン |
| \t | 水平タブ |
>>> print("あ\tいうえ")
あ いうえ
print文[編集]
# 「ようこそ」 と出力
print("ようこそ")
#から行末まではコメントです。文字列の出力はprint()を使います。Python 2まではprintは文でしたが、Python 3以降は演算子となったため、かっこが必須となります。なお、Pythonでは文末に;を付ける必要はありません。
文字列は""で囲んでも''で囲んでも同じ意味であり、エスケープ文字の取り扱いに違いはありません。
GUIプログラム[編集]
GUIプログラムに対応しているモジュールをインポートする。
tkinterが、対応している。
linuxの場合、例えば(fedoraの場合なら、)
sudo dnf install python3-tkinter
のようにコマンド実行する。
まず、GUIプログラム用の該当モジュールを、OS自体にインストールしてないと、プログラム中でtkinterモジュールを使えない。
標準状態ではtkinterはOSに入ってないので、自分で追加インストールでtkinterを入れる必要がある。
その後、pythonプログラムで、
import tkinter
root = tkinter.Tk()
root.title("タイトル")
root.mainloop()
のようにすると、GUIウィンドウが自動的に表示される。ウィンドウの大きさは、自動的に設定される。
ウィンドウのタイトルは、root.title("◯◯")の、二重引用符""の中の文字列である。
なんで「root」なのかと言っても、tkinterでは、こういう決まりなので、従うしかない。
「mainloop()」を最後に書くことで、実際にGUI対象物を作成表示する作業が実行される。
もし、mainloop()を書いてないと、プログラムを実行しても、なにも表示せずに終了する。
備考[編集]
- インデントについて
Pythonのブロックはスペース4つのインデントによって表されます(オフサイドルールといいます)。
- pythonについて
pythonは、Googleなどの企業のみならず、MITの初年度のプログラミングの授業でも採用されています。英語圏ではRubyやPerlよりも普及しています。
Pythonは1990年にグイド・ヴァンロッサムによって作られました。誰が書いても同じソースコードになるように(違う目的のコードは違う見た目になるように)設計されており、常に読みやすいプログラムを書くことができます。教育用プログラミング言語としても秀逸です。
中級者むけの内容[編集]
テキストファイルの読み込みについて[編集]
テキストファイルの読み込みは、「readline()」のほかにもある。「read()」で、ファイル全体を読みこめる。 また、「readlines()」で、各行ごとをリストにして、読みこめる。
ただし、「read()」や「readlines()」を実行すると、ファイルの行数が多い場合には、メモリを大量に使用することになるので、あまり使用しないほうが安全である。
- readlines()
語尾が複数形になっている readlines() を使うと、テキスト全部を読み込むことができる。なお、readlines()では、テキストはリストとして読み込まれる。
ire = open("tukuru.txt", "r" )
print("1回目: ",ire.readlines())
print("2回目: ",ire.readlines())
print("3回目: ",ire.readlines())
print("4回目: ",ire.readlines())
ire.close()
上記のコードを実行すると、
1回目: ['あいうえお\n', 'かきくけこ\n', 'さしすせそ\n'] 2回目: [] 3回目: [] 4回目: []
のように表示される。
上級者むけの内容[編集]
他の文法[編集]
コマンド端末によるインタラクティブモードでも、関数を使用できます。
>>> def fib(n):
if n <= 1:
return n
else:
return fib(n - 1) + fib(n - 2)
...
>>> fib(10)
55
配列[編集]
配列はarray = ['A', 'B', 'C']のように表しarray[0]、array[1]、array[2]のようにアクセスしますが、PythonではJavaScriptにも輸出された配列の内包表記をサポートしています。これは配列の中にfor-in文とイテレータを書くことができ、mapの役割を果たすものです。
>>> [ i for i in range(10) ] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
配列の内包表記は非常に強力です。これを使ってAからZまでの文字を要素に含む配列を作るには次のようにします。chr()は文字コードを文字に、ord()は文字を文字コードに変換します。なお、十六進法の整数リテラルは0xdeadbeefのように "0x" から始まります。3735928559Lのように末尾にLの付く整数リテラルはlong型です。
>>> [ chr(i) for i in range( ord('A'), ord('Z') + 1 ) ]
['A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N',
'O', 'P', 'Q', 'R', 'S', 'T', 'U',
'V', 'W', 'X', 'Y', 'Z']
内包表記はジェネレータと同じくPythonの個性的な言語機能の一つです。これらの習得には感覚的な部分、すなわち慣れもあるので、たくさんのコードを書いては動かし、動かしては書いて覚えてください。
辞書[編集]
辞書は連想配列でありオブジェクトです。
>>> { 'zero': 0, 'one': 1, 'two': 2 }
{'zero': 0, 'two': 2, 'one': 1}
タプルは対でありリストです。
>>> ( 'zero', 0, 'one', 1, 'two', 2 )
('zero', 0, 'one', 1, 'two', 2)
ところで、文字列は配列と同じようにアクセスすることができます。配列のスライスはブラケットの中で:演算子を使用します。
>>> "Hello, world"[7:] 'world'
printf()[編集]
printf()はprint(format % (arg0, arg1, ..., argN))という書式です。
>>> print("%d.%d.%d" % (2, 6, 4))
2.6.4
なお、Python2.x系のバージョンならばprint content という書式も使用可能です。
>>> print "python" python >>> a=50 >>> print a 50