質問記載場所

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]))
Made with Slides.com