Python お金の健康

【解説付き】pythonの学習問題を解いてプログラミングスキルを高めよう2

こんにちは、ウチダです。

私は投資や仕事に役立てるためにプログラミング言語pythonを勉強しています。

いまはプログラミングスキルを高めるために、実用書の演習問題を解いています。

退屈なことはPythonにやらせよう

前回は第1章Python入門の演習を解説しました。

(参考:プログラミング学習の第1章Python入門

今回は第2章フロー制御の演習を解説します。

Pythonを身につけてスキルアップしよう!

プログラミング言語Python

プログラミング言語Pythonはコードが非常にシンプルで、誰もが簡単にプログラムを作れます。

また、ツールも無料で取得でき、ネットにもコードが多数掲載されています。

Pythonは初心者こそおすすめのプログラミング言語なんです。

ただ、難しい実用書を読むだけでは理解も難しいですよね。

そこで演習を通して、専門語や使い方を覚えていけたらきっと楽しいと思います。

今回は第2章フロー制御を解いてきましょう!

python学習1:ブール型の値を理解しよう

'''
ブール型の値には2つありますが、
それは何ですか?
どのように書きますか?
'''

ブール型とは「はい」「いいえ」の選択肢の表現を行うものです。

ブール型はTrue(真)とFalse(偽)の2種類の値しかとれません。

クォート記号(',")をつけずに、先頭は大文字、残りは小文字で書きます。

python学習2:ブール演算子を理解しよう

'''
ブール演算子には3つありますが、それは何ですか?
'''

ブール演算子とは、ブール値を組み合わせるときに使用する演算子です。

算数では2+2など、数字同士を足し合わせるために+(演算子)を使いますよね。

同様に、ブール値(True、False)の演算子にはand、or、notを使います。

python学習3:ブール演算子を理解しよう

'''
各ブール演算子の真偽表を書きなさい
つまり、ブール値のすべての組み合わせに対して演算子を評価した表です。
'''

ブール値はTrue(真)、False(偽)の2種類があります。

ブール演算子はand、or、notの3種類があります。

これらのすべての組み合わせを評価します。

pythonの真偽表1
pythonの真偽表2

python学習4:ブール演算子を理解しよう

'''
以下の格式を評価すると何になりますか?
(5 > 4) and (3 == 5)
not (5 > 4)
(5 > 4) or (3 == 5)
not ((5 > 4) or (3 == 5))
(True and True) and (True == False)
(not False) or (not True)
'''

最後の評価結果が1つのブール値になるまで、各項の評価を行います。

例えば1つめは5>4はTrue、3==5はFalseです。

True and Falseになるので、これを評価するとFalseになります。

他も同様に評価します。

pythonの真偽表3

python学習5:比較演算子を理解しよう

'''
比較演算子には6種類がありますが、それは何ですか?
'''

比較演算子は2つの値を比較して、1つのブール値を返します。

数学の等号、不等号と同じですね。

  • 等しい==
  • 等しくない!=
  • より小さい<
  • より大きい>
  • 以下<=
  • 以上>=

比較演算子の評価結果は、与えた値に応じてTrueかFalseになります。

python学習6:等値比較演算子を理解しよう

'''
等値比較演算子と代入演算子の違いは何ですか?
'''

代入演算子=は、中学数学のx=10のように変数に値を代入するものです。

等値比較演算子==は、2つの値を比較してブール値を返します。

代入するのが=、同じ値か調べるのが==です。

python学習7:条件式を理解しよう

'''
条件式とは何ですか?
それはどこで使いますか?
'''

条件式は繰り返し処理などの自動化プログラムで、フロー制御に使う式です。

評価するとブール値になります。

例えばfor文でループ処理するとき、条件式を書くことで、処理を分岐させることも可能です。

Trueなら処理1、Falseなら処理2のように分けられます。

フロー制御のときに使用するのが条件式なのです。

python学習8:ブロックを理解しよう

'''
次のコードに含まれるブロックを3つ挙げなさい。
'''
spam = 0
if spam == 10:
    print('eggs')
    if spam > 5:
        print('bacon')
    else:
        print('ham')
    print('spam')
print('spam')

フロー制御は条件式と節(コードのブロック)からなります。

条件式は学習7で学習しました。

ブロックは、コードを1行以上のひとまとまりにしたものです。

ブロックの区間は、コードの字下げで指定します。

pythonで字下げするときは、行の先頭に4個の半角スペースを入れます。

演習問題で字下げをしている部分を探します。

#1
print('eggs')
if spam > 5:
    print('bacon')
else:
    print('ham')
print('spam')

#2
print('bacon')

#3
print('ham')

上記の3つがブロックです。

python学習9:フロー制御を理解しよう

'''
spamが1ならHello,
spamが2ならHowdy,
spamがそれ以外ならGreetings!と表示するコードを書きなさい。
'''

条件によって処理を変えるフロー制御です。

今回はif文を使ってコードを作ります。

if spam == 1:
    print('Hello')
elif spam == 2:
    print('Howdy')
else:
    print('Greetings!')

プログラムを実行します。

pythonのプログラム4

test関数の引数にspamの値を入れるのですが、それぞれ1,2,3で表示される値が変化しました。

spamの値によって出力される値も変化したので、演習はクリアです。

python学習10:無限ループへの対処法を理解しよう

'''
プログラムが無限ループに陥ったらどんなキーを押しますか?
'''

for文やwhile文を使うと処理を繰り返し行うことが可能です。

条件式を誤ると、特にwhile文で無限ループに陥ることがあります。

プログラムの処理速度は非常に早いので、初見では非常にびっくりすると思います。

そんなときはキーボードでCtrlとCを同時に押します。

コピーするときと同じ要領です。

そうすると無限ループを中断させることができます。

python学習11:フロー制御を理解しよう

'''
breakとcontinueの違いは何ですか?
'''

for文やwhile文での繰り返し処理をする際、ある条件ではそのループから抜け出したり、スキップしたい場合があります。

そんなときはbreakやcontinueを使います。

  • break:ループ節から抜け出す。そして次のコードを実行する。
  • continue:ループの先頭に戻り、ループ条件式を再評価する。

breakとcontinueを使えばログイン管理ができます。

pythonのプログラム5

python学習12:range()関数を理解しよう

'''
forループでrange(10)、range(0, 10)、range(0, 10, 1)と
書くときの違いは何ですか?
'''

range()関数は、一定回数だけコードのブロックを実行したいときに使用します。

for 変数名 in range(引数):
    ブロック

演習問題は実際にプログラムを動かして検証します。

pythonのrange関数プログラム1
pythonのrange関数プログラム2

いずれも0から9まで1ずつ表示する結果になりました。

したがって、これらは同じものといえます。

python学習13:for文とwhile文を理解しよう

'''
forループを使って1から10までの数字を表示する短いプログラムを
書きなさい。
そして、whileを使って同様に1から10までの数字を表示するプログラムを
書きなさい。
'''

for文にrange()関数を使って書きます。

pythonのカウントプログラム1

range(i, j)と引数を2つ入れると、iからj未満まで1つずつ代入していきます。

例では1,11なので、1から11未満(10まで)を1つずつ代入します。

続いてwhile文を使って書きます。

pythonのカウントプログラム2

while文のブロックにiを1ずつ増やすように式を書きました。

iが11未満の間は条件式(i<11)がTrueなのでループ処理されます。

iが11になるとFalseになるので、ループ処理が終わります。

python学習14:モジュール内の関数の呼び出し方を理解しよう

'''
spamという名前のモジュールにbacon()という名前の関数があるとすると、
spamをインポートした後にどのように呼び出しますか?
'''

モジュールとは一群の関連する関数を備えたPythonのプログラムです。

要するに便利キットのようなもので、短いコードでプログラムを作れるようになります。

例えば今日の日付を表示するプログラムを書く時、datetimeというモジュールが使えます。

pythonのモジュールを使ったプログラム

モジュールを使う時はimport モジュール名とあらかじめ宣言します。

モジュール内の関数を呼び出す時は、モジュール名.関数名と書きます。

したがって、演習問題の解答はspam.bacon()です。

python学習15:関数のはたらきを理解しよう

'''
インターネットでround()とabs()関数を検索し、どんな働きをするのか
を調べましょう。
これらの関数をインタラクティブシェルを使って試しなさい。
'''

まずPythonのオンラインドキュメントを開きます。

(参考:Pythonオンラインドキュメント

pythonのオンラインドキュメント

総合索引を開きます。

pythonの総合索引画面

round()関数はRで検索して、探します。round()関数を表示した結果はこちら。

pythonのround関数の説明

次にabs()関数を調べます。

pythonのabs関数の説明

そしてインタラクティブシェルに入力して試します。

私はJupyter Notebookを使っているので、こちらで入力します。

pythonの関数をテストした画面

これで第2章の学習は終わりです。

単に本を読むより、演習を通して学ぶほうが楽しく感じませんか?

もっと詳しく勉強したい方はこちらの本をおすすめします。

次回は第3章を解説します。

ここまで読んでくださりありがとうございました。

-Python, お金の健康
-