どうも! 職業訓練生のがっちゃんです!
50歳にして長期人材育成「情報セキュリティ管理者資格」2年コースを絶賛受講中です!
今回は、授業で習った「Python3系」プログラミングの基礎について書いていきたいと思います。Pythonでも、2系とか3系とかあるみたいで、プログラムの仕方も少々違うようです。ここでは授業で習った「Python3系」のプログラミングについて書いていきます。
プログラミングで使用したソフトは「Anaconda」というパッケージソフトの「Spyder4」というアプリを使って勉強しました。
- 1 Spyder4の使い方を簡単に紹介
- 2 マジックコメントとコメント
- 3 逐次実行、順次実行
- 4 条件分岐:if構文
- 5 「任意の文字を入力してもらう:input」「追加の条件分岐:elifとelse」「何もしないブロックを作る:pass」
- 6 反復処理(繰り返し):while構文
- 7 ループの先頭に戻る:continue
- 8 強制的に繰り返し文から抜ける:break
- 9 range関数を用いたforループ
- 10 練習問題1:Fizz Bazz問題
- 11 リストを作成して複数のデータをまとめて使う:[]
- 12 リストの応用操作
- 13 タプルを作成して複数のデータをまとめて使う: ( )
- 14 タプルの作成
- 15 辞書機能:Dict { “keyword”:”value” }
- 16 練習問題2:文字当てゲームの作成
- 17 まとめ
Spyder4の使い方を簡単に紹介
下図のような画面が出てきます。左にプログラムを書き、右に実行結果が出力されます。
起動直後、下図のようにデフォルト(初期設定)で「temp.py」というフォルダが作られます。自分で作るには、一番左端の「new file」で作成、一つ飛んで右の「save file」で名前をつけて保存しておきましょう。今回は「test01.py」で作成。
プログラムを作成し、実行する時は画面上の「▶︎」ボタンを押します。
マジックコメントとコメント
「test.py」ファイル上の方に自動記述されている「# -*- coding: utf-8 -*-」は、マジックコメントと呼ばれる記述です。python2系の名残で、デフォルトの文字コードがアスキーだったので、これによりマルチバイト宣言(UTF-8)する必要がありました。python3系では、デフォルト設定がUTF-8なので記述する必要はありません。
1行コメントは # の後に半角スペースを空けてからコメントを記入します。
一括コメントアウト: 「ctrl」+「1」キーで、マウスで指定した範囲を一括コメントアウトできます。
複数行のコメントは「”””」と「”””」で囲む。こんな感じです。
1 2 3 4 5 |
""" 上から 職業訓練生のがっちゃんです! 下まで、ここがコメントになります。 """ |
逐次実行、順次実行
Pythonはインタープリター方式(プログラムを1行ずつ機械語に変換しプログラムを実行する)でプログラムが実行されます。プログラムは、上の行から順番に実行されていきます。これを「逐次実行」「順次実行」と言います。
左側がプログラムで、右側が実行結果となります。
pythonでは、半角スペースを入れて記述するのがお約束です。また、各行の最後にセミコロン「;」の記述は不要です。
条件分岐:if構文
条件記述の終わりにコロン「:」を記述します。また、ブロック内を示す、カッコ()、{}の代わりに、インデント(半角スペース4つ)が使用されます。Pythonに対応しているエディタなら「TAB」キーで入力できますが、通常は「TAB」キーを使うと半角スペース5つになるので注意が必要です。
「任意の文字を入力してもらう:input」「追加の条件分岐:elifとelse」「何もしないブロックを作る:pass」
任意の文字を入力してもらうには「input」を使います。そのままでは何を入力すればわかりませんので、コメントを添えて記述するようにしましょう。入力文字、数字は全て文字列として認識されてしまいます。そのため、数字として認識させるには、「x = int( x )」のように、一度変換させる必要があります。以下では、変換前と後の型をprint( type(X) )で表示させています。「str」(文字列)から「int」(整数)に変換されていることがわかります。
条件分岐は「elif」や「else」で複数に条件を分岐させることができます。上図では、任意の数字を入力してもらい、3つの条件分を準備してプログラムを実行させました。
反復処理(繰り返し):while構文
whileで最初に条件を記述し、その条件に合致しているとき、ブロック内の処理を繰り返し実行します。
「i = i + 1」の場所により実行結果が少し違うところを確認してください。
ループの先頭に戻る:continue
以下は「i」の値が2で割り切れる時は、continueによりwhile分の先頭に戻り、2で割り切れない時はプリント文が実行されています。
強制的に繰り返し文から抜ける:break
以下は「i」の値が2で割り切れる時、breakにより、強制的にループから抜けるようなプログラムになっています。そのため、最初のiの値が「1」のときだけプリント文が実行され、iの値が「2」のときは割り切れるので、breakが発動し、ループから抜け出したことがわかります。
range関数を用いたforループ
「range関数」は、以下の実行結果から分かるように、一定の範囲の数字を呼び出す関数です。以下の場合、「0から始まる数字を10個呼び出すよ」という意味になります。
実際にforループで実行してみます。実行結果の通り0から9までの数字を10個呼び出してくれています。
break を使って、iが8になったら、forループから抜け出すようにしました。
range関数でリストを生成します。この詳細については、別途学習します。ここでは、「こんな感じで作るんだ」程度でご理解を。
練習問題1:Fizz Bazz問題
どんなプログラミングでも出てくる超有名練習問題だそうです。私は今回が初めて。
1から100まで1行ごとに出力する。ただし、3で割り切れる場合は「Fizz!」、5で割り切れる場合は「Buzz!」、両者で割り切れる場合(つまり15で割り切れる場合)は「Fizz! Buzz!」と数字の代わりに出力させましょう。
この問題の主旨は、forループ文が使えるか、if,elif,elseの条件分岐が使えるかどうかを試されています。
また、15で割り切れる条件分岐を、プログラムの順番で、下に持っていかず、一番上に処理をもってきて、先にこの条件に合致する処理を実行しないと「Fizz!Buzz!」が表示されないこと(プログラム処理は順実実行であること)を知ってもらうことが主旨でもあります。
※下のプログラムではわざと、全ての数字を表示させるようにしています。

リストを作成して複数のデータをまとめて使う:[]
他の言語では「配列」と呼ばれていますが、pythonでは「リスト」と言われています。数字や文字、論理値が混在していても成立します。書き方はコンマの後に半角スペースを入れて書いていきます。
「numbers」というリストを作成し、それぞれの呼び出し操作を書いています。
リストの応用操作
[ ○, △, □ ]
○番目の値から、△番目の手前の値まで、□飛びでリストの値を取り出してください。記述がなければ「0」が入っていると考える。
リストの中の値を表示
「len」(length)はこんなふうにも使えます。
リストの生成
「追加:append,insert」
「append」はリストの最後尾に追加されていきます。すでにリストに存在するものも挿入が可能です。
「number2」というカラのリストを作成し、5、10、15と追加する。
一度に複数の追加はできません。以下のようにエラーが発生します。
「insert」はリストの途中に指定して、値の挿入が可能です。下図では、1番目に20を挿入、その後、4番目に110を挿入(リストは0始まりであることを忘れずに設定すること)。
「削除:remove,pop」
「remove」は、削除したい値を選んで削除ができます。下図では、7を削除します。
「pop」は、何番目の値かを指定して削除します。下図では、1番目の値を削除します。
結合:extend
「numbers1」と「numbers2」を結合。結合してもnumbers2はそのまま残っています。
「numbers2」に「numbers1」を結合。
並べ替え:昇順:sort、sort( reverse=False ) 降順:sort( reverese=True )
昇順はsortで並べ替えることができます。降順はreverseに論理値True(Tは大文字にすること)を組み合わせることで並べ替えることができます。論理値をFalse(Fは大文字にすること)にすると昇順になります。
タプルを作成して複数のデータをまとめて使う: ( )
タプルでは要素の入れ替えや増減ができません。タプルの中身を表示するには以下のように実行します。要素を指定する場合は [ ] で指定のindexをくくります。
タプルの中身を変更しようとすると、以下のようにエラーになります。
タプルの作成
カラのタプルに100を入れようとすると、やはりエラーになります。
辞書機能:Dict { “keyword”:”value” }
辞書機能で、調べたい物を指定する場合は[“ ”]でくくる。
getメソッド
「get」メソッドを使用した場合、辞書に存在するものなら、表示に特に変化はみられない。しかし、辞書に存在しないものを指定した場合、getメソッドがあるとエラー表示にならないが、getメソッドがないとエラー表示されてしまいます。
「get」メソッドで尋ねると「none」(そんなん辞書にありませんよ)と教えてくれます。
辞書に追加する: [“ ”] = “ ”
辞書に存在する魚の場合は追加ではなく「書き換え」になります。
for文で辞書の内容を表示
練習問題2:文字当てゲームの作成
リストに文字を用意します。キーボードから一文字入力してもらい文字がリストに含まれているかどうかを判定するプログラムを作成しましょう。
以下、サンプルプログラムです。右図は実行結果です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# -*- coding: utf-8 -*- """ Created on Fri Jun 19 14:42:36 2020 @author: 3c17 """ # 文字あてゲーム """ リストに文字を用意します キーボードから一文字入力してもらい 文字がリストに含まれているかどうかを判定する """ # ゲーム開始を表示 print("文字あてゲーム始まるよ~(*^-^*)") print("リストの中に入っているアルファベット(大文字)を当ててみて!") print("1文字でいいよ!") # リストの準備 moji_list = ["A", "C", "H", "L", "O", "Q", "T", "V", "Y", "Z" ] print(moji_list) # あっているか間違っているかの検証用変数 result = False # mojiを入力してもらう moji = input("リストの中に入っている文字は、なぁ~んだ!?:") for a in moji_list: if a == moji: result = True print(type(result)) break # print(type(result)) if result: print("やったね!正解!!") else: print("残念!その文字は入ってないわぁ~") |
まとめ
Pythonの初級編でしたが、いかがでしたか!?1年間、Javaをやっていたので、私的には超余裕でした。今年度から基本情報処理試験の午後問題「プログラミング」では、この「Python」も選択肢に入る事になりました。
私は今年度は「Python」プログラムを選択しようと思っています!こんな簡単な問題じゃないんでしょうが、なんだか全問正解できそうな予感!?あ!予感だけっすよ。初めて出題されるプログラミングだから問題もちょっと易しいんじゃないかなぁ、って。
それでは本日も最後までお付き合いいただき、ありがとうございました!