質問記載場所
Atom *Atomはテキストエディタです
Python
Pythonで何ができるの?
出来ることモロモロ
機械学習を使った人工知能の開発
自動データ処理や分析などの業務効率化
スクレイピングによるWEB上の画像データ・テキストデータの自動収集
WEBサービス・WEBアプリケーション制作
スマホアプリ(Android) デスクトップアプリ制作
フィンテック・ブロックチェーン技術の開発
Pythonスキルを生かせる仕事とは?
こんなお仕事
人工知能(AI)エンジニア
WEBアプリケーションエンジニア
データサイエンティスト
etc...
何故Pythonがいいの?
それは、私も今模索中。
でも・・
間違いなく
初心者にも優しい言語だと思います!
Pythonの基礎
Pythonはオブジェクト思考の
プログラミング言語です。
オブジェクト思考とは?
オブジェクト指向とは、
クラスを基準としたプログラムを設計する方法論の1つ。
クラスとメソッドと関数で構成されています。
クラスの変数を属性。動作をメソッド。
動作だけを記載した関数で構成されています。
1つ1つのデータ型、全てがオブジェクトです。
この話は、様々な人が様々な意見を持っているようです。
変数
変数とは何でも入る箱です。
# 文字も入る
a = "疲れてきた?大丈夫?"
# 数値も入る
b = 123
# そのほか色々入れられます。
ターミナル・コマンドプロンプト
を立ち上げてみましょう
Macの方
[アプリケーション]→[ユーティリティ]→[ターミナル]を選択しましょう。
Windowsの方
[スタート]→[Windowsシステムツール]→[コマンドプロンプト]を選択しましょう。
ターミナル・コマンドプロンプトでPythonを起動しよう。
Macの方Python3 と入力しエンター
Windowsの方Pythonと入力しエンター
こんな感じになっていればOK
*Pythonあとの数字とかは違っていても大丈夫です
数値や文字などの演算子
実際に使ってみましょう。
文字列も計算してくれます
型の話
よく利用される型
int型 | 整数 |
---|---|
float型 | 小数点 |
str型 | 文字列 |
bool型 | 真偽値 |
list型 | リスト |
tuple型 | タプル |
dict型 | 辞書 |
set型 | セット |
int型:整数
Pythonの整数型には値の範囲がなく、システムのメモリ容量が許す限り、 どんな大きな値の整数オブジェクトでも作成できます。
文字列や浮動小数点数などをint型オブジェクトで整数に変換できます。
この2つは整数の2となります。
int("2")
int(2.123)
float型:小数点
浮動小数点数の計算をする場合、小数点数を計算するときや丸めるときに誤差が発生する場合があります。
このような問題を防ぐため、Pythonでは十進数の計算をするためのdecimalモジュールが用意されています。
float型同士の計算では微妙なずれが生じます。
x = 0.1
y = 0.2
print(x + y)
>>>0.30000000000000004
from decimal import Decimal
x = Decimal("0.1")
y = Decimal("0.2")
print(x + y)
>>>0.3
str型:文字列
文字列オブジェクトは、str型のオブジェクトです。数値や浮動小数点数などを文字列に変換する場合は、 str型を呼び出して変換します。文字はダブルコーテーション " もしくはシングルコーテーション ' で囲みます。
print(str(1) + "+" + str(0.1) + "=" + str(1+0.1))
>>> 1 + 0.1 = 1.1
print("Hello")
len("Hello")
>>>5
"A A".lower()
>>>'a a'
小文字に変換するメソッド
文字数を調べる組込関数
bool型:真偽値
ブール型(bool又はboolean)はプログラミング言語でよく使われる
真偽値のことです。
True(真)とFalse(偽)の二種類が用意されています。
のように、if文などの判断に使われる事が多いです。
if文についての詳細は後半で説明します。
bool1 = True
if bool1 == True:
print ("処理を実行")
# if bool1:
# と==から右を省略する事も可能です。
list型:リスト
このように[ ]でくくったデータの集合体をリストと言います。
リストには箱番号がついています。箱と箱は , で区切ります。
部屋番号は0から始まります。
各部屋の情報を取り出したい時は以下のように書きます。
li1 = ["A","B","c",1,2,3,["cc","dd"]]
# リストの0番目を取り出したい
print (li1[0])
>>> A
tuple型:タプル
このように( )でくくったデータの集合体をタプルと言います。
リストと同じように箱番号が0からついています。
箱と箱は , で区切ります。 リストと異なるのは、
更新が出来ないという事です。
li1 = ("A","B","c",1,2,3,["cc","dd"])
# リストの場合
li1 = ["A","B","c",1,2,3,["cc","dd"]]
li1[0] = "Change"
print(li1)
>>> ["Change","B","c",1,2,3,["cc","dd"]]
# タプルで同じ事をやると・・
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
dict型:辞書
このように{ } でくくって
Key: Value で記載された集合体を辞書と言います。
英語辞書をイメージしてください。appleというKeyを調べると、
りんごというvalueが確認できます。
Keyを使って、Valueを確認したいときは以下のように使います。
d1 = {"apple": "りんご","B": 2,"C": 3}
print (d1["apple"])
>>> りんご
set型:セット
・重複した要素がない ・要素に順番がない
myset1 = {1, 2, 3}
myset2 = {1, 2, 2, 3, 3}
print(myset1)
print(myset2)
>>>
{1, 2, 3}
{1, 2, 3}
二番目に作成したmyset2は重複した要素を含みます。出力されるときは重複された要素は無視されているため、両方とも同じ内容が表示されます。
要素の追加は出来ますが、
すでに存在している要素を
追加した場合は、無視されます。
ファイルを使って実行しよう
ファイルを使って実行しよう
ここまではターミナルもしくはコマンドプロンプトを使ってPythonとたわむれてきました。
ここからは一度書いたプログラムを繰り返し実行できる方法をご紹介します。
テキストエディターを使って記載し、そのファイルを実行する事でプログラムを動かす事が出来ます。 ターミナルやコマンドプロンプトは一回書いて、閉じたら終わり。それではアプリなど作れないので・・
適切なテキストエディタを利用します。
かつ、プログラミングを書くのに適したエディタが無料で色々あります。
色々試して自分の使いやすいものを探すと良いでしょう。 私はAtomもしくはKomodoEditを使う事が多いです。
ファイルを保存する場所を用意する
今日は単純にデスクトップにフォルダをつくって、そこにファイルを入れてきましょう。
ターミナルもしくはコマンドプロンプトに戻りましょう。
先ほど使ったままにしている方はおそらく↑のようになっていると思います。
なっている方は exit() と入力してpythonの環境から抜けましょう。
*なっていない方は無視してください。
>>>|
デスクトップにフォルダを作ります。
ターミナルやコマンドプロンプトは、デフォルトでは基本ご自身のパソコンの
ホームディレクトリと呼ばれる場所にいます。
せっかくなのでコマンドでプログラマーっぽく、作りましょう。
デスクトップに移動します。
デスクトップにelvpythonというディレクトリ(フォルダのことです)を作成します。
作成したディレクトリ内に移動します。
cd Desktop
mkdir elvpython
cd elvpython
テキストエディタにコードを書いてみよう
先ほどインストールしたAtomもしくは
お好きなテキストエディタを開きます。
と書いて、先ほど作ったディレクトリに test.py
という名前で保存しましょう。
print ("Hello World")
実行
コマンドプロンプトもしくはターミナルに戻りましょう。
Macの方
Windowsの方
と入力してエンターキーを押下!!
と出たら、成功です!!
おめでとうございます!!
Hello World
python3 test.py
python test.py
if文
if文は条件分岐です
ifという言葉の通り、「もし〜だったら」を想定して書きます。
こんな記事が少し前に海外で人気になったそうです。
ある妻がプログラマの夫に「買い物にいって牛乳を1つ買って
きてちょうだい。卵があったら6つお願い」と言った。
夫はしばらくして、牛乳を6パック買ってきた。
妻は聞いた「なんで牛乳を6パックも買ってきたのよ!」
夫いわく「だって、卵があったから……」
これをPythonで書くなら・・
こんな感じですかね・・
if egg in store:
milk_buy(6)
else:
milk_buy(1)
Pythonのif文
条件が1つの場合それ以外は何もしない
条件が複数ある場合
必ず条件指定の下はインデントを下げます(半角スペース4つ分)
インデントが下がっている間がその条件の有効範囲となります。
if 条件を記載します:
条件を満たしたときはここに記載の実行内容を実行
if 最初の条件を記載します:
最初の条件を満たした時に実行したい内容を記載
elif 最初の条件を満たさなかったものの中から次の条件を記載します。:
二個目の条件を満たした時に実行したい内容を記載
else:
全ての条件を満たさなかった場合に記載
比較演算子
実施に書いてみよう
# xとyが等しい場合はYes等しくない場合はNoを表示する
x = y = 2
'''
xが10より小さければ xは10より小さいと表示
xが10と等しければ xは10ですと表示
xが10よりも大きければxは10より大きいと表示
'''
x = 6
if_study.pyというファイル名で
先ほど作成したディレクトリに
保存しましょう。
Answer
自分で出来てからみてね!
# xとyが等しい場合はYes等しくない場合はNoを表示する
x = y = 2
if x == y:
print("Yes")
else:
print("No")
'''
xが10より小さければ xは10より小さい と表示
xが10と等しければ xは10です と表示
xが10よりも大きければ xは10より大きい と表示
'''
x = 6
if x < 10:
print("xは10より小さい")
elif x == 10:
print("xは10です")
else:
print("xは10より大きい")
for文
for文は繰り返し処理です。
例えば、一桁の数字を書き出すときには、
このように書きます。
このように書きます。
for の後に 変数 in 順番に取り出したい集合体を指定します。
ただ・・9までなので、このようにもかけますが・・
数字の羅列であれば、
range()を利用して書く方が簡単です。
num_list = [0,1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in num_list:
print(i)
for i in range(0,10):
print(i)
#もしくはfor i in range(10):
実際に書いてみよう
1~100までの数値を表示し、
3で割り切れる数の時だけ
その数字と Hello
という文字、
それ以外は数字のみを書き出してみよう。
ヒント:
●まずは1〜100までの数字を書き出してみる
●3で割り切れる は 数字 % 3 == 0 がTrueとなるので条件を入れてみる
●数字と文字列の組み合わせを作るときは・・
"%d Hello"%変数 を使うと便利。
Answer
カンニングはなしよ♪
for i in range(1,101):
if i % 3 == 0:
print("%d Hello"%i)
else:
print(i)
これ知っておくと便利
enumerate()関数
for index, i in enumerate(range(1,101)):
print("%d %d"%(index, i))
--実行結果
0 1
1 2
2 3
・
・
・
多重ループ
ネストしたforループ
多重ループ
多重ループとはfor文の中でfor文をまわす事をいいます。
l1 = [1, 2, 3]
l2 = [10, 20, 30]
for i in l1:
for j in l2:
print(i, j)
>>>
1 10
1 20
1 30
2 10
2 20
2 30
3 10
3 20
3 30
while文
#条件が満たされるまでくり返す
while True:
#条件が満たされた場所で
break
num = 0
while num < 2:
print("num = " + str(num))
num += 1
print("End")
1) 変数 num に 0 を代入
2) while 文の条件式を評価。変数 num は 2 より小さいので条件式は真
3) 変数 num の値を出力
4) 変数 num に 1 を加算 (num は 1)
5) ブロックの最後まで達したので再度 while 文の条件式を評価
6) 変数 num は 2 より小さいので条件式は真
7) 変数 num の値を出力
8) 変数 num に 1 を加算 (num は 2)
9) ブロックの最後まで達したので再度 while 文の条件式を評価
10) 変数 num は 2 より小さくないので条件式は偽
11) while 文を終了し次の処理へ
12) "End" を出力
実際に書いてみよう
1.ファイルを実行したら今何時かを0-24時の間で答えるように質問される
2.入力された数字を受け取って、5時から10時以前なら おはよう と表示する
3.入力された数字を受け取って、11時から18時以前なら こんにちは と表示する
4.2と3の条件に合致しなければ こんばんは と表示する
ユーザは0から24をちゃんと入力してくれるとは限らない
#エラー処理
try:
#実行してみたい内容を記載する
except:
#エラーの場合の処理を記載する
入力を求める方法(質問される方法)
input("質問事項を記載する")
Answer
頑張りましょ〜
while True:
try:
time = int(input("何時ですか?(0〜24): "))
except:
continue
if 0 <= time <= 24:
break
if 5 <= time <= 10:
print("おはよう")
elif 11 <= time <= 18:
print("こんにちわ")
else:
print("こんばんわ")
応用問題
1日が月曜日で31日までを
日にち 曜日 で書き出そう。
1 月曜日
2 火曜日
3 水曜日
・
・
ヒント
●曜日はリストにしちゃうと良いかも。
リストの情報は list[0]とかlist[1] などで取り出せる。
●1週間は7日だから、7で割り切れる
●早速enumarate()を使ったりしてみても・・
Answer
頑張れぇ
day_list = ["月曜日",
"火曜日",
"水曜日",
"木曜日",
"金曜日",
"土曜日",
"日曜日"
]
count_no = 0
for index, i in enumerate(range(1,32)):
if index % 7 == 0:
count_no = 0
else:
count_no += 1
print("%d %s"%(i, day_list[count_no]))
elv_python1
By Ayako Matsumoto
elv_python1
- 1,496