はじめてのプログラミングとしてのPython入門(基本編)

IT技術 教養としてのテクノロジー入門

この記事について

Pythonとは汎用プログラミング言語といわれるプログラミング言語です。Webアプリケーションや研究用の言語解析までさまざまな用途で使われています。

上記のように様々な実務用途がありますが、とても学習コストが低く、プログラム初心者が初めて覚えるプログラミング言語の一つとしてとても人気があります。

この記事でははじめてプログラミングを触れる方向けにPythonを解説してきます。なお、コマンドラインの操作があるため、もしもコマンドラインの操作をしたことがない方はまず非エンジニア職のためのコマンドライン入門を一読することをお勧めします。こちらの記事で紹介している基本操作を見ながらでも扱えるようになれば問題ないです。

Pythonプログラミングを使えるようにする

それではPythonプログラミングができるための準備をしましょう。

Pythonをインストールする

Pythonのプログラミング言語を動かすため、公式サイトからインストールしましょう。

インストールはとても簡単です。公式サイトのDownloadsからインストーラーをダウンロードできます。様々な種類のものがありますが、2020/07/23時点の最新版3.8.5はWindowsの場合は「Windows x86-64 executable installer」、Macの場合は「macOS 64-bit installer」を選べば問題ないです。なおインストールの設定はデフォルト設定のままで問題ありません。

インストールが完了したら、コマンドラインでWindowsの場合はpy、Macの場合はpythonというコマンドを打てるようになります。まずは以下のように--versionというオプションを付けてみましょう。インストールがうまくいっていればバージョンがでてきます。これでインストール完了です。


% py --version
Python 3.8.5

または

% python --version
Python 3.8.5

テキストエディタを準備する

Pythonのプログラムを書くには何らかのテキストエディタが必要です。Windowsのメモ帳、Macのテキストエディットがあれば最低限できますが、以下のようなテキストエディタをインストールすると入力補完があったりして便利です。ものによっては学習コストが少々ありますが気に入ったものがあれば使ってみてもよいと思います。※使い方については検索してみればわかりやすい記事があるかと思います。

基本編

それでは早速プログラミングを始めてみましょう。

基本編のゴール

基本編では、FizzBuzzプログラムというプログラミング初心者がまず挑戦してみたいプログラムを作れることをゴールとします。

Hello World

それではPythonプログラムを書いてみましょう!お好きなテキストエディタでhello.pyというファイルを作りましょう。中身には以下を記載します。後ほど中身を解説しますので、まずはとりあえずこちらを写してみましょう。


# coding: UTF-8

print("Hello World!")

作成できたら早速、コマンドラインでファイルを置いたディレクトリに移動して以下のコマンドを実行してみましょう。pythonプログラムは、xxx.pyというファイルにプログラムを記載し、pyまたはpythonのコマンドに当該ファイル名を指定して実行するのが基本です。


# Windowsの場合
% py ./hello.py

# Macの場合
% python ./hello.py

実行してみて「Hello! World」と表示されたら成功です。


# 成功例 windowsの場合
% py ./hello.py
Hello World!

# 成功例 Macの場合
% python ./hello.py
Hello World!

なお、記載に誤りがあるとエラーがでます。例えば、以下のようにprint("Hello Wordl!")ではなくprint(Hello World)と書いてしまった場合このようなエラーがでます。

エラーが出るプログラムの例


# coding: UTF-8

print(Hello World) # ""が欠けている


#失敗例
% py ./hello.py
  File "hello.py", line 4
    print(Hello World)
                ^
SyntaxError: invalid syntax

このようなエラーが出た場合、記載を頼りに間違いがないか調べてみましょう。上記の記載はline4 とあるように、4行目print(Hello World)にエラーがありますという説明になります。

解説

このプログラムはprint("Hello World!")という命令で、Hello World! と出力するプログラミングです。print("文字列")というのがポイントで、""の中に任意の文字を入れれば入れた文字を出力します。


# coding: UTF-8

print("こんにちは")


% py ./hello.py
こんにちは

print("文字列")は入力したいものを自由にいれて何回も使うことができます。


# coding: UTF-8

print("Hello World!")
print("おはようございます。")
print("こんにちは")
print("こんばんは")


% py ./hello.py
Hello World!
おはようございます。
こんにちは
こんばんは

なお先頭の# coding: UTF-8は現時点では特に解説しません。いわゆるプログラムコードを書く前のおまじないと思ってください。Pythonプログラム書くときはとりあえずつけようという意識を持っていただければ大丈夫です。

基本の計算

続いて基本的な四則演算をしてみましょう。calc.pyというファイル名で以下の計算を出力してみましょう。


# coding: UTF-8

# 足し算
print(2+3)

# 引き算
print(5-4)

# 掛け算
print(6*7)

# 割り算
print(9/8)

# 割り算の余り
print(11%10)

# ()を使った計算もできます。
print((11 - 1)/10)


% py calc.py
5
1
42
1.125
1
1.0

エクセルで計算をしたことある人にとっては慣れているかと思いますが掛け算が*割り算が/という点が注意です。また、%を使うと割り算の余りになります。

なお、先頭の# coding: UTF-8 以外の途中の#はコメントで#以降の記載はプログラム処理時には無視されます。今回のように解説を入れたりするときに便利です。

変数を扱う

変数とは値を入れる箱です。先ほどのcalc.pyを変数を使ってこのように書き換えてみましょう。


# coding: UTF-8

value1 = 2 # 変数を定義

# 変数には2が入っているので2が出力される
print(value1)

# この場合2-4の結果をvalue2に入れることとなる
value2 = value1 - 4

print(value2)

# 値の上書きもできる。この場合 2 * 2 で 4 に変わる
value1 = value1 * value1

print(value1)


% py calc.py
2
-2
4

文字列操作と型

ここまでは数値処理をしてきました。続いて文字列の処理をしていきましょう。ファイル名は任意で問題ありませんが、ここでは仮でstring.pyと付けます。


# coding: UTF-8

strValue = "こんにちは" # 文字列の場合は""をつけます。

# こんにちはと出力されます。
print(strValue)

# + をつけると文字列の結合ができます。
greet = strValue + "私の名前は太郎です。"

# "こんにちは私の名前は太郎です。" と出力されます。
print(greet)

# ""をつけると数値も文字列と認識します。
strCalc = "1243 + 4567"
intCalc = 1243 + 4567

# 文字列のためそのまま"1243 + 4567"と出力されます。
print(strCalc)
# 数値のため5810と出力されます。
print(intCalc)

# str() を使えば数値を文字列に変換してくれます。
# これを利用して以下のような使い方で異なる型同士の結合もできます。
result = strCalc + " = " + str(intCalc)

# "1243 + 4567 = 5810"と出力されます。
print(result)


% py ./string.py
こんにちは
こんにちは私の名前は太郎です。
1243 + 4567
5810
1243 + 4567 = 5810

値には今回紹介した文字形式(String型)以外にも様々な型があります。数値についてもこれまで使ってきたものには2種類あり、3,4,200のような整数型はInt型といい、8.56のような小数点が含まれる数値はFloat型といいます。初心者のうちはいったんはString,Int,Floatこの3つを覚えて置くだけで十分でしょう。

繰り返し

次はwhile文を使って繰り返しをやってみましょう。ここでは便宜上roop.pyというプログラムを作ってみます。


# coding: UTF-8

value = 0

# valueが50以下のとき繰り返すという式を書きます。
while value < 50:
    # インデントを空けるのがポイントです。インデントを空けた式だけが繰り替えされます。
    print(value)
    value = value + 1

# ここの処理はインデントがないためwhileのループを抜けた後に実行されます。
print("roop end!")


% py ./roop.py
0
1
2
3
-------中略-------
47
48
49
roop end!

while (条件式): という書き方をすることで繰り返しを作れます。なお<というのは比較式でvalueが50より上か下かの比較です。value<50つまりvalueが50よりした出会った場合は式が正しいとして、whileの処理を実行し、valueが50出会った場合式が誤りとしてwhileの処理を実行しません。

while (条件式):のあとの処理をインデント入れるのがポイントです。インデントをいれた処理だけが繰り返し実行されます。インデントの入れ方はいろいろ流儀がありますが4文字分のスペースを空けるのが一般的です。

なおwhileの中にwhileを入れることもできます。


# coding: UTF-8

value = 0

# valueが50未満のとき繰り返すという式を書きます。
while value < 10:
    value2 = 1
    
    # value2 が3以下であるかぎり繰り返す
    while 3 >= value2:
        print(value2)
        value2 = value2 + 1

    value = value + 1

# ここの処理はインデントがないためwhileのループを抜けた後に実行されます。
print("roop end!")


% python hello.py
1
2
3
1
2
-------中略-------
2
3
1
2
3
roop end!

条件式

最後に条件式のif文を使ってみましょう。先ほど作成したroop.pyを以下のように変えてみましょう。


# coding: UTF-8

value = 1

# valueが50以下のとき繰り返すという式を書きます。
while value < 10:
    print(value)    
    if value % 2 == 0:
      print("偶数です")      
    elif value == 1:
      print("1です") 
    else:
      print("1以外の奇数です")

    value = value + 1

# ここの処理はインデントがないためwhileのループを抜けた後に実行されます。
print("roop end!")


% py ./roop.py
1
1です
2
偶数です
3
1以外の奇数です
------- 中略 -------

if (条件式):という式は条件式が正しいときだけインデント後の後ろの処理を実行します。なお、elifをつけると、ifが正しくないとき、elifの条件式の確認を行い、正しければelif以下の処理を行います。elseを付けた場合、条件分岐に入れなかったそれ以外のケースで処理が実行されます。

実践FizzBuzzプログラムを作る

基本編は以上です。最後にFizzBuzzプログラムを作ってみましょう。FizzBuzzプログラムは以下のように数値を順番に出力してゆき、3の倍数の時に末尾にFizz、5の倍数の時にBuzz、両方の時にFizzBuzzと付けます。今回は0から100までの値を出力していくとします。

以下に回答例を先に示します。ここまで学んだことの知識だけでできますので時間に余裕がある人は自力で考えて作成してみましょう。


% py ./fizzbuzz.py
0
1
2
3Fizz
4
5Buzz
6Fizz
7
8
9Fizz
10Buzz
11
12Fizz
13
14
15FizzBuzz
------- 中略 -------
99Fizz
100Buzz

回答例

以下が回答例です。いろんな書き方がありますが今回は2種類紹介します。

回答例1


# coding: UTF-8

value = 0

while value <= 100:

    # outputという文字列の変数を作ります。
    output = str(value)   

    # 3の倍数の時Fizzを末尾に追記します。
    if value % 3 == 0:
      output = output + "Fizz"     
    
    # 5の倍数の時Buzzを末尾に追記します
    if value % 5 == 0:
      output = output + "Buzz"

    #出力します
    print(output)
    value = value + 1

回答例2

3の倍数かつ5の倍数が15の倍数であることとelifとelseを活用するとこういう書き方もできます。


# coding: UTF-8

value = 0

while value <= 100:

    # 15の倍数 3の倍数かつ5の倍数のときFizzBuzzと出力
    if value % 15 == 0 :
      print(str(value) + "FizzBuzz")
    
    # 3の倍数の時Fizzと出力
    elif value % 3 == 0 :
      print(str(value) + "Fizz")
    
    # 5の倍数の時Buzzと出力
    elif value % 5 == 0 :
      print(str(value) + "Buzz")

    #それ以外は数値を出力するだけ
    else :
      print(value)

    value = value + 1

基本編の終わりに

ここまでが基本編でした。人によって難しい、簡単など様々な感想を持つと思いますが、難しいと思った方は、まず今回解説したことを、他のサイトで調べながらでもいいので自力でFizzBuzzプログラムを組めるようになれると、プログラムを組むコツがつかめて来ると思います。

次回実践編では、基本編で学んだことをベースに、実際に実用面でどのように扱うかについて取り扱っていこうと思います。よろしければ次回実践編もご覧いただけますと幸いです。

次回、はじめてのプログラミングとしてのPython入門(実践編)はこちらです。

Photo by Javier Garcia Chavez on Unsplash

 みやうデジタルラボ - にほんブログ村