順次構造のプログラム
◆ 順次構造
- 1つの処理が終了したら,次の処理に進む



順次構造のプログラムを書くために,print
という関数(命令)を利用します。次のプログラムを,ページ下のプログラムボタンから実行してみてください。
文字列を表示するプログラム
- print("文字列")

「文字列」っていう文字が表示されました。


そうです。
print("文字列")
とすることで,「文字列」の部分を出力することができます。文字を出力(表示)するときは,
「” ”」(ダブルクォーテーション)で囲みます。
数値を出力するときは「” ”」は不要です。
例)print(3)
どうして文字列の場合と数値の場合で,「" "」をつけたりつけなかったりするのかしら。


15 と書いた場合と "15" と書いた場合では別の扱いになります。
15 はプログラムで数値として認識されて数値の計算ができます。
"15" は文字列としての扱いになるので "15" と書いた場合は数値計算はできません。
例えば,
print(15 + 3)
は,18と表示されますが,
print("15" +"3")
は,
153と表示されます。計算ではなく,15という文字と3という文字を「+」という演算子を使って連結したんですね。
ちなみに文字列を表すときには,
"文字列"
(ダブルクォーテーション)
'文字列'
(シングルクォーテーション)
でも同じ扱いになります。
「”文字列”」と「’文字列’」はどのように使い分けるのかな?興味がある人は調べてみよう! 検索エンジンで「Python '"違い」と検索してみるといいよ。

また,このプログラムの書き方にそって複数書くと,上から順番に表示されていきます。
次のプログラムも,記述して実行してみてください。
文字列を表示するプログラム
- print("おはよう")
- print("こんにちは")
- print("こんばんは")

上から順番におはよう,こんにちは,こんばんは,が表示されました!
これが「順次」ってことですね!


そうですね!ちなみにprint
では数値や文字列を組み合わせて出力することもできます。
「+」ではなく「,」が使えます。
- print(15, "歳")


この場合はprint("15歳")
と書くのと同じような結果ですが,あとで数字と文字列が混在した状態で連結したい場合も出てくるので,この書き方も覚えておきましょう。

では実際に順次のプログラムを書いてみましょう。
演習1
- 先ほどの「おはよう」「こんにちは」「こんばんは」に続けて,「おやすみ」が出力されるようにしましょう。
- print("おはよう")
- print("こんにちは")
- print("こんばんは")
- print("おやすみ")

演習2
- 「野球」「サッカー」「水泳」と順に出力されるようにしましょう。
- print("野球")
- print("サッカー")
- print("水泳")

演習3
- 数字は数値で,単位は文字列で「10人」「20人」「30人」と順に出力されるようにしましょう。
- print(10, "人")
- print(20, "人")
- print(30, "人")


ちなみにさっき,print(15 + 3)
は18と出力される,と言いましたが,
print(15 + "歳")
では15歳とは出力されずエラーになります(試してみましょう)。
文字列と数字は「+」では連結できません。

ただ,数値を文字列に,文字列を数値に変換するプログラムを記述すると連結できるようになります。プログラムをコピーして試してみましょう。
数値 ↔ 文字変換
- 数値を文字列にする... str(数値)
- 文字列を数値(整数)にする... int(数値文字列)
- 文字列を数値(小数点含む)にする... float(数値文字列)
- 例) 15歳と出力する
- print(str(15) + "歳")
- 例) 数値文字列を数値に変換する
- print(int("15"))
- print(float("15.5"))
- 例) 数値ではない文字列を変換しようとするとエラーになる
- print(int("15歳")) # 数値ではない
- print(int("15.5")) # 整数ではない
- 例) aに1たした数を出力したい
- a = "5"
- print(int(a) + 1)


5は文字列となっているため,
print(a + 1)
ではエラーになりますが,aの前に「int」をつけることで,文字列が数値に変換され,計算できるようになります。
分岐構造のプログラム(1)

次は「分岐構造」のプログラムですね。
◆ 分岐構造
- ある条件によって2つの処理のどちらかを選択して実行する構造



ある条件によって分岐するっていうと,どんなものを想像しますか?
そうだな…
ゲームでよくどっちを選ぶ?って聞かれるかな。「このまま続ける?」or「おわる?」とか,「Aのワールドに行く」or「Bのワールドに行く」とか。


そうですね。その例も「どのボタンを選ぶか」という条件によって,その先で表示されるものや画面の展開が変わる分岐構造ですね。

分岐構造はif
というコードを使うことで書くことができます。
if
ね!それなら英語といっしょですね!もしこうだったら,という書き方をするのね。


そうです。英単語の意味がわかるとプログラムのコードもわかりやすいですね。

if
と合わせてよく使われる「比較演算子」も確認してみましょう。
よく使われる比較演算子
- x == y x と y が等しい
- x != y x と y が等しくない
- x > y x は y よりも大きい
- x < y x は y よりも小さい
- x >= y x は y と等しいか大きい
- x <= y x は y と等しいか小さい

もし(if) xとyが等しかったら,っていう感じで,ifと組み合わせて使っていくってことか。


たとえば,みんなの試験の採点結果を表示するプログラムを書いてみると,次のようになります。
コピーしてプログラムを実行してみてください。
if score > 80:
のように:
コロンをつけるのを忘れないようにしてくださいね!
試験の合否結果を判断するプログラム
- score = 75
- if score > 80:
- print("合格")
- else:
- print("不合格")


score
が 80 点より高ければ合格,それ以外は不合格ってことね。
この人は score = 75
だから…あら。


点数を変えて,合格や不合格がちゃんと出力されるか,試してみましょう。ほかにも分岐するための条件は「論理演算子」というものでもつくれます。
論理演算子
- ◆ and
- 例)score > 30 and score < 60
- scoreが30より高い,かつ,60未満の場合「正」
- どちらかの条件を満たさない場合「否」
- ◆ or
- 例)score > 80 or score < 20
- scoreが80よりも高いか,scoreが20未満のいずれかの場合「正」
- どちらも条件を満たさない場合は「否」
- ◆ not
- 例)not score > 80
- 否定。「scoreが80よりも高い」ではない場合「正」

うおっ,なんか急に難しくなったぞ。

たしかに…頭がこんがらがりそう。


aとbが両方とも条件にあてはまればこうする,
aとbどちらか一方でもあてはまればこうする,
というような条件設定に使います。
例えばこういうプログラムです。
条件が2つあるプログラムの例
- math_score = 75
- english_score = 80
- if math_score > 80 and english_score > 80:
- print("合格")
- else:
- print("不合格")


なるほど,数学・英語の成績が両方80点より高くないと合格にならないプログラムですね。


プログラムを実際つくるときには,設定したい条件に合わせてこの一覧をまた確認してみてくださいね。
こういった論理演算子の書き方はプログラム言語によっても違うので注意しましょう。

あと,if
の次の行に,インデント(文頭にスペースやタブで字下げしている)があることにも注目してくださいね!
インデントって?


ifの次の行に半角スペースがありますね。
最初にスペースキーやタブキーでスペースをいれることをインデントといいます。
どこからどこまでがifの範囲か,プログラムのかたまりを表しています。
インデントを入れ忘れたり,全角でいれてしまったりすると,エラーになるので要注意です。
エラーメッセージについて(教材の進み具合に余裕のある人は読んでみよう)

そういえば,間違ってプログラムを書いたとき,何やら難しそうな英文が表示されませんか?
みたことあります!どうしたらいいのか困りました...


これはエラーコードといって,プログラムの間違っている内容を教えてくれています。
このエラーコードの場合「IndentationError
」と書いてあります。インデントに関するエラーがある場合に表示されます。
続けて「expected an indented block
」と書いてあり,これは「インデントが無いよ」という意味です。
さらに「line4
」と書いています。4行目に間違いがありそうです。ということでプログラムをみてみると,4行目のprintの前に必要なインデントがありませんね。
英語を読んだらエラーの内容がわかるんだ...!


そうですね。ただ,難しい英語の場合もあります。英語が読めるとプログラムを書くときには有利なのは間違いありませんが,もしどこにエラーが有るのかわからなかったら,表示されたエラーコードを検索してみるといいかもしれません。
Pythonのエラーコードの例
- SyntaxError

- 構文のエラー。「:」が無い,「if」の条件が重複しているなど。この例では2行目のif文の最後に「:」がありません。
- IndentationError

- インデントのエラー。必要なインデントがない場合の「expected an indented block」と不要なインデントが入っている場合の「unexpected indent」がこのエラーコードのあとに続く。
- この例の場合,4行目「else」の前に不要なインデントがあります。
- TypeError

- 不可能な演算を書いてしまった場合などのエラー。
- 例) print("りんご" + 3 + "個")のように,数値と文字列を「+」で結合してしまっている場合。演算子で表すには,「3」を「str(3)」とする必要があります。

分岐構造のプログラム(2)

それでは「if」と「比較演算子」を使ったプログラムをつくってみましょう。
よく使われる比較演算子
- x == y x と y が等しい
- x != y x と y が等しくない
- x > y x は y よりも大きい
- x < y x は y よりも小さい
- x >= y x は y と等しいか大きい
- x <= y x は y と等しいか小さい


まず,はじめにつくるのは,
国語の成績が80点以上なら「合格」,そうでなければ「不合格」を表示するプログラムです。

フローチャートで分岐の条件を整理してみましょう。
japanese_score
は国語の成績のことですね。フローチャートで書くと点数が80点以上かそうでないかで分岐するのがわかりやすくなりますね!


プログラムの構造を整理したいときは,フローチャートを書いてみるといいですよ。

それでは,このフローチャートをプログラムに書いていきましょう。次の演習4に取り組んでください。
参考にさっき解説したプログラムも表示しておきますね(このプログラムよりも簡単な問題です)。
演習4
- 国語の点数(japanese_score)が 80点以上なら「合格」,そうでなければ「不合格」を表示するプログラムを書きましょう。
- 国語の成績は75点だったとして,実行してみてください。
- math_score = 75
- english_score = 80
- if math_score > 80 and english_score > 80:
- print("合格")
- else:
- print("不合格")
- japanese_score = 75
- if japanese_score > 80:
- print("合格")
- else:
- print("不合格")


では次に,このプログラムを改造して80点以上は合格,60点以上80点未満の場合は追試,60点未満の場合は不合格のプログラムをつくってみましょう(演習5)。
elif
を使うと,条件を追加することができますよ。
演習5
- 国語の点数(japanese_score)が80点以上は「合格」,60点以上80点未満の場合は「追試」,60点未満の場合は「不合格」を表示するプログラムを書きましょう。
- 国語の成績は75点だったとして,実行してみてください
- 参考
- if ...もし~なら(条件1)
- elif ...条件1以外で,もし~なら
- else ...どの条件にもあてはならないなら
- japanese_score = 75
- if japanese_score >= 80:
- print("合格")
- elif japanese_score >= 60:
- print("追試")
- else:
- print("不合格")

条件分岐が増えるんですね。


できたら,japanese_score
の数字を変更して,正しくプログラムが動くかどうか確かめてくださいね。

できましたか?以下のように書かれていれば,正しく動作します。

ここで,もっと理解を深めるために次の演習にもチャレンジしてみましょう!
演習6
- 下のプログラムで,「合格」と出力される条件を「70点より高い場合」(※70点は追試)に変更しましょう。
- japanese_score = 75
- if japanese_score >= 80:
- print("合格")
- elif japanese_score >= 60:
- print("追試")
- else:
- print("不合格")
- japanese_score = 75
- if japanese_score > 70:
- print("合格")
- elif japanese_score >= 60:
- print("追試")
- else:
- print("不合格")

演習7
- 体温が37.0度未満の場合は「問題無し」,
- 37.0度以上,38.0度以下の場合は「要注意」,
- 38.0度より高い場合は「高熱注意」
- と表示されるプログラムをつくりましょう。
- 体温は「taion」とし,さまざまな数値で実行して正しく動作していることを確認しましょう。
- taion = 37.0
- if taion < 37.0:
- print("問題無し")
- elif taion <= 38.0:
- print("要注意")
- else:
- print("高熱注意")
