プログラミング演習・14章版 第1章 プログラミングとは何か
教材コード

プログラミングとは何か

スマートフォンのアプリ,銀行のATM,電車の自動改札,病院の検査機器.わたしたちの まわりにある機械の多くは,コンピュータによって動いています.そして,その コンピュータに「どう動いてほしいか」を伝えているのがプログラムです. この章では,コードを書き始める前に,「そもそもプログラムとは何か」「コンピュータは どんなふうに考えるのか」を,身近なたとえを使って理解しましょう.

プログラムってなんだろう

朝,学校や職場へ出かけるまでに,わたしたちは無意識のうちにたくさんの手順を こなしています.

起きる → 顔を洗う → 朝ごはんを食べる → 着がえる → かばんを持つ → 家を出る

これらを順番どおりに行うからこそ,わたしたちはちゃんと出かけられます. もし「家を出る」を先にやってしまったら,パジャマのまま外に立っていることに なってしまう.

プログラムとは,このような「やってほしいことの手順を, 順番に書き並べたもの」です.書き並べる相手が人ではなくコンピュータである,という 点だけが違う.そして,その手順を考えて書く作業をプログラミング といいます.

  • プログラムとは「コンピュータにやってほしい手順を順番に書いたもの」.

  • 手順を考えて書くことをプログラミングといいます.

命令と表示の対応

知識

プログラムは、コンピュータへ実行させる命令を書いたものです。命令の順序も結果の一部です。

print("おはよう")
print("こんにちは")
そのまま演習命令と表示の対応

実行前に、表示される行数と各行の値を予想してください。上のコードを編集欄へ開き、変更せずに実行します。その後「出力例」を開き、予想と実行結果を比べてください。入力操作はありません。各表示行の末尾には改行があります。

出力例
おはよう
こんにちは
ヒントを見る

命令を上から1行ずつ追って、表示する文字列と出力の順番を予想してください。引用符自体は出力されません。

演習の解説

最初のprintが「おはよう」を、次のprintが「こんにちは」を表示します。文字列を半角の引用符で囲み、半角の丸括弧でprintへ渡します。

虫食い命令と表示の対応

___の1か所だけを補い、上と同じ結果が出るコードにしてください。他の行は変えません。

___("おはよう")
print("こんにちは")
ヒントを見る

各命令が表示する文字と、実行する順番を分けて追ってください。空欄には表示処理の名前が入ります。

虫食いの解説
print("おはよう")
print("こんにちは")

空欄には print が入ります。最初のprintが「おはよう」を、次のprintが「こんにちは」を表示します。文字列を半角の引用符で囲み、半角の丸括弧でprintへ渡します。

コンピュータは「入力・処理・出力」で動く

コンピュータの仕事は,つきつめると次の3つの段階に分けられる (図1.1).

入力(インプット)

データを受け取ります. 例:キーボードで数値を打ち込む,ファイルを読み込みます.

処理(プロセス)

受け取ったデータを計算したり, 並べかえたり,判定したりします.

出力(アウトプット)

結果を外に出します. 例:画面に表示する,ファイルに保存します.

コンピュータの基本の流れ:入力・処理・出力

たとえば「テストの点数を入力すると,平均点を表示する」プログラムなら,点数を 受け取るのが入力,平均を計算するのが処理,平均点を画面に出すのが 出力です.この本でこれから作るプログラムは,すべてこの「入力 → 処理 → 出力」の組み合わせでできています.

入力から合計点まで

知識

入力・処理・出力を分けると、どこで何が変わったかを追えます。この例では、受け取った点数を足してから表示します。

kokugo = 80
suugaku = 75
print(kokugo + suugaku)
そのまま演習入力から合計点まで

実行前に、表示される行数と各行の値を予想してください。上のコードを編集欄へ開き、変更せずに実行します。その後「出力例」を開き、予想と実行結果を比べてください。入力操作はありません。各表示行の末尾には改行があります。

出力例
155
ヒントを見る

受け取った2科目の点数を紙に書き、その後の式へ当てはめます。表示されるのは各科目の値か、計算結果かを区別してください。

演習の解説

80と75を受け取り、加算して155を作り、printで表示します。入力を用意する行と計算結果を出す行の役割を区別してください。

虫食い入力から合計点まで

___の1か所だけを補い、上と同じ結果が出るコードにしてください。他の行は変えません。

kokugo = 80
suugaku = 75
print(kokugo ___ suugaku)
ヒントを見る

2科目を合わせた点数を求めます。一方の点数だけにならない計算を考えてください。

虫食いの解説
kokugo = 80
suugaku = 75
print(kokugo + suugaku)

空欄には + が入ります。80と75を受け取り、加算して155を作り、printで表示します。入力を用意する行と計算結果を出す行の役割を区別してください。

アルゴリズム:手順を正しい順番で

料理のレシピを思い出してください.「材料を切る → 炒める → 味つけする → 盛りつける」という手順が書かれています.順番を入れかえて 「盛りつけてから炒める」ことはできません.

このように,ある目的を達成するための手順を,あいまいさなく,正しい順番で 並べたものをアルゴリズムといいます.プログラムを書くとは, まずこのアルゴリズム(手順)を考え,それをコンピュータの言葉(ここでは Python)で 書き表すことだといえる.

もう少していねいに考えてみましょう.たとえば「カレーを作る」という目的に対して, 次のような手順を書いたとします.

(1) 玉ねぎとにんじんを切る → (2) なべで炒める → (3) 水を入れて煮る → (4) ルウを入れて溶かす → (5) もう少し煮る → (6) 皿に盛る

この手順には3つの大切な性質があります.第一に,どの手順もはっきりしている (だれが読んでも同じことをする).第二に,正しい順番に並んでいる ((3)の前に(4)はできない).第三に,いつか必ず終わる(6つ目の手順で 完成する).アルゴリズムとは,この3つを満たすように手順を並べたものだと考えて よいでしょう.

図1.2は「朝,出かけるまで」をアルゴリズムとして表したものです. このような,手順を箱や矢印で表した図を流れ図(フローチャート)と いう.長方形の箱が1つ1つの手順を表し,矢印が「次にどこへ進むか」を表しています. そして,ひし形のところで「雨が降っている?」と条件によって道が 分かれている点に注目してください.「はい」なら傘を持ち,「いいえ」ならそのまま 出かける,というように進む先が変わります.手順はいつも一直線とはかぎらず,状況に よって分かれることがあります.こうして言葉だけでなく図で表すと,手順の全体の流れが ひと目で分かるようになります.

「出かけるまで」のアルゴリズム(流れ図)

アルゴリズムには「あいまいさ」があってはいけません.「適当に味つけする」では コンピュータは動けません.「塩を2グラム入れる」のように,だれが読んでも同じことを する,はっきりした手順にする必要があります.

計算手順を組み立てる

知識

アルゴリズムでは、後の処理が必要とする値を先に準備します。価格と個数を決めてから支払額を計算します。

nedan = 120
kosu = 3
goukei = nedan * kosu
print(goukei)
そのまま演習計算手順を組み立てる

実行前に、表示される行数と各行の値を予想してください。上のコードを編集欄へ開き、変更せずに実行します。その後「出力例」を開き、予想と実行結果を比べてください。入力操作はありません。各表示行の末尾には改行があります。

出力例
360
ヒントを見る

単価、個数、合計が決まる順に変数の値を書き出します。最後の表示まで、どの行も飛ばさず追ってください。

演習の解説

120円の商品3個なので120×3=360です。goukeiを表示する前に、その値を代入する行が必要です。

虫食い計算手順を組み立てる

___の1か所だけを補い、上と同じ結果が出るコードにしてください。他の行は変えません。

nedan = 120
kosu = 3
goukei = nedan ___ kosu
print(goukei)
ヒントを見る

商品1個の代金を、個数分だけ合わせる計算を考えてください。変数を準備する順番にも注目します。

虫食いの解説
nedan = 120
kosu = 3
goukei = nedan * kosu
print(goukei)

空欄には * が入ります。120円の商品3個なので120×3=360です。goukeiを表示する前に、その値を代入する行が必要です。

コンピュータは言われたことだけを正確にやる

プログラミングを学ぶうえで,いちばん最初に心に留めておきたいことがあります.それは, コンピュータは「言われたことだけ」を「言われたとおりに」正確に実行する という性質です.人間のように「たぶんこういう意味だろう」とくみ取ってくれることは ない.

身近なたとえで考えてみましょう.友だちにおつかいを頼むとき,「牛乳買ってきて」とだけ 言えば,相手はお店の場所も,だいたいの値段も自分で判断して買ってきてくれます. だが,コンピュータはそうはいきません.コンピュータに頼むときは,「家を出る → スーパーへ行く → 牛乳売り場へ行く → 1本手に取る → レジで払う → 家へ帰る」というように,抜けや飛ばしがないように すべて伝えなければなりません.1つでも手順が抜けると,そこで止まってしまう.

このことは,一見めんどうに思えるかもしれません.しかし裏を返せば,コンピュータは 書いたとおりに,何度でも,同じように実行してくれる,ということでもあります. 気分や体調で結果が変わったりしません.だからこそ,何千件もの計算を正確にこなせるの です.

そして,もしプログラムが思ったとおりに動かないときは,たいていの場合 「コンピュータが間違えた」のではなく,こちらの書いた手順のどこかが 間違っている.プログラミングの上達とは,「コンピュータが分かるように,あいまいさ なく手順を書く力」をみがくことだといってよいでしょう.

「思ったとおりに動かない」のは,たいていコンピュータのせいではなく,書いた手順の どこかが間違っているからです.「自分のどこが間違っていたのか」をさがすつもりで プログラムを見直すと,原因が見つかりやすい.

このことを,実際に小さなプログラムで見てみましょう.買い物の場面を思いうかべて, 「店に入る」「品物をかごに入れる」「レジで払う」という手順を,そのまま3行の printで書いてみる.

chapter-01_code_1.py
print("店に入る")
print("品物をかごに入れる")
print("レジで払う")

実行すると,画面には書いたとおりの順番で表示されます.

実行結果の例
店に入る
品物をかごに入れる
レジで払う

ここで,もし2行目と3行目を入れかえて「レジで払う」を先に書いたら,どうなる でしょうか.コンピュータは「払ってから品物をかごに入れる」という,現実には おかしな順番を,文句も言わずそのまま表示します.コンピュータは内容の良し悪しを 判断しているのではなく,ただ書かれた順に実行しているだけだからです. つまり,正しい結果を出せるかどうかは,すべて手順を書く側にかかっています.

コンピュータは「手順がおかしい」と気をきかせて直してはくれません.書いた順番が そのまま結果になります.だから,思った結果にならないときは,行の内容ではなく 並べた順番があっているかも確かめるとよいでしょう.

  • コンピュータは「言われたことだけ」を「言われたとおりに」正確に実行します.

  • 手順は,抜けや飛ばしがないように,1つ1つはっきり書く必要があります.

  • 思ったとおり動かないときは,まず自分の書いた手順を疑う.

同じ命令を3回実行する

知識

同じ命令を書けば同じ命令を繰り返し実行します。コンピュータが意図を推測して文を省くことはありません。

print("こんにちは")
print("こんにちは")
print("こんにちは")
そのまま演習同じ命令を3回実行する

実行前に、表示される行数と各行の値を予想してください。上のコードを編集欄へ開き、変更せずに実行します。その後「出力例」を開き、予想と実行結果を比べてください。入力操作はありません。各表示行の末尾には改行があります。

出力例
こんにちは
こんにちは
こんにちは
ヒントを見る

同じあいさつでも、それを表示する命令は別々の行にあります。表示命令の数と出力の行数を比べてください。

演習の解説

printが3行あるため、同じあいさつが3行表示されます。同じ文字だからといって2回目以降が省略されることはありません。

虫食い同じ命令を3回実行する

___の1か所だけを補い、上と同じ結果が出るコードにしてください。他の行は変えません。

___("こんにちは")
print("こんにちは")
print("こんにちは")
ヒントを見る

同じ内容でも命令の数だけ実行されます。空欄の行を飛ばさず、1行ずつ出力を追ってください。

虫食いの解説
print("こんにちは")
print("こんにちは")
print("こんにちは")

空欄には print が入ります。printが3行あるため、同じあいさつが3行表示されます。同じ文字だからといって2回目以降が省略されることはありません。

プログラミングの3つの基本:順次・分岐・繰り返し

どんなに複雑に見えるプログラムも,たった3つの基本的な仕組みの組み合わせでできて いる(図1.3).

  1. 順次:書いた順に,上から下へ1つずつ実行します.

  2. 条件分岐:条件によって,やることを変えます.

  3. 繰り返し:同じことを何度もくり返します.

プログラミングの3つの基本構造

この本では,第2章で「順次」を,第4章で「条件分岐」を,第5章で「繰り返し」を, 順番に学んでいく.いまは「プログラムはこの3つでできているんだな」と ぼんやり覚えておけば十分です.

順次実行の3段階

知識

順次は順番どおり、分岐は条件に応じて、繰り返しは同じ処理を何度も実行する構造です。まず順次の表示順を確かめます。

print("命令1")
print("命令2")
print("命令3")
そのまま演習順次実行の3段階

実行前に、表示される行数と各行の値を予想してください。上のコードを編集欄へ開き、変更せずに実行します。その後「出力例」を開き、予想と実行結果を比べてください。入力操作はありません。各表示行の末尾には改行があります。

出力例
命令1
命令2
命令3
ヒントを見る

3つの命令には異なる文字列が渡されています。上からの実行順と、画面へ現れる順番を対応させてください。

演習の解説

実行順と表示順はどちらも命令1、命令2、命令3です。行を入れ替えると表示順も変わります。分岐と繰り返しは第4章・第5章で実際に書きます。

虫食い順次実行の3段階

___の1か所だけを補い、上と同じ結果が出るコードにしてください。他の行は変えません。

___("命令1")
print("命令2")
print("命令3")
ヒントを見る

最初、次、最後の命令を別々に数え、表示順を書き出してから実行します。

虫食いの解説
print("命令1")
print("命令2")
print("命令3")

空欄には print が入ります。実行順と表示順はどちらも命令1、命令2、命令3です。行を入れ替えると表示順も変わります。分岐と繰り返しは第4章・第5章で実際に書きます。

はじめてのプログラム

百聞は一見にしかず.Python でいちばん簡単なプログラムを見てみましょう. 画面に文字を表示するだけのプログラムです.

chapter-01_code_3.py
print("はじめまして")

これを実行すると,画面に次のように表示されます.

実行結果の例
はじめまして

print(プリント)は「カッコの中身を画面に表示しなさい」という 関数である(関数については第2章でくわしく説明する).表示したい 文字は,ダブルクォート "\," ではさむ.たったこれだけで,コンピュータに 「画面に文字を出す」という仕事をさせることができました.これがプログラミングの 第一歩です.

カッコ (\ ) やダブルクォート "\ " は,すべて半角で 入力します.日本語入力(全角)の「()」や「” ”」を使うとエラーになります. 半角と全角のちがいは,初めての人がいちばんつまずくところです.あせらず, 半角になっているか確認するくせをつけよう.

上から順に実行される

プログラムの行が2行以上になると,どの順番で実行されるのかが気になってくる. 答えはとてもかんたんで,上の行から下の行へ,1行ずつ順番に実行されます. これが,先に出てきた順次という基本です.次のプログラムで確かめてみましょう.

chapter-01_code_5.py
print("おはよう")
print("いってきます")
print("ただいま")

これを実行すると,画面には次のように表示されます.

実行結果の例
おはよう
いってきます
ただいま

書いた順に「おはよう」「いってきます」「ただいま」と並んでいます.printは 1回呼ぶごとに1行分を表示し,自動的に改行します.だから3つのprintが,画面では 3行に分かれて出てくるのです.ここで,もし1行目と3行目を書く順番を入れかえれば, 表示される順番もそのまま入れかわる.書いた順番が,そのまま実行の順番に なるということを,まず体で覚えておこう.

行を書く順番は,そのまま実行の順番になります.「あとに書いたものが先に表示される」と いったことは起こりません.思った順番で出てこないときは,まず行の並び順を見直します.

もう1つ,順番を体で覚えるための例を見ておこう.今度は,リレーで走る順番を 読み上げる場面を考えます.第1走者から第4走者まで,番号の順に表示してみる.

chapter-01_code_7.py
print("1ばん")
print("2ばん")
print("3ばん")
print("4ばん")

実行結果は次のようになります.

実行結果の例
1ばん
2ばん
3ばん
4ばん

4つのprintを上から並べただけで,番号が1,2,3,4の順にきちんと 表示されました.これがまさに,図1.3で示した3つの基本のうちの 順次です.行を上から下へ1つずつたどっていくこの動きが,これから 学ぶすべてのプログラムの土台になります.

あいさつを表示する

知識

最初のプログラムでは、短いprintから実行と確認の一巡を経験します。句読点も文字列の一部です。

print("こんにちは、世界!")
そのまま演習あいさつを表示する

実行前に、表示される行数と各行の値を予想してください。上のコードを編集欄へ開き、変更せずに実行します。その後「出力例」を開き、予想と実行結果を比べてください。入力操作はありません。各表示行の末尾には改行があります。

出力例
こんにちは、世界!
ヒントを見る

表示する文字列の始まりと終わりを確認し、引用符を除いた内容を予想します。文字列内の句読点も残してください。

演習の解説

文字列の内容が1行で表示され、最後に改行します。引用符自体は表示されません。全角の感嘆符は文字列内のデータとして使えます。

虫食いあいさつを表示する

___の1か所だけを補い、上と同じ結果が出るコードにしてください。他の行は変えません。

___("こんにちは、世界!")
ヒントを見る

引用符の中身は表示するデータです。そのデータを画面へ出すために、括弧の前へ何を書くか考えます。

虫食いの解説
print("こんにちは、世界!")

空欄には print が入ります。文字列の内容が1行で表示され、最後に改行します。引用符自体は表示されません。全角の感嘆符は文字列内のデータとして使えます。

この本の進め方

次の章からは,実際にプログラムを書きながら学んでいく.各節は,次の流れで 進みます.

  1. 身近な場面:その仕組みが,日常のどんな場面に当たるかを考えます.

  2. 例題:短いプログラム(20行以内)と,その実行結果を見る.

  3. 解説:プログラムを1行ずつ,ていねいに読み解く.

  4. つまずきポイント:よくある間違いを先に知っておく.

  5. 要点:その節の大事なところを短くまとめる.

枠の見方

この本には,2種類の枠が何度も出てくる.先に見方を知っておくと読みやすい.

1つ目は,これまで見てきた左に番号がついた枠です.これは プログラム(自分で入力する部分)を表します.左はしの数字は行番号で, 入力する必要はありません.解説で「3行目」というときは,この番号を指しています.

chapter-01_code_9.py
print("これはプログラムの枠")

2つ目は,番号がなく,左の線だけがある枠です.これは,そのプログラムを 実行したときに画面に出てくる結果(実行結果)を表します.自分で入力するもの ではなく,「こう表示されれば成功」という見本です.

実行結果の例
これは実行結果の枠

つまり,番号つきの枠が「コンピュータへの指示」,線だけの枠が「コンピュータからの 返事」だと考えればよいでしょう.実際に入力するのは,いつも番号つきの枠のほうだけです.

プログラミングは,スポーツや楽器と同じで,自分の手を動かすことでしか 身につきません.本を読むだけでなく,ぜひ実際に入力して,実行してみてください. うまくいかなくても大丈夫です.エラーは「ここを直してね」というコンピュータからの メッセージで,こわいものではありません.

  • コンピュータは「入力 → 処理 → 出力」で動く.

  • 手順をあいまいさなく並べたものがアルゴリズム.

  • プログラムは「順次・条件分岐・繰り返し」の3つの基本でできています.

  • print(...) はカッコの中身を画面に表示します.記号はすべて半角.

予測して実行する

知識

予測してから実行し、予測と結果を比べると理解のずれが見つかります。短い計算でも計算順を言葉にします。

print(2 + 3 * 4)
そのまま演習予測して実行する

実行前に、表示される行数と各行の値を予想してください。上のコードを編集欄へ開き、変更せずに実行します。その後「出力例」を開き、予想と実行結果を比べてください。入力操作はありません。各表示行の末尾には改行があります。

出力例
14
ヒントを見る

掛け算の部分の計算を先に済ませ、その値を使って足し算します。1つの表示命令が何行出すかも予想してください。

演習の解説

掛け算を先に計算して3×4=12、その後2を加えて14です。コードを実行する前に結果を予測し、違ったら計算の順番へ戻ります。

虫食い予測して実行する

___の1か所だけを補い、上と同じ結果が出るコードにしてください。他の行は変えません。

print(2 + 3 ___ 4)
ヒントを見る

足し算と掛け算が混ざっています。通常の計算でどちらを先に求めるかに注目してください。

虫食いの解説
print(2 + 3 * 4)

空欄には * が入ります。掛け算を先に計算して3×4=12、その後2を加えて14です。コードを実行する前に結果を予測し、違ったら計算の順番へ戻ります。

図で理解する

入力から出力まで
入力から出力まで
アルゴリズムをコードにする
アルゴリズムをコードにする

練習して確かめる

章末演習(10問)

ここには解答を載せていません。

  1. 章末演習章末演習 1

    print() 関数に文字列を渡して、1行のメッセージ Hello, Python! を画面に表示するプログラムを書いてください。Pythonで文字列を表示するいちばん基本的な形を確認する問題です。

    入力

    入力なし(キーボードからの入力は行わず、input() は使わない)。

    処理条件

    • print() を1回だけ使い、ダブルクォーテーション " で囲んだ文字列を渡す。
    • 変数、f文字列、import は使いません。

    出力

    • 1行だけ表示します。すべて半角文字で Hello, Python! とします。
    • H と P は大文字にし、ほかの英字は小文字にします。カンマ , の直後に半角スペースを1つ入れ、最後は半角の感嘆符 ! にします。
    • 行頭と行末に空白を付けません。見出しや空行などの余分な表示はしません。

    実行例

    Hello, Python!
    

    右側のエディタにコードを書いて実行し、実行結果が実行例と1文字も違わないことを確認してください。

    ヒントを見る

    表示したい文字列を1文字ずつ確かめてから、それを何で囲めば文字列として扱われるかを考えます。カッコ、クォーテーション、カンマが半角になっているかも確認しましょう。

  2. 章末演習章末演習 2

    print() を複数書くと、プログラムは上から下へ、書いた順に1行ずつ実行されます(順次実行)。この性質を使って、あいさつを3行表示するプログラムを書いてください。

    入力

    入力なし(キーボードからの入力は行わず、input() は使わない)。

    処理条件

    • print() を3回使い、1回の print() で1行を表示します。
    • 1つの文字列の中で改行する書き方(\n や三重クォーテーション)、sep= や end= の指定、変数は使いません。

    出力

    • 次の3行をこの順に表示します。どの行も全角の日本語だけで書き、句読点と空白は入れません。 1行目 こんにちは、2行目 プログラミングをはじめよう、3行目 よろしくお願いします
    • 見出しや空行などの余分な表示はしません。

    実行例

    こんにちは
    プログラミングをはじめよう
    よろしくお願いします
    

    右側のエディタにコードを書いて実行し、実行結果が実行例と1文字も違わないことを確認してください。

    ヒントを見る

    まず表示したい行の数と順番を確認し、1行に1つの命令を対応させます。書いた順番がそのまま表示される順番になることに注意しましょう。

  3. 章末演習章末演習 3

    カレーの作り方を、見出し1行、空行1行、手順4行の順に表示するプログラムを書いてください。カッコの中に何も書かない print() を実行すると、何も書かれていない空行が1行表示されます。手順の順番を入れ替えずに並べることが目標です。

    入力

    入力なし(キーボードからの入力は行わず、input() は使わない)。

    処理条件

    • print() を6回使い、1回の print() で1行を表示します。
    • 空行は、カッコの中に何も書かない print() で表示します。
    • 1つの文字列の中で改行する書き方(\n や三重クォーテーション)、sep= や end= の指定、変数は使いません。

    出力

    • 全部で6行を次の順に表示します。 1行目 カレーの作り方、2行目 空行(空白文字も入れない)、3〜6行目 手順
    • 手順の行は「半角数字、半角ピリオド .、半角スペース1つ、全角の手順文」の形にします。手順は やさいを切る → 肉とやさいをいためる → 水を入れて煮こむ → ルーを入れて完成 の順に並べ、番号は1から4とします。
    • 行末に空白を付けません。ほかの余分な表示はしません。

    実行例

    カレーの作り方
    
    1. やさいを切る
    2. 肉とやさいをいためる
    3. 水を入れて煮こむ
    4. ルーを入れて完成
    

    右側のエディタにコードを書いて実行し、実行結果が実行例と1文字も違わないことを確認してください。

    ヒントを見る

    表示する6行を上から順に書き出し、それぞれに1つの命令を対応させます。空行の行で何を表示するのか、番号の後ろの記号と空白が半角かどうかに注目しましょう。

  4. 章末演習章末演習 4

    英文を、大文字・小文字や記号まで正確に3行表示するプログラムを書いてください。3行目にはアポストロフィ ' が入っています。文字列をダブルクォーテーション " で囲めば、その中にアポストロフィをそのまま書けます。

    入力

    入力なし(キーボードからの入力は行わず、input() は使わない)。

    処理条件

    • print() を3回使い、1回の print() で1行を表示します。
    • 文字列はすべてダブルクォーテーション " で囲む。バックスラッシュを使って記号を書く方法(エスケープ)は使いません。
    • 1つの文字列の中で改行する書き方、sep= や end= の指定、変数は使いません。

    出力

    • すべて半角文字で、次の3行をこの順に表示します。 1行目 Hello, World!、2行目 I love Python!、3行目 It's fun!
    • 大文字にするのは Hello の H、World の W、I、Python の P、It's の I だけで、ほかの英字は小文字にします。
    • 単語の間には半角スペースを1つ入れ、Hello, のカンマの直後にも半角スペースを1つ入れます。各行は ! で終わり、その後ろに空白を付けません。
    • 見出しや空行などの余分な表示はしません。

    実行例

    Hello, World!
    I love Python!
    It's fun!
    

    右側のエディタにコードを書いて実行し、実行結果が実行例と1文字も違わないことを確認してください。

    ヒントを見る

    文字列を囲む記号と、文字列の中に出てくる記号が同じ種類のとき、Pythonが文字列の終わりをどこと判断するかを考えます。そのうえで、大文字の位置と記号を1行ずつ照合しましょう。

  5. 章末演習章末演習 5

    四則演算の演算子 +(足し算)、-(引き算)、*(掛け算)、/(割り算)を使い、計算をPythonに任せて結果を表示するプログラムを書いてください。print() のカッコの中に計算式を書くと、その計算結果が表示されます。

    入力

    入力なし(キーボードからの入力は行わず、input() は使わない)。

    処理条件

    • print() を4回使い、それぞれのカッコの中に計算式を1つ書きます。計算する内容は上から順に次のとおり。
    • 7 と 3 の和 2. 7 から 3 を引いた差 3. 7 と 3 の積 4. 7 を 2 で割った商
    • 計算結果の数値を自分で計算して直接書いてはいけません。
    • //、%、sum() などの関数、変数、import は使いません。

    出力

    • 4行を表示し、各行には計算結果の数値だけを半角で表示します。式や見出し、単位は表示しません。
    • 割り算の行は、/ が返す小数の表示(小数点 . を含む形)のまま表示します。

    実行例

    10
    4
    21
    3.5
    

    右側のエディタにコードを書いて実行し、実行結果が実行例と1文字も違わないことを確認してください。

    ヒントを見る

    まず「和・差・積・商」がそれぞれどの演算子に当たるかを対応づけ、引き算と割り算ではどちらの数を左に書くかを確かめます。掛け算の記号がキーボードのどのキーかも確認しましょう。

  6. 章末演習章末演習 6

    Pythonでも数学と同じように、* と / は + や - より先に計算され、丸カッコ ( ) の中がいちばん先に計算されます。また、/ の結果は割り切れるときでも小数(例:5.0)で表示されます。計算の順序を意識して式を書き、結果を表示するプログラムを書いてください。

    入力

    入力なし(キーボードからの入力は行わず、input() は使わない)。

    処理条件

    • print() を4回使い、それぞれのカッコの中に計算式を1つ書きます。計算する内容は上から順に次のとおり。
    • 34 と 2 の積を 12 に足す(丸カッコを使わずに書く)
    • 12 と 34 の和に 2 を掛ける(丸カッコを使う)
    • 84 を 4 で割る
    • 56 から 21 を引いた差を 5 で割る(丸カッコを使う)
    • 計算結果の数値を自分で計算して直接書いてはいけません。
    • //、%、int() などの関数、変数、import は使いません。

    出力

    • 4行を表示し、各行には計算結果の数値だけを半角で表示します。式や見出し、単位は表示しません。
    • 割り算を含む行は、割り切れても / が返す小数の表示(末尾に .0 が付く形)のまま表示します。

    実行例

    80
    92
    21.0
    7.0
    

    右側のエディタにコードを書いて実行し、実行結果が実行例と1文字も違わないことを確認してください。

    ヒントを見る

    それぞれの文から「先に計算したい部分」を読み取り、その部分が演算子の優先順位だけで先に計算されるか、カッコが必要かを判断します。1つ目と2つ目は同じ数を使っていても、計算する順序が違うことに注目しましょう。

  7. 章末演習章末演習 7

    print() のカッコの中に複数の値をカンマ , で区切って並べると、値と値の間に半角スペースが1つ自動で入り、1行にまとめて表示されます。この書き方を使って、式を表す文字列とその計算結果を1行に並べて表示するプログラムを書いてください。

    入力

    入力なし(キーボードからの入力は行わず、input() は使わない)。

    処理条件

    • print() を2回使います。それぞれのカッコの中には、「式を表す文字列」と「計算式」の2つをカンマで区切って並べる。
    • 1行目は 3 と 5 の足し算、2行目は 10 から 4 を引く引き算を扱う。
    • 計算結果の数値を自分で計算して直接書いてはいけません。
    • f文字列、+ による文字列の連結、str()、sep= や end= の指定、変数は使いません。

    出力

    • 2行を表示します。各行は「数、半角スペース、演算子、半角スペース、数、半角スペース、=、半角スペース、計算結果」の形にします。
    • 数字、演算子、= はすべて半角にします。行末に空白を付けません。余分な表示はしません。

    実行例

    3 + 5 = 8
    10 - 4 = 6
    

    右側のエディタにコードを書いて実行し、実行結果が実行例と1文字も違わないことを確認してください。

    ヒントを見る

    1行を「そのまま表示したい部分」と「計算させたい部分」に分け、それぞれをクォーテーションで囲むかどうか決めます。カンマで自動的に入る空白を、文字列の中にも重ねて書いていないか確かめましょう。

  8. 章末演習章末演習 8

    同じ 6 * 7 でも、クォーテーションで囲むと文字列としてそのまま表示され、囲まなければ計算されて結果が表示されます。この違いを使い分けて、式と計算結果を表示するプログラムを書いてください。

    入力

    入力なし(キーボードからの入力は行わず、input() は使わない)。

    処理条件

    • print() を4回使います。上から順に次のとおり。
    • 式 6 * 7 を文字列としてそのまま表示します。
    • 同じ式を計算させ、結果だけを表示します。
    • 文字列 6 * 7 = とその計算式をカンマで区切って並べ、1行に表示します。
    • 文字列 45 / 9 = と、45 を 9 で割る計算式をカンマで区切って並べ、1行に表示します。
    • 2〜4行目では、計算結果の数値を自分で計算して直接書いてはいけません。
    • f文字列、+ による文字列の連結、str()、sep= や end= の指定、変数は使いません。

    出力

    • 4行を表示します。数字、演算子、= はすべて半角にし、演算子と = の前後に半角スペースを1つずつ入れます。
    • 割り算の結果は、/ が返す小数の表示(末尾に .0 が付く形)のまま表示します。
    • 行末に空白を付けません。余分な表示はしません。

    実行例

    6 * 7
    42
    6 * 7 = 42
    45 / 9 = 5.0
    

    右側のエディタにコードを書いて実行し、実行結果が実行例と1文字も違わないことを確認してください。

    ヒントを見る

    各行について、画面に出る文字が「書いたとおりの文字」なのか「計算した結果」なのかを先に判断します。1行目と2行目の違いは、カッコの中の何があるかないかで生まれるかを考えましょう。

  9. 章末演習章末演習 9

    文房具店で、1本150円のペンを3本、1冊110円のノートを4冊買いました。品名、代金、単位をカンマで区切って並べ、ペンの代金、ノートの代金、合計金額を表示するプログラムを書いてください。

    入力

    入力なし(キーボードからの入力は行わず、input() は使わない)。

    処理条件

    • print() を3回使います。それぞれのカッコの中には、文字列、計算式、文字列の3つをカンマで区切って並べる。
    • 代金は単価と個数を掛ける式で求めます。合計金額は、単価と個数だけを使った1つの式で求めます。
    • 代金や合計金額の数値を自分で計算して直接書いてはいけません。
    • f文字列、+ による文字列の連結、str()、sep= や end= の指定、変数は使いません。

    出力

    • 次の3行をこの順に表示します。 1行目 ペン、ペンの代金、円 2行目 ノート、ノートの代金、円 3行目 合計金額は、合計金額、円です
    • 品名や「円」などの日本語は全角にし、金額は半角数字(3けたごとのカンマ区切りなし)にします。
    • 日本語と金額の間には、カンマ区切りで自動的に入る半角スペース1つだけを置く。行末に空白を付けません。余分な表示はしません。

    実行例

    ペン 450 円
    ノート 440 円
    合計金額は 890 円です
    

    右側のエディタにコードを書いて実行し、実行結果が実行例と1文字も違わないことを確認してください。

    ヒントを見る

    まず各行を「前の文字列」「計算させる部分」「後ろの文字列」の3つに分けます。合計の式では、掛け算と足し算のどちらが先に計算されるかを確かめましょう。

  10. 章末演習章末演習 10

    文房具店で、1冊110円のノートを3冊、1個90円の消しゴムを2個買い、1000円札で支払いました。小計、合計、おつりを計算し、レシートのように表示するプログラムを書いてください。おつりは「1000から合計を引く」計算なので、丸カッコで計算の順序を指定する必要があります。

    入力

    入力なし(キーボードからの入力は行わず、input() は使わない)。

    処理条件

    • print() を5回使います。1行目は見出しの文字列だけを表示し、2〜5行目は文字列、計算式、文字列の3つをカンマで区切って並べる。
    • 小計は単価と個数を掛ける式で求め、合計は単価と個数だけを使った1つの式で求めます。
    • おつりは、1000 と単価・個数だけを使った1つの式で求めます。合計が先に計算されるように丸カッコを使います。
    • 小計、合計、おつりの数値を自分で計算して直接書いてはいけません。
    • f文字列、+ による文字列の連結、str()、sep= や end= の指定、変数は使いません。

    出力

    • 次の5行をこの順に表示します。 1行目 レシート 2行目 ノート3冊で、ノートの小計、円 3行目 消しゴム2個で、消しゴムの小計、円 4行目 合計は、合計金額、円 5行目 おつりは、おつり、円
    • 日本語は全角にし、3 や 2 などの数字と金額は半角にします。金額に3けたごとのカンマ区切りは付けません。
    • 日本語と金額の間には、カンマ区切りで自動的に入る半角スペース1つだけを置く。行末に空白を付けません。余分な表示はしません。

    実行例

    レシート
    ノート3冊で 330 円
    消しゴム2個で 180 円
    合計は 510 円
    おつりは 490 円
    

    右側のエディタにコードを書いて実行し、実行結果が実行例と1文字も違わないことを確認してください。

    ヒントを見る

    小計と合計の式を先に完成させ、おつりの式ではその合計の式を利用します。カッコを付けないと1000からどの部分だけが引かれてしまうかを考えてから、カッコの位置を決めましょう。

実行結果を確かめ、コードを説明する学び方

まず自分で処理を予想し、コードを書いて実行します。正誤診断で結果を確かめた後は、なぜその結果になるかを自分の言葉で説明します。生成AIへのレビュー依頼も、動くかどうかと処理の理由を確かめる練習として行います。

Google Colabで同じコードを実行します

Google Colabは、ブラウザからPythonを実行できるノートブックです。ノートブックにはコードを実行するセルと、説明を書くテキストのセルがあります。Google公式のColab説明も参照できます。

  1. Google Colabを開き、Googleアカウントでログインして、「ファイル」から新しいノートブックを作り、例えば「演習B_第1回_自分の名前」のように回と名前が分かる名前を付けます。
  2. コードのセルに、この教材で自分が書いたコードをコピーします。セル左の実行ボタンを押すか、Shift+Enterで実行します。新しいセルは「+コード」で追加します。セルの下に表示される結果を教材側のコンソールと比べます。
  3. 複数のセルを使うときは、変数や関数を定義するセルを先に実行します。前に実行したセルの変数が残っていると、必要な定義を書き忘れても動く場合があります。ランタイムを再起動してから上から順に実行し、再現できることを確かめます。
  4. CSVを使う課題では、教材のサンプルデータをダウンロードし、Colabのファイル領域へアップロードします。コードに書いたファイル名とアップロードした名前を一致させます。実行環境が変わればファイルも再配置が必要です。
  5. コード、実行結果、処理の説明を保存します。この教材へのログ提出は、教材画面の公開鍵を使う提出機能で行います。Colabに移しただけでは教材の操作ログは提出されません。

自分のコードを生成AIにレビューしてもらいます

章末演習を1問解いたら、最初のコードと実行結果を保存し、次の手順を行います。AIの指摘は正しいとは限らないので、採用した変更は自分で検証します。

  1. 問題文の入力、必須構文、禁止事項、出力形式をまとめます。自分のコードと実行結果を添えて、改善点の理由を質問します。
  2. 次の依頼文を参考にします。コードの答えを丸ごと受け取る前に、原因を説明してもらいます。
この課題の条件と私のコードを照合してください。動作の正しさ、読みやすさ、できている点、次に改善する1点を確認してください。境界値で起こる問題も説明してください。完成コードを最初から提示せず、修正すべき行とその理由を示してください。必須構文と出力の改行・空白を守っているかも確認してください。
  1. 指摘を「採用する」「採用しない」「まだ判断できない」に分け、それぞれ理由を書きます。意味を説明できない修正は、そのまま提出しません。
  2. 採用する指摘を1つずつ修正し、正誤診断の全ケースを実行します。入力のある課題では境界値も試し、変更前後の結果を比較します。AIの提案が課題の禁止事項に反していたら、その提案は採用しません。
  3. 最初のコード、AIへの依頼、指摘、自分の判断、修正後のコードと実行結果を記録します。個人名や実在の患者などのデータは使わず、教材のサンプルデータで確認します。

振り返り:「どの行を、なぜ変えたか」「どのケースで確かめたか」「AIの指摘で採用しなかったものと理由」を説明してください。コードが動くことと、自分が処理を理解していることを両方確かめます。

各回を終えたら、5段階で自己評価します

各回のミニ課題に相当する章末演習を1問選び、次の基準で今の自分の状態を記録してください。正誤診断の合否と、自分だけで再現できるかという評価を分けて考えます。

評価今の状態次の学習
5資料を見ず、新しいノートブックで同じ種類の課題を自分で再現できます。次の回へ進みます。第8回の後は全体を振り返り、身近なデータで試します。
4手順メモがあれば、自分で再現できます。メモを保存して次へ進みます。後でメモなしでもう一度試します。
3一部に迷いはありますが、おおむね自分で書けます。迷った行とその理由を記録し、次へ進んだ後も短い例で復習します。
2流れは分かりますが、自分だけで再現するのは難しいです。下の「評価2の復習先」で、コードを自分で入力してもう一度確かめます。
1最初からもう一度取り組みたいです。下の「評価1の復習先」へ戻り、1項目ずつ実行して確認します。
回評価2の復習先評価1の復習先
1Colabを開いて短い表示を実行しますノートブックの新規作成から試します
2文字列・数値・式の表示を比べますprintの基本から確認します
3変数への代入を試します名前と値の対応から確認します
4elifの例を値を変えて実行しますifと字下げの基本を確認します
5合計をためる例を自分で入力しますforとrangeから確認します
6リストの各値を処理し、合計を求めますリストの作成と添字から確認します
7CSV読み込みをもう一度試しますサンプルCSVをColabへ配置するところから試します
8合格者数と全体平均の例を入力します入力・判定・集計・出力へ分け直します

AIとのやり取りを学習記録として保存します

各回の最初から最後までのAIとのやり取りを、Markdown形式の学習記録へまとめてください。AIの説明、自分の返答、問題文、最初のコード、実行結果、レビュー、採否の理由、修正後のコードと再実行結果、5段階の自己評価と次の学習を含めます。AIへ要約を依頼した場合も、コード・出力・レビュー・自己評価が省略されていないか自分で確認してください。

記録の冒頭へ、授業名と回、日付、学籍番号、氏名を書きます。授業へ提出する記録には学籍番号と氏名が必要ですが、外部のAIへのレビュー依頼に個人情報を含める必要はありません。確認したMarkdownをテキストエディタへ貼り付け、学籍番号_氏名.mdという名前で保存します。例えば、架空の学生ならB1234567_香川太郎.mdとなります。授業担当者が指定した方法で提出してください。

2種類の記録を区別してください。この教材の公開鍵で暗号化するZIPは、教材での実行・編集・診断などの操作ログです。AIとの会話は自動でそのZIPへ入るものではありません。AI対話のMarkdownは別に保存します。Colabのノートブックを保存しただけでも、操作ログやAIとの会話の提出は完了しません。