【Python入門】基礎文法を初心者向けに徹底解説【データサイエンス入門】

Pythonは、概ねどの環境でも使える一般的な言語です。

ファイナンスやWebアプリ開発、機械学習など、いろんなジャンルで使われています。


Pythonには、次のような特徴があります。

  • 人間が理解しやすい文法構造
  • 標準ライブラリが充実しているため、すでに多くの機能が備わっている
  • シンプルで覚えることが少ない


つまり、初心者でも学びやすい言語です。



本記事では、難しい説明は省き、Pythonの基礎文法で最低限知っておきべき要点だけをわかりやすくまとめました。

さらに、ソースコードも記載していますので、コピー&ペーストをすることで、初心者さんでも簡単にPythonを実行できるようになっています!


それでは、基本文法をマスターしていきましょう!




Pythonを使えるようになるだけでも、独学では非常に時間がかかります。

最速最短で実践的なスキルを習得するためにはスクールに通うのも手段の一つです。





Youtubeでは動画版で解説中!




Pythonのコーディングルール

コーディングルールは、言語ごとに異なります。

初心者さん向けに、「これだけは確実に理解してほしいルール3箇条」をまとめました

 

  1. 大文字小文字は区別する
  2. インデントも文法的な意味を持つ
  3. 文字列以外は空白含め、半角英数字

 

 


文字や数字の表示

文字を表示するためには、print関数を使います。

#文字列「Hello World!」を表示
print('Hello World!')
 >>Hello World!
#数字を表示
print(10)
 >>10

 



四則演算

#足し算
print(1+1)
 >>2
#引き算
print(10-1)
 >>9
#掛け算
print(2*3)
 >>6
#割り算
#Python3は割り算の答えが小数になる
print(10/2)
 >>5.0
#整数で出したい時は//を使う
print(10//2)
 >>5
#余り
print(5%3)
 >>2
#べき乗(累乗)
#5**3 = 5*5*5 の意味
print(5**3)
 >>125

 






文字列

Pythonは、シングルクォーテーションかダブルクォーテーションで囲むと文字と認識してくれます。

#文字列を表示
#ダブルクォーテーション(Shiftを押しながら2を押す)
print("あいうえお")
 >>あいうえお
#シングルクォーテーション(Shiftを押しながら7を押す)
print('あいうえお')
 >>あいうえお

 

変数

変数の宣言

変数とは、値を入れておく箱のイメージです。

箱を用意すれば、入れる値は自由に変更できますね。

ですので、変数は上書きできます。


変数を作ることを、変数を宣言すると言います。

変数に初めて値を入れることを、変数の初期化と言います。

#変数の宣言
x = 5
#変数の中身を確認する時はprint関数
print(x)
 >>5
#変数は上書きされる
x= 100
print(x)
 >>100


変数をprint関数で参照する時は、ダブルクォーテーション(“)をつけないように注意しましょう。

 

 

変数名のルール

変数名のルールは、次の3つです。

  1. 大文字小文字は区別される
  2. 変数名に使えるのは、数字・アルファベット・アンダースコア(_)のみ
  3. 予約語は利用できない



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

Pythonでは、大文字小文字を区別します。

#pythonは大文字小文字を区別する
a = "りんご"
print(a)
 >>りんご
#大文字Aで定義しても、上書きされない
A = "みかん"
print(a)
 >>りんご



 

数字・アルファベット・アンダースコア(_)が使える

「@」や「&」は、変数名として使えません。

 

#変数名は数字・アルファベット・アンダースコア(_)のみ
#OK
main_city = "横浜"
print(main_city)
 >>横浜
#NG
apple&orange = "りんごとオレンジ"
 >> File "/var/folders/4p/8vj4hs0j69753kl3tptyk7m40000gn/T/ipykernel_64585/4220542218.py", line 2
    apple&orange = "りんごとオレンジ"
    ^
SyntaxError: cannot assign to operator

 

 

予約語は利用できない

予約語とは、構造上特殊な意味をもつ言葉です。

変数や関数に予約語と同じ名前をつけることはできません。

 
予約語の一例は下記の通りです。

‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’,

 ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’,

  ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’,

  ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’





データ型

データ型とは?

データ型とは、整数や小数、文字など、データの型・形式のことです。

そのままの意味だ!
データ型って、例えばどんなものがあるのかな?


Pythonで頻繁に利用されるデータ型は、次の7種類です。

  • int型:整数
  • float型:小数点
  • str型:文字列
  • bool型:真偽値
  • list型:リスト
  • tuple型:タプル
  • dict型:辞書



Pythonでは、データ型を確認する機会が多くあります。
データ型を確認する時は、type関数を使います。

 

#データ型を確認するtype関数
#引数に渡したオブジェクトの型を返す
#整数
type(1)
 >>int
#小数
type(0.01)
 >>float
#文字
type("大阪")
 >>str


キャスト(型変換)

「整数(int型)で定義した変数を、小数(float型)にしたい」といったように、データ型を変更することをキャストと言います。

#int→floatへキャストする
#変数xの宣言
x = 25
#今はint型
type(x)
 >>int
#float型へ変換
float(x)
 >>25.0
#float型になっているか確認→intのまま
type(x)
 >>int
#xをfloat型にするためには、float(x)でもう一度定義し直す必要がある
x = float(x)
type(x)
 >>float

 

 

 

bool型

bool型とは、真偽値と言います。

 

え…。どういうこと?!

 

Ture or Falseで応えられる型のことです。


if文や条件分岐、for文などの繰り返し文で用いられます。

※詳細は後ほど解説します。

#aを宣言
a = 100 > 5
#aを表示してみると・・・
print(a)
 >>True
#aのデータ型を確認
type(a)
 >>bool

 

 

 

リスト型

リスト型とは、複数のデータを1セットで持つことができるデータ型です。

 

変数は1つのデータしか保持できませんが、リスト型であればたくさんデータを持てるんだね!


リスト型は、配列とも呼ばれます。

 

#fruitという配列に、各果物を要素として追加
fruit = ["apple", "banana", "orange"]
fruit
 >>['apple', 'banana', 'orange']
#リスト「fruit」の1番目の値を表示
fruit[0]
 >>'apple'

 

要素のインデックス

ソースコードに、「リスト『fruit』の1番目の値を表示」と書いてあるけど、
リストfruitの1番目を表示するなら、fruit[1]じゃないの?

鋭い!よく気がついたね!
実は、リスト型やタプル型の最初の値は、0番目なのです!

 

表で表すと、このような感じです。

インデックス012
fruitの要素applebananaorange
fruitリスト

 

tuple型

タプル型もリスト型と同様、複数の要素を格納できる型です。

リスト型との違いは、次の通りです。

  • 要素を追加したり、削除できない
  • リスト型に比べ、少ないメモリ(容量)で処理できる
  • リスト型よりタプル型の方が早く演算できる

 

リスト型との違いはざっくりわかったけど、タプル型はどんなときに使うの?

例えば、膨大な量のデータを演算処理する時や、変更を許可したくない変数を定義したい時などに使うよ。

 

#タプル型
#タプル型のオブジェクトscoreを定義
score = ("Japanese", "Math", "Science")
#表示
score
 >>('Japanese', 'Math', 'Science')
#scoreの3番目の値を上書きしてみるとエラーになる
score[2] = "Society"
 >>---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/var/folders/4p/8vj4hs0j69753kl3tptyk7m40000gn/T/ipykernel_64585/2862647525.py in <module>
----> 1 score[2] = "Society"
TypeError: 'tuple' object does not support item assignment

 

 

 

辞書型

辞書(dictionary)型とは、keyとvalueの組み合わせが含まれているデータのことです。


例えば、学校のテストの成績を管理する辞書型オブジェクトscoreの中に、英語・国語・数学のテストの点数を格納したいとします。


リスト型の場合、下記のように各教科の点数の情報しかいれることが出来ません。

score_list = [80,45,30]


これじゃあ、どの点数が、どの教科の点数なのか、わからないね。


そこで、keyを教科名、valueを点数とした辞書型を使うと、下記のように対応づけられます。

key英語国語数学
value804530
辞書型score


#辞書型
score = {"英語" : 80, "国語" : 45, "数学" : 30}
score
 >>{'英語': 80, '国語': 45, '数学': 30}


演算子

比較演算子

値を比較するときに使う演算子のことを比較演算子と呼びます。


代表的な比較演算子は、下記です。

比較演算子意味
==イコールである
!=イコールではない
>大なり
<小なり
>=以上
<=以下


「==」はイコールの意味ということは、「=」と同じじゃないの?

計算でよく使う「=」は、プログラミングでは代入の意味で用いるんだ。

例えば、x = 5 は、xに5を代入するというよね。



比較演算子は、True、または、Falseが返ってきます。

ソースコードで確認してみましょう。

#比較演算子
#イコールである
print(1 == 2)
 >>False
#大なり
print(100 > 4)
 >>True



論理演算子

論理演算子とは、論理演算を行うための演算子です。

論理演算では、2つの真偽値を組み合わせて行います。


真偽値とは、TrueかFalseで返ってくる値のことだったね。
例えば、値「1 == 10」の答えはFalseなので、値「1==10」は真偽値だ!


代表的な論理演算子は次の通りです。

論理演算子意味
and論理積(かつ)→AもBもTrue
or論理和(または)
not否定(でない)

#論理演算子
x = 5
#論理積
#xが1より大きい、かつ、xは10以下である
print((x > 1) and (x <= 10))
 >>True
#論理和
#xが8より大きい、または、xは10以下である
print((x > 1) or (x <= 10))
 >>True
#否定
#xが1より大きい ではない  = xは1以下である
print(not(x > 1))
 >>False



比較演算子と論理演算子の優先順位

比較演算子と論理演算子では、比較演算子の方が優先されます。

論理演算子の中では、not > and > orの順に優先されます。

#「x>1」ではない、 かつ、xは8とイコールである
#NG:「『x>1、かつ、x==8』ではない」ではない
print(not(x > 1) and (x == 8))
 >>False



条件分岐

条件によって、処理を変える時に使うのが条件分岐です。

例えば、「もし雨が降っていたら(条件)、傘を持っていく(処理)」といった感じです。


条件分岐は、if、else、elifの3種類があります。


if文

if文は、「もし〜ならば、」の条件を作る文法です。

if文のポイントは2つあります。

  1. 条件式の末尾はセミコロン「:」
  2. 処理内容はインデントを空けて記載



A = 100
B = 200
#もし、AがBよりも小さかったら
if A < B:
    #「AはBより小さいよ!」と表示する
    print("AはBより小さいよ!")
 >>AはBより小さいよ!




else文

else文は、if文の後ろにつけるものです。

「そうでない場合は、〜をする」の意味を持ちます。


実際にコードで確しましょう。

A = 300
B = 200
#もし、AがBよりも小さかったら
if A < B:
    #「AはBより小さいよ!」と表示する
    print("AはBより小さいよ!")
    
#AがBよりも小さくない場合、
else:
    #「AはB以上だよ!」と表示する
    print("AはB以上だよ!")
 >>AはBより小さいよ!    



elif文

複数の条件分岐を入れたい場合は、elifを使います。

A = 200
B = 200
C = 100
#もし、AがBよりも小さかったら
if A < B:
    #「AはBより小さいよ!」と表示する
    print("AはBより小さいよ!")
#もし、AとBが同じだったら、    
elif A == B:
    print("AとBは同じ数です")
#elifは複数入れられます
elif A == C:
    print("AとCは同じ数です")
    
#AがBよりも小さくない場合、
else:
    #「AはB以上だよ!」と表示する
    print("AはB以上だよ!")
 >>AとBは同じ数です


もし、AもBもCも同じ数だったら、elif A == BとA == Cの両方が表示されるのかな?



実際に試してみましょう。

A = 200
B = 200
C = 200 #200に変更
#もし、AがBよりも小さかったら
if A < B:
    #「AはBより小さいよ!」と表示する
    print("AはBより小さいよ!")
#もし、AとBが同じだったら、    
elif A == B:
    print("AとBは同じ数です")
elif A == C:
    print("AとCは同じ数です")
    
#AがBよりも小さくない場合、
else:
    #「AはB以上だよ!」と表示する
    print("AはB以上だよ!")
  >>AはBと同じ数です


A == Cでも、A == Bでもあるのに、はじめのelif文の答えが返ってきました。

これは、条件分岐が、条件式に該当したら処理を終了する性質があるためです。

なるほど、ifからelseまでが1つの流れになっていて、
どこかで条件式が真だったら流れから抜けるイメージだね!



for文

for文は繰り返しをする文法です。

ループ処理と呼ばれます。

#リストに入った要素を1つずつ取り出す
subject_list = ["Japanese", "English", "Math"]
for subject in subject_list:
    print(subject)



for文もif文同様、セミコロンとインデントが重要です。




Pythonをもっと学びたい方へ

より詳細な文法について学習したい、アプリを作ってみたい方はプログラミングスクールがおすすめです。

データサイエンスに特化したプログラミングスクールをまとめました。

ぜひご参照ください。



【2023年最新版】データサイエンスが学べるおすすめスクール5選

2022年6月4日