【解説付き】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章を解説します。

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

1995年生まれ、佐賀県出身。 高専を卒業して大手化学メーカーの研究職に就職するが、投資で1200万円作ったので好きなことをやろうと決め、5年で退職する。 現在は保険代理店に勤めながらお金から自由になる仕組みづくりに挑戦している。 趣味は国内旅行。「コロナが明けたら旅行に行こう」が妻との合言葉。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA