最新記事は以下に作成しました。
BeautifulSoupライブラリの使い方
osモジュール,os.pathモジュールの使い方
Anacondaのインストール方法
#1 はじめに
Pythonプログラミング練習用に記事を作成しました。
#2 環境
VMware Workstation 15 Player上の仮想マシンを使いました。
仮想マシンの版数は以下のとりです。
[root@server ~]# cat /etc/redhat-release
CentOS Linux release 8.3.2011
[root@server ~]# uname -r
4.18.0-240.el8.x86_64
[root@server ~]# python3 -V
Python 3.6.8
#3 Hello world!
文字列を表示してみます。
なお、#
はコメント行を表します。
[root@server ~]# cat tp.py
#This line is a comment line.
print("Hello world!")
[root@server ~]# python3 tp.py
Hello world!
#4 変数
変数はアンダーバーを含む英数字からなる名前で表します。
最初の1文字はアンダーバーまたは英字でなくてはなりません。
[root@server ~]# cat tp.py
x1=111
print(x1)
_x=222
print(_x)
1x=333
print(1x)
数字で始まる1x
は変数として使用できないことがわかります。
[root@server ~]# python3 tp.py
File "tp.py", line 5
1x=333
^
SyntaxError: invalid syntax
#5 コマンドライン引数の取得方法
##5.1 各引数を求める方法
[root@server ~]# cat tp.py
import sys
print (sys.argv[0])
print (sys.argv[1])
print (sys.argv[2])
[root@server ~]# python3 tp.py 11 22
tp.py
11
22
##5.2 個数を求める方法
[root@server ~]# cat tp.py
import sys
argv = sys.argv
argc = len(argv)
print(argc)
[root@server ~]# python3 tp.py
1
[root@server ~]# python3 tp.py aa
2
[root@server ~]# python3 tp.py aa bb
3
#6 リスト、タプル、セット、辞書の使い方
##6.1 リスト
リストは、[...]
で表します。
他のプログラミング言語における「配列」に相当します。
任意の型(整数、浮動小数点数、文字列など)のデータを格納できます。
[root@server ~]# cat tp.py
fruits=['apple','lemon','peach']
print(fruits[0])
fruits[0]='grape'
print(fruits[0])
print(fruits[1:3])
print(fruits[2:])
[root@server ~]# python3 tp.py
apple
grape
['lemon', 'peach']
['peach']
##6.2 タプル
タプルは、(...)
で表します。
リストは要素の追加、削除が可能ですが、タプルは参照しかできません。
[root@server ~]# cat tp.py
fruits=('apple','lemon','peach')
print(fruits[0])
fruits[0]='peach'
タプルの場合、要素を書き換えようとすると、エラーが発生します。
[root@server ~]# python3 tp.py
apple
Traceback (most recent call last):
File "tp.py", line 3, in <module>
fruits[0]='peach'
TypeError: 'tuple' object does not support item assignment
##6.3 セット
セットは、順序と重複のないデータ構造です。
セットには要素の追加、削除はできますが、重複する要素は扱うことができません。
まず、set()
を使って要素を何も持たな空のオブジェクトを作成します。
その後、apple
,lemon
,apple
と要素を追加してみます。
[root@server ~]# cat tp.py
s=set()
s.add('apple')
print(s)
s.add('lemon')
print(s)
s.add('apple')
print(s)
apple
を2回追加しましたが、オブジェクトにはapple
が1つしか存在しません。
[root@server ~]# python3 tp.py
{'apple'}
{'apple', 'lemon'}
{'apple', 'lemon'}
##6.4 辞書
辞書は、{...}
で表します。
辞書はキーとバリューの組で構成されます。
ここでは、果物と値段を辞書として登録してみます。
[root@server ~]# cat tp.py
d = { 'apple':100, 'lemon':200 }
print(d['apple'])
print(d['lemon'])
print('--- 要素からキーとバリューを取り出す ---')
for k,v in d.items():
print(k, v)
print('--- 要素からキーを取り出す ---')
for k in d.keys():
print(k)
print('--- 要素からバリューを取り出す ---')
for v in d.values():
print(v)
[root@server ~]# python3 tp.py
100
200
--- 要素からキーとバリューを取り出す ---
apple 100
lemon 200
--- 要素からキーを取り出す ---
apple
lemon
--- 要素からバリューを取り出す ---
100
200
#7 制御文
##7.1 if, else, elif文
[root@server ~]# cat tp.py
import sys
a=int(sys.argv[1])
if a > 10:
print('big')
elif a >= 5 and a <= 10:
print('medium')
else:
print('small')
[root@server ~]# python3 tp.py 100
big
[root@server ~]# python3 tp.py 5
medium
[root@server ~]# python3 tp.py 0
small
##7.2 for文
###7.2.1 基本のループ処理
[root@server ~]# cat tp.py
for i in 1,10,100:
print(i)
[root@server ~]# python3 tp.py
1
10
100
[root@server ~]# cat tp.py
for c in 'abc':
print(c)
[root@server ~]# python3 tp.py
a
b
c
###7.2.2 rangeを使ったループ処理
[root@server ~]# cat tp.py
for i in range(3):
print(i)
[root@server ~]# python3 tp.py
0
1
2
###7.2.3 リストを処理するループ処理
[root@server ~]# cat tp.py
fruits=['apple','lemon','peach']
for name in fruits:
print(name)
[root@server ~]# python3 tp.py
apple
lemon
peach
###7.2.4 break文を使ったループ処理
break は最も内側のwhile,forのループ処理を抜けるときに使います。
[root@server ~]# cat tp.py
for i in range(10):
if i >= 2:
break
print(i)
[root@server ~]# python3 tp.py
0
1
###7.2.5 continue文を使ったループ処理
continueは最も内側のwhile,forのループ処理を繰り返すときに使います。
[root@server ~]# cat tp.py
for i in range(3):
if i == 1:
continue
print(i)
[root@server ~]# python3 tp.py
0
2
##7.3 while文
事前にループが何回繰り返されるの分からない時にwhileを使います。
[root@server ~]# cat tp.py
fruits = ['apple','lemon','peach']
len = len(fruits)
i=0
while i < len:
print(str(i) + ':' + fruits[i])
i += 1
[root@server ~]# python3 tp.py
0:apple
1:lemon
2:peach
#8 Python標準ライブラリの使い方
##8.1 組み込み関数の使い方
Pythonが提供する組み込み関数の使い方を説明します。関数一覧は以下を参照ください。
https://docs.python.org/ja/3.6/library/functions.html
###8.1.1 データの並べ替え(sorted)
[root@server ~]# cat tp.py
x = [4, 9, 1, 3, 0]
print(x)
y = sorted(x)
print(y)
y = sorted(x,reverse=True)
print(y)
[root@server ~]# python3 tp.py
[4, 9, 1, 3, 0]
[0, 1, 3, 4, 9]
[9, 4, 3, 1, 0]
###8.1.2 最大、最小値の求め方(min,max)
[root@server ~]# cat tp.py
x = [4, 9, 1, 3, 0]
min=min(x)
print(min)
max=max(x)
print(max)
[root@server ~]# python3 tp.py
0
9
###8.1.3 オブジェクトの長さを求める方法(len)
[root@server ~]# cat tp.py
x=len('abcde')
print(x)
x=len(['apple','lemon','peach'])
print(x)
[root@server ~]# python3 tp.py
5
3
##8.2 モジュールの使い方
Python標準ライブラリには、組み込み関数以外に多くのモジュールが登録されています。
詳細は、以下のページを参照ください。
https://docs.python.org/ja/3.6/library/
###8.2.1 datetimeモジュールの使い方
[root@server ~]# cat tp.py
import datetime
now = datetime.datetime.now()
print(now)
[root@server ~]# python3 tp.py
2021-04-03 20:43:34.993347
###8.2.2 timeモジュールの使い方
指定した時間、プロセスをスリープしてみます。
[root@server ~]# cat tp.py
import time
time.sleep(3)
スクリプトを実行します。3秒間スリープしていることがわかります。
[root@server ~]# date; python3 tp.py; date
2021年 4月 3日 土曜日 20:57:18 JST
2021年 4月 3日 土曜日 20:57:21 JST
###8.2.3 subprocessモジュールの使い方
Pythonの中から外部のコマンドを実行する場合、subprocessというモジュールを使います。
[root@server ~]# cat tp.py
import subprocess
dir = input("Please input dir name:")
p = subprocess.run(args=["ls","-l", dir], stdout=subprocess.PIPE)
print(p.stdout.decode('utf-8'))
print("retcode:", p.returncode)
[root@server ~]# python3 tp.py
Please input dir name:/usr/local/bin
合計 39712
-rwxr-xr-x. 1 root root 10763104 3月 18 22:10 cmake
-snip-
#9 自作関数の使い方
##9.1 基本的な使い方
my_print
という名前の関数を作成します。my_print
は文字列を出力するだけの関数です。
そのあと、my_print
を呼び出します。
[root@server ~]# cat tp.py
def my_print():
print('Hello World')
my_print()
[root@server ~]# python3 tp.py
Hello World
##9.2 引数、戻り値の使い方
[root@server ~]# cat tp.py
def my_add(x, y):
sum = x + y
return sum
x = my_add(1,5)
print(x)
[root@server ~]# python3 tp.py
6
##9.3 戻り値として文字列を返す方法
[root@server ~]# cat tp.py
def my_print():
return 'abcde'
str=my_print()
print(str)
[root@server ~]# python3 tp.py
abcde
#10 ファイルを読み込む方法(import)
##10.1 同じディレクトリのファイルを読み込む方法
tp.pyからcommon.pyを読み込んでみます。
[root@server ~]# cat tp.py
import common
common.my_print()
[root@server ~]# cat common.py
def my_print():
print('Hello World')
[root@server ~]# python3 tp.py
Hello World
##10.2 別ディレクトリのファイルを読み込む方法
testディレクトリの下に同じ階層のsrc,incディレクトリがあります。
test ---+--- src
| tp.py
|
|
+--- inc
common.py
[root@server src]# cat tp.py
import sys
sys.path.append('../inc')
import common
common.my_print()
[root@server inc]# cat common.py
def my_print():
print('Hello World')
[root@server src]# python3 tp.py
Hello World
#11 テキストファイルの読み書き方法
ファイルには、テキストファイルとバイナリファイルがあります。
ここでは、テキストファイルに対する読み書きを説明します。
##11.1 読み出す方法(r)
[root@server ~]# cat tp.py
f=open('test.txt','r')
text=f.read()
print(text)
f.close()
[root@server ~]# cat test.txt
12345
abcde
[root@server ~]# python3 tp.py
12345
abcde
##11.2 書き込む方法(w)
[root@server ~]# cat tp.py
f=open('test.txt','a')
f.write('aaa\n')
f.close()
[root@server ~]# python3 tp.py
[root@server ~]# cat test.txt
aaa
[root@server ~]# python3 tp.py
[root@server ~]# cat test.txt
aaa
##11.3 追記する方法(a)
[root@server ~]# cat tp.py
f=open('test.txt','a')
f.write('aaa\n')
f.close()
[root@server ~]# python3 tp.py
[root@server ~]# cat test.txt
aaa
[root@server ~]# python3 tp.py
[root@server ~]# cat test.txt
aaa
aaa
#12 外部ライブラリの使い方
外部ライブラリは、ここよりインストールする。
#14 デバッグ方法
次のソースコードをデバッグしてみます。
[root@server ~]# cat tp.py
for i in range(10):
if i >= 2:
break
print(i)
デバッガは、次のようにして起動します。
[root@server ~]# python3 -m pdb tp.py
> /root/tp.py(1)<module>()
-> for i in range(10):
(Pdb)
l
コマンドを使って、現在実行中の行を表示してみます。
現在は1行目を実行していることがわかります。
[root@server ~]# python3 -m pdb tp.py
> /root/tp.py(1)<module>()
-> for i in range(10):
(Pdb) l
1 -> for i in range(10):
2 if i >= 2:
3 break
4 print(i)
[EOF]
次にn
コマンドで1行実行してみます。
そのあと、l
コマンドで現在実行中の行を表示してみます。
1行進んで、2行目を実行していることがわかります。
(Pdb) n
> /root/tp.py(2)<module>()
-> if i >= 2:
(Pdb) l
1 for i in range(10):
2 -> if i >= 2:
3 break
4 print(i)
[EOF]
次に、pp
コマンドを使って変数i
の値を確認してみます。
変数i
の値が0
であることがわかります。
(Pdb) pp i
0
b
コマンドで3行目にブレークポイントを設定してみます。
(Pdb) b 3
Breakpoint 1 at /root/tp.py:3
ブレークポイント一覧を確認してみます。
b
コマンドを実行すると、さきほど設定したブレークポイントが
表示されることがわかります。
(Pdb) b
Num Type Disp Enb Where
1 breakpoint keep yes at /root/tp.py:3
c
コマンドを実行して、ブレークポイントまで一気に処理を進めてみます。
0
,1
と表示され、breakで停止していることがわかります。
(Pdb) c
0
1
> /root/tp.py(3)<module>()
-> break
l
コマンドを実行して状況を確認してみます。
ブレークポイントで停止していることがわかります。
(Pdb) l
1 for i in range(10):
2 if i >= 2:
3 B-> break
4 print(i)
[EOF]
設定したブレークポイントを削除します。
cl
コマンドにはブレークポイント番号(num
)を指定します。
(Pdb) cl 1
Deleted breakpoint 1 at /root/tp.py:3
ブレークポイントを確認します。
ブレークポイントが削除されたことがわかります。
(Pdb) b
(Pdb)
プログラムを再度デバッグするにはrestart
コマンドを実行します。
(Pdb) restart
Restarting tp.py with arguments:
tp.py
> /root/tp.py(1)<module>()
-> for i in range(10):
q
コマンドを実行して、デバッガを終了します。6
(Pdb) q
[root@server ~]#
なお、h
コマンドを実行すると、コマンド一覧が表示されます。
(Pdb) h
Documented commands (type help <topic>):
========================================
EOF c d h list q rv undisplay
a cl debug help ll quit s unt
alias clear disable ignore longlist r source until
args commands display interact n restart step up
b condition down j next return tbreak w
break cont enable jump p retval u whatis
bt continue exit l pp run unalias where
Miscellaneous help topics:
==========================
exec pdb
#Z 参考情報
Python チュートリアル
とほほのPython入門
たった1日で基本が身に付く! Python超入門
Python別ファイルを読み込む方法を現役エンジニアが解説【初心者向け】
[Python入門]リストの基本
処理を一時停止!Pythonでsleepを使う方法【初心者向け】
[Pythonチートシート]文字列/リスト/タプル/辞書/集合の操作編
Pythonでモジュールを作成する方法