Python勉強会

2018/5/15 通信処理ネットワーク研究室 河田直樹

お品書き

0-1. Pythonを学ぶ

プログラミング言語にはいろいろあるが,今回はラズパイでPythonを学んでもらう.

Pythonとは欧米を中心とした,海外で人気のオブジェクト指向型スクリプト言語だ.

言語発展の経緯,文法上の特徴から初心者にも扱いやすい言語と言われている.

しかしながらGoogle・Yahoo・Dropboxなどに代表される有名企業でも利用されていて,初心者にも優しいシンプルさと,大手企業でも採用される十分な奥深さを兼ね備えた言語であると言える.

Pythonでのプログラム実行方法

Pythonでプログラムを実行するには主に以下のやり方で行う.

今回の説明ではインタプリタで実行例を示す.

インタプリタで実行する方法

インタプリタは以下のコマンドを入力することによって開始できる.

$ python

これでプログラムを書き込める状態になる.

例でプログラムを打ち込んでみる.

>>> print "Hello World"
Hello World

このように即座に入力したプログラムに対する処理が行われる.

ファイルから実行する方法

ファイルからは以下のコマンドを入力することでプログラムが実行される.

$ python [ファイル名] 

予め以下のプログラムを記述したファイルtest.pyを用意する.

print "Hello World"

そしてtest.pyファイルをPythonで実行すると以下のようになる.

$ python test.py
Hello World

このようにプログラムを実行することができる.


Pythonの基礎的な構文

Pythonの基本的な構文の使い方をいくつか紹介する.

print文

print文はprint'文字列'またはprint"文字列"のように使用する.

「"」や「'」を使わずに以下のように数値を入れれば計算結果を出力することもできる.

>>> print "1+2"
1+2
>>> print 1+2
3

変数

1文字目は英文字かアンダーバー(_)

2文字目以降は英数文字かアンダーバー

予約語は使用できない.予約語は以下の通り

[and, del, for, is, raise, assert, elif, from, lambda, return, break, else, global, not, try, class, except, if, or, while, continue, exec, import, pass, yield, def, finally, in, print]

大文字と小文字は区別される.

リスト(配列)

配列のようなもので,型が同じものをまとめるときに使う.

添え字は0からスタート

以下のように代入やアクセスをする.

>>> list = [2014,2015,2016,2017]
>>> print list
[2014, 2015, 2016, 2017]
>>> print list[3]
2017

文字列と数値

文字列は「'」(シングルクォーテーション)と「"」(ダブルクォーテーション)の両方で表現できる.

str()int()で以下のように文字列から数値へ,またその逆へと変換することができる.

また,異なった型を合わせようとするとエラーが出る.

>>> s = "100"
>>> print s   #文字列100を出力
100
>>> print int(s) + 200   #int(s):数値100と数値200を+で加算した
300
>>> i = 100
>>> print i   #数値100を出力
100
>>> print str(i) + "200"   #str(i):文字列100と文字列200を+で連結した
100200
>>> print int(s)+ "200"
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unsupported operand type(s) for +: 'int' and 'str'   #エラー

raw_input関数

raw_input関数で以下のように文字列の入力の受け取りができる.

>>> a = raw_input()
input test   #入力
>>> print a
input test   #aで受け取った文字列の出力

input関数

input関数で以下のように数値(値の評価)の入力の受け取りができる.

>>> a = input()
1+2+3   #入力
>>> print a
6   #aで受け取った数値(値の評価)の出力

if文

if文は条件分岐を行える.

インデントでブロック構造を表現する.

if 条件式:
	条件式が真の時の処理
else
	条件式が偽の時の処理

使用例

>>> n=2
>>> if n<=0:
...     print "n<=0"
... else:
...     print "n>0"
...
n>0

while文

条件を満たしている間だけ繰返し.

while 条件式:
	条件式が真の時の処理

使用例

>>> num = 0
>>> while num<5:
...     print num, "hello"
...     num += 1
...
0 hello
1 hello
2 hello
3 hello
4 hello

for文

オブジェクトに含まれる要素の数だけ繰り返し

for 変数 in オブジェクト:
	実行する処理1
	実行する処理2

使用例

※range(x,y)は[x,...,y]のリストを意味する.

下の例だとrange(0,5)は[0,1,2,3,4]となる.

>>> for num in range(0,5):
...     print num, "hello"
...
0 hello
1 hello
2 hello
3 hello
4 hello

0-2. Pythonでプログラミング

基本的な構文だけでできる項目と追加で知識が必要な項目に分けて出題する.

※ここではファイルからコマンドで実行すること/p>

基礎問題

(1) 1から50までの和を計算して表示せよ


(2) 整数を入力させ,入力された数字の偶数・奇数を判別して表示せよ


(3)次の計算結果を予想せよ

1. 1 + 2

2. 3 + 1.2

3. 1 + True

4. [3,1,4][False]


(4) 1から100までに存在する奇数の足し算結果を出力せよ.


(5) 1から100までの数をプリントするプログラムを書け.

 ただし3の倍数のときは数の代わりに「Fizz」と,

 5の倍数のときは「Buzz」とプリントし,

 3と5両方の倍数の場合には「FizzBuzz」とプリントすること.

発展問題

(1) 次のHello関数を Hello() 以外で呼び出す

def Hello():
 print "Hello"


(2)1-99までの奇数と偶数を表示する(自作関数を使おう)


(3)与えられた数が素数かどうか調べるプログラム(自作関数を使おう)



Pythonには大きく2つのバージョンがあり、今回扱ったのは2系である。

Python3系ではprintが関数化され、C言語と同様に()が必要となったり、

文字列入力のraw_input関数が廃止されinput関数となったりと仕様が違う部分が多いので、注意が必要である。

参考文献

  1. Python入門から応用までの学習サイト (http://www.python-izm.com/)
  2. エンジニアの入口 (https://eng-entrance.com/)
dspトップへ