プログラミング演習・14章版 第2章 順次処理と print
教材コード

順次処理と print

第1章で,プログラムとは「コンピュータにやってほしい手順を,順番に書き並べたもの」 だと学んだ.この章では,いよいよ実際に Python のプログラムを書いて動かしてみる. 題材にするのは,画面に文字や数値を表示するという,もっとも基本的で, これからずっと使い続ける仕事です.

この章で身につけてほしいことは,大きく2つです.1つは,画面に表示するための 命令 print の使い方.もう1つは,プログラムが書いた順に,上から下へ 1つずつ実行されるという,順次という考え方です. 変数や計算の本格的な話は次の章にゆずり,ここでは「表示する」と「順に実行される」の 2点に集中します.

画面に文字を表示する:print の基本

スマートフォンのメモ帳に「牛乳を買う」と書くように,コンピュータにも何かを 表示させたい場面は多いです.計算した結果やメッセージを,人が読める形で外に出すこと, これが第1章で学んだ出力です.Python で画面に文字を出すには, print(プリント)という関数を使います.関数とは, あらかじめ用意されている「○○をする命令のかたまり」のことです. print は「カッコの中身を画面に表示する」という仕事を引き受けてくれます.

まずは,あいさつを1つ表示するだけのプログラムを見てみましょう.

chapter-02_code_1.py
print("おはよう")

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

実行結果の例
おはよう

たった1行で,コンピュータに「画面に文字を出す」という仕事をさせることができました. この print(...) という書き方は,これから何度も登場します. まずはこの形をしっかり覚えてください.

print の形を分解する

print("おはよう") は,いくつかの部品からできている(図2.1).

print 関数の形
関数の名前

先頭の print が,使いたい関数の名前です. 「表示しなさい」という命令の名札だと思えばよいでしょう.

カッコ

名前のすぐあとに,半角の丸カッコ (\ ) を書きます. 「ここからここまでが,関数に渡すものですよ」という囲みです.

中身(引数)

カッコの中に,表示したいものを書きます.関数に渡すこの値を 引数(ひきすう)といいます.ここでは文字を渡しています.

ダブルクォート

表示したい文字は,ダブルクォート "\ " ではさむ. こうしてダブルクォートで囲んだ文字のかたまりを文字列といいます.

文字列をダブルクォートで囲むのには,理由があります.コンピュータにとって, おはよう という文字の並びが「そのまま表示する文字」なのか「何かの命令」 なのかは,見ただけでは区別がつきません.そこで,「これは文字です」という 目印としてダブルクォートで囲むのです.

カッコ (\ ) やダブルクォート "\ " は,すべて半角で 入力します.日本語入力(全角)の「()」や「”」を使うとエラーになります. 画面の上では似て見えるが,コンピュータにとってはまったく別の文字です. うまく動かないときは,まず半角になっているかを確認するとよいでしょう.

ダブルクォートは,文字列の始まりと終わりの両方に必要です. print("おはよう) のように閉じるほうを書き忘れると,コンピュータは 「文字列がどこで終わるのか分からない」と困ってしまい,エラーになります. カッコやクォートは「開いたら閉じる」をセットで意識するとよいでしょう.

シングルクォートでもよい

文字列は,ダブルクォート "\ " のかわりにシングルクォート '\ ' ではさんでもよいでしょう.print('おはよう') も同じ結果になります. ただし,本書ではダブルクォートに統一します.始めと終わりで 種類をそろえる必要があるので,print("おはよう') のように混ぜると エラーになる点にだけ注意したい.

  • print("...") はカッコの中の文字列を画面に表示する関数です.

  • 表示したい文字はダブルクォート "\ " ではさむ.これを文字列といいます.

  • カッコもダブルクォートも,すべて半角で,開いたら必ず閉じる.

文字列の表示を確かめる

知識

printの丸括弧の中へ文字列を渡すと画面へ表示できます。文字列の始まりと終わりの引用符は対にします。

print("おはよう")
そのまま演習文字列の表示を確かめる

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

出力例
おはよう
ヒントを見る

文字列の引用符と、命令の丸括弧を区別してください。画面へ現れる文字と、コードの構造だけを示す記号を分けます。

演習の解説

「おはよう」の4文字を表示して改行します。printという名前と半角括弧は命令の構造で、引用符の中は表示するデータです。

虫食い文字列の表示を確かめる

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

___("おはよう")
ヒントを見る

引用符と括弧の対を確認します。空欄は、括弧内の文字列を画面へ出す処理の名前です。

虫食いの解説
print("おはよう")

空欄には print が入ります。「おはよう」の4文字を表示して改行します。printという名前と半角括弧は命令の構造で、引用符の中は表示するデータです。

数値を表示する

print で表示できるのは,文字だけではありません.テストの点数,気温, 買い物の値段といった数値も表示できます.数値を表示するときは, ダブルクォートで囲まない.たとえば,今日の気温が25度だとして, その数値をそのまま表示してみましょう.

chapter-02_code_3.py
print(25)
実行結果の例
25

文字列のときと違い,25 はダブルクォートで囲んでいません. これは,25 を数値としてあつかう,という意味になります. 小数も同じように,囲まずに書けば数値として表示されます.

chapter-02_code_5.py
print(36.5)
実行結果の例
36.5

囲む・囲まないで何が変わるのか

ここで,初学者がいちばん戸惑う点を整理しておく. ダブルクォートで囲むかどうかで,コンピュータの受け取り方が変わります.

print(25)

25 を整数という数値として あつかう.あとで足し算や引き算など,計算の対象にできます.

print("25")

"25" を,2 と 5 という文字が並んだ 文字列としてあつかう.見た目は同じ 25 だが, こちらは「数」ではなく「文字」です.

画面に出る見た目はどちらも 25 で,この段階では違いが分かりにくい. しかし,第3章で計算を学ぶと,この違いがはっきり効いてくる.いまは 「数として使いたいなら囲まない,文字として見せたいだけなら囲んでもよい」 とだけ覚えておけば十分です.

数値をダブルクォートで囲むくせがつくと,あとで計算しようとしたときに うまくいかなくなります.「気温」「点数」「値段」のようにあとで足したり 比べたりするかもしれない数は,囲まずに数値のまま書くようにするとよいでしょう.

  • 数値はダブルクォートで囲まずに書く(例 print(25)).

  • 同じ 25 でも,囲めば文字列,囲まなければ数値として扱われます.

  • あとで計算に使う数は,数値(囲まない)にしておく.

整数と小数を表示する

知識

数値を表示するときは引用符を付けません。数値の小数点は半角のピリオドです。

print(78)
print(1.72)
そのまま演習整数と小数を表示する

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

出力例
78
1.72
ヒントを見る

整数と小数を、どちらの命令が先に表示するか追ってください。小数点も出力の一部として予想します。

演習の解説

78と1.72をそれぞれ別の行に表示します。数値を引用符で囲むと文字列になり、後で計算する際の扱いが変わります。

虫食い整数と小数を表示する

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

___(78)
print(1.72)
ヒントを見る

2つの数値は別々の表示命令へ渡されています。出力の行数を先に数えてください。

虫食いの解説
print(78)
print(1.72)

空欄には print が入ります。78と1.72をそれぞれ別の行に表示します。数値を引用符で囲むと文字列になり、後で計算する際の扱いが変わります。

計算結果をそのまま表示する

print のカッコの中には,計算式を書くこともできます. その場合,コンピュータはまず計算をすませ,その答えを表示します. たとえば,リンゴ3個とミカン2個で合わせて何個か,を表示してみましょう.

chapter-02_code_7.py
print(3 + 2)
実行結果の例
5

画面には 3 + 2 ではなく,計算の答えである 5 が表示されました. print は「カッコの中をまず計算し,その結果を表示する」という 順序で動いています.足し算の記号 + は,算数と同じ意味の 演算子です.

引き算や,もう少し複雑な式も同じように書けます.600円の買い物を1000円で 払ったときのおつりを計算して表示してみましょう.

chapter-02_code_9.py
print(1000 - 600)
実行結果の例
400

掛け算には *(アスタリスク),割り算には /(スラッシュ)を使います. × や ÷ という記号は Python では使えないので注意したい. 1個120円のジュースを5本買ったときの合計を出してみましょう.

chapter-02_code_11.py
print(120 * 5)
実行結果の例
600

掛け算は *,割り算は / で書きます.算数で使う ×(かける)や ÷(わる)の記号は,キーボードにあっても Python では計算記号として 使えません.* と / は半角で入力します.

計算式を囲むと計算されない

ここで1つ気をつけたいことがあります.print("3 + 2") のように, 式をダブルクォートで囲んでしまうと,それは文字列になり,計算されません.

chapter-02_code_13.py
print("3 + 2")
実行結果の例
3 + 2

囲んだことで 3 + 2 が「文字のかたまり」とみなされ,計算されずに そのまま表示されました.計算してほしいときは囲まない.この違いは, 前節の「数値」と「文字列」の話とまったく同じです.

割り算は小数で答えが出る

割り算 /(スラッシュ)は,算数と少しちがうところがあります. たとえば 10 を 4 で割ってみましょう.8人で40個のあめを 分けるような場面です.

chapter-02_code_15.py
print(10 / 4)
実行結果の例
2.5

答えは 2.5 という小数で出た.Python の / は, わりきれてもわりきれなくても,つねに小数で答えを出します.たとえば 8 / 2 の答えも,4 ではなく 4.0 と表示されます. 「割り算をすると小数になることがある」と覚えておくとよいでしょう.

わり算の「商」と「あまり」

「あめが 10 個あります.3人で同じ数ずつ分けると,1人何個で,何個あまるか」. こういう整数のままの割り算には,専用の演算子が2つあります. //(スラッシュ2つ)は商(何個ずつ分けられるか), %(パーセント)はあまりを求めます.

chapter-02_code_17.py
print(10 // 3)   # 商
print(10 % 3)    # あまり
実行結果の例
3
3
1

10 // 3 は「10 の中に 3 がいくつ入るか」で,答えは 3. 10 % 3 は「3 ずつ分けたあとに残る数」で,答えは 1 です. // と / は見た目が似ているが,// は答えが小数にならず, 整数のまま出る点がちがう.

同じ数を何回もかける:べき乗

**(アスタリスク2つ)はべき乗,つまり「同じ数を何回かける」かを 表す演算子です.たとえば,一辺が 4 の正方形の面積(4 の2乗)は 次のように書けます.

chapter-02_code_19.py
print(4 ** 2)
実行結果の例
16

4 ** 2 は 4 を2回かける,つまり 4 * 4 と同じで 16 に なります.2 ** 3 なら 2 * 2 * 2 で 8 です.かけ算の * を 2つ続けて書くと意味が変わる,という点に注意してください.

演算子の記号は,1つか2つかで意味が変わります./(割り算・小数)と //(商・整数),*(掛け算)と **(べき乗)は, それぞれ別の演算子です.記号の個数まで正しく入力しましょう.

  • print はカッコの中の式を先に計算し,その結果を表示します.

  • 演算子は +(足す)-(引く)*(掛ける) /(割る).すべて半角.

  • / の答えは小数になります.整数のままの商は //,あまりは %,べき乗は ** を使います.

  • 式をダブルクォートで囲むと,計算されず文字列としてそのまま表示されます.

括弧と計算順を比べる

知識

printへ渡す式は、計算した結果になってから表示されます。括弧を使うと計算順を指定できます。

print(2 + 3 * 4)
print((2 + 3) * 4)
そのまま演習括弧と計算順を比べる

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

出力例
14
20
ヒントを見る

内側の括弧がない式と、ある式を別々に計算してください。計算結果の表示順はコードの行の順番です。

演習の解説

1行目は3×4を先に計算して14、2行目は2+3を先に計算して20です。内側の丸括弧が計算順を変えます。

虫食い括弧と計算順を比べる

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

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

1行目と2行目では、内側の括弧の有無が違います。途中の計算を書いてみてください。

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

空欄には * が入ります。1行目は3×4を先に計算して14、2行目は2+3を先に計算して20です。内側の丸括弧が計算順を変えます。

文字と数値を並べて表示する

「今日の気温は25度です」のように,文字と数値を混ぜて1行に表示したい 場面は多いです.print では,カッコの中に表示したいものをカンマ , で区切っていくつでも並べることができます.

chapter-02_code_21.py
print("今日の気温は", 25, "度です")
実行結果の例
今日の気温は 25 度です

カンマで区切った3つのもの,"今日の気温は"(文字列)・25(数値)・ "度です"(文字列)が,左から順に1行に並んで表示されました. このように,文字列と数値を自由に混ぜて並べられるのが print の便利な点です.

カンマで区切ると自動でスペースが入る

実行結果をよく見ると,並べたもののあいだに半角スペースが1つ入っています. print は,カンマで区切られたものを表示するとき,区切りとして 自動的にすき間(半角スペース)を入れてくれます.「今日の気温は」と「25」が くっつかず読みやすいのは,このためです.

買い物メモのように,品物と個数を並べて表示することもできます.

chapter-02_code_23.py
print("りんご", 3, "個")
実行結果の例
りんご 3 個

カンマ , も半角で書きます.全角の「,」を使うとエラーになります. 本文の読点は全角の「,」を使うが,プログラムの中では半角のカンマである, という区別に慣れてください.

カンマで区切る方法と,足し算の + を混同しないようにしたい. print("点数は", 80) は文字列と数値を並べて表示するが, print("点数は" + 80) はエラーになります.文字列と数値は + で つなぐことができないからです.混ぜて表示したいときは,カンマを使うとよいでしょう.

文字列どうしは + でつなげる

文字列と数値を + でつなぐことはできないが,文字列どうしなら + でつなぐことができます.これを連結といいます. 「お」と「はよう」をつないで1つの文字列にしてみましょう.

chapter-02_code_25.py
print("お" + "はよう")
実行結果の例
おはよう

2つの文字列が,すき間なく1つにつながって表示されました.ここがカンマとの大きな ちがいです.カンマで区切ると区切りに半角スペースが入るが,+ の連結では すき間が入らずそのままくっつく.並べてくらべてみましょう.

chapter-02_code_27.py
print("おはよう", "ございます")   # カンマで区切る
print("おはよう" + "ございます")  # プラスで連結する
実行結果の例
おはよう ございます
おはようございます

1行目はカンマ区切りなので「おはよう」と「ございます」のあいだに半角スペースが 入ります.2行目は + の連結なので,すき間なくつながる. すき間をあけたいならカンマ,つなげたいなら +と使い分けるとよいでしょう.

+ で連結できるのは文字列どうしだけです. "年" + 3 のように文字列と数値を + でつなごうとするとエラーになります. 数値も混ぜたいときは,+ ではなくカンマで区切る方法を使います.

  • カッコの中をカンマ , で区切ると,複数のものを1行に並べて表示できます.

  • 文字列と数値を混ぜて並べてよいでしょう.区切りには自動で半角スペースが入ります.

  • カンマは半角.文字列と数値を + でつなぐことはできません.

  • 文字列どうしは + で連結できます.こちらはすき間が入りません.

文字と数値を同じ行に並べる

知識

printの引数をカンマで区切ると、文字と数値を同じ行へ表示できます。通常、引数の間には半角空白が1個入ります。

print("点数", 78)
そのまま演習文字と数値を同じ行に並べる

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

出力例
点数 78
ヒントを見る

1つの命令へ文字列と数値を渡しています。2つの引数の間に何が入るか、末尾に改行があるかを考えてください。

演習の解説

表示は「点数 78」です。文字列と数値をカンマで渡すため、数値を文字列へ変換する必要はありません。

虫食い文字と数値を同じ行に並べる

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

print("点数", ___)
ヒントを見る

カンマで分かれた引数の間へ入る文字を確認します。空欄は引用符のない数値です。

虫食いの解説
print("点数", 78)

空欄には 78 が入ります。表示は「点数 78」です。文字列と数値をカンマで渡すため、数値を文字列へ変換する必要はありません。

コメント:プログラムにメモを書く

プログラムが長くなってくると,「この行は何をしているのか」が,書いた本人でも あとで分からなくなることがあります.そこで役立つのがコメントです. コメントとは,プログラムの中に書いておく,人間向けのメモのことで, コンピュータは無視して実行しない.

Python では,行の中に #(シャープ,ハッシュ)を書くと, そこから行の終わりまでがコメントになります.

chapter-02_code_29.py
# これはコメント。実行されない
print("こんにちは")   # ここから右もコメント
実行結果の例
こんにちは

1行目はまるごとコメントなので,何も実行されません.2行目は print(...) が 実行されたあと,# から右の部分がコメントとして無視されています. だから画面には こんにちは だけが表示されました.

コメントは何のためにあるのか

コメントは,主に次のような場面で役立つ.

  • その行が何をしているかを,あとで読む人(未来の自分を含む)に 説明します.

  • 一時的にある命令を実行させたくないとき,行の先頭に # を つけて「コメントにする」ことで,その行だけ止められます.

本書のコード例でも,要所に日本語のコメントをつけて説明しています. 自分でプログラムを書くときも,「あとで読んで分かるように」短いメモを 残すくせをつけるとよいでしょう.

行の先頭に # をつけて止める

2つめの使い方を,実際に試してみましょう.3つの print のうち,真ん中の行の 先頭に # をつけて,その行だけをコメントにして止める.

chapter-02_code_31.py
print("1番目")
# print("2番目")
print("3番目")
実行結果の例
1番目
3番目

真ん中の print("2番目") は,先頭に # がついたことでコメントに なり,実行されませんでした.そのため画面には 1番目 と 3番目 だけが 表示されています.このように,命令を消さずに一時的に止められるのが, コメントの便利なところです.# を外せば,また実行されるようになります.

# は半角で書きます.全角の「#」はコメントとして働きません. また,# はその行だけを無視します.次の行は,ふつうに実行されます.

  • # から行末までがコメントで,実行されない人間向けのメモです.

  • 命令の説明や,一時的に行を止めるのに使います.

  • # は半角.効くのはその行だけ.

コメントと実行する文を区別する

知識

半角の#から行末まではコメントです。説明を残せますが、コメントは実行結果へ出ません。

# 合計点を表示します
print(80 + 75)
そのまま演習コメントと実行する文を区別する

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

出力例
155
ヒントを見る

コメントは命令として実行されません。メモの行を出力へ含めず、計算する行だけを追ってください。

演習の解説

コメントの日本語は表示されず、計算結果155だけが表示されます。#を文字列の外に書くことがコメントの条件です。

虫食いコメントと実行する文を区別する

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

# 合計点を表示します
print(80 ___ 75)
ヒントを見る

メモの行は計算にも表示にも参加しません。実際に実行される式だけを追ってください。

虫食いの解説
# 合計点を表示します
print(80 + 75)

空欄には + が入ります。コメントの日本語は表示されず、計算結果155だけが表示されます。#を文字列の外に書くことがコメントの条件です。

命令は書いた順に実行される(順次)

ここまで,1行だけのプログラムを見てきた.プログラムは,命令を何行でも 並べて書けます.そして,並べた命令は上から下へ,書いた順に1つずつ 実行されます.これが,第1章で出てきた順次である (図2.2).

命令は上から下へ,書いた順に実行される(順次)

3つのあいさつを,順に表示するプログラムを書いてみましょう.

chapter-02_code_33.py
print("おはよう")
print("こんにちは")
print("こんばんは")
実行結果の例
おはよう
こんにちは
こんばんは

1行目の print("おはよう") がまず実行され,画面に おはよう が出ます. 次に2行目,最後に3行目が実行されます.print は1回ごとに改行するので, 3つのあいさつは縦に1行ずつ並ぶ.このように,書いた順と表示される順 がきれいに対応している点に注目してください.

順番を入れかえると,結果も変わる

順次の大切さを確かめるために,わざと順番を入れかえてみましょう. 先ほどの3行のうち,1行目と3行目を入れかえる.

chapter-02_code_35.py
print("こんばんは")
print("こんにちは")
print("おはよう")
実行結果の例
こんばんは
こんにちは
おはよう

命令そのものは1つも変えていないのに,並べる順番を変えただけで, 表示される順番が変わった.第1章の料理のレシピと同じで, 手順の順番そのものが結果を決めるのです.プログラムを書くときは, 「どの命令を,どの順で実行させたいか」をいつも意識する必要があります.

「命令を全部書いたのに思った表示にならない」というとき,命令の内容は 合っていても,順番が違っていることがよくあります.うまくいかないときは, 上から1行ずつ「いま何が起きるか」を声に出して追ってみるとよいでしょう.

手順の順番が結果を決める

あいさつだけでなく,買い物の場面でも順番は大切です.「レジで合計を見て, そのあとおつりを受け取る」という流れを,そのまま print で表してみましょう.

chapter-02_code_37.py
print("合計", 600, "円")
print("おつり", 1000 - 600, "円")
実行結果の例
合計 600 円
おつり 400 円

もし2つの print を入れかえると,「おつり」が先,「合計」が あとに表示され,レジの流れと合わなくなります.

chapter-02_code_39.py
print("おつり", 1000 - 600, "円")
print("合計", 600, "円")
実行結果の例
おつり 400 円
合計 600 円

計算の中身はどちらも同じなのに,print を並べた順番のとおりに表示されます. どの順で見せたいかを考えて命令を並べることが,読みやすい出力につながる.

字下げ(行頭のすき間)は,半角スペースで入れます.日本語入力の全角スペースが 行頭にまぎれこむと,IndentationError(字下げのエラー)になります.画面上は どちらも同じすき間に見えるが,コンピュータには別物です.行頭にスペースが あるはずのない行で,原因が分からないエラーが出たら,全角スペースを疑うとよいでしょう.

  • 命令を複数並べると,上から下へ書いた順に1つずつ実行される(順次).

  • print は1回ごとに改行するので,結果は縦に並ぶ.

  • 命令の順番が変われば,結果も変わります.順番そのものが大切です.

3行の表示順を追う

知識

順次実行では上の命令から下へ進みます。3つの表示があるときは、最後の行も含めて表示順を確認します。

print("おはよう")
print("こんにちは")
print("こんばんは")
そのまま演習3行の表示順を追う

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

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

各表示命令の文字列を、上から順に書き出してください。各回で改行するため、次の文字列は次の行へ進みます。

演習の解説

おはよう、こんにちは、こんばんはの順に3行を表示します。3つのprintを1つずつ実行するため、それぞれの末尾に改行が入ります。

虫食い3行の表示順を追う

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

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

同じ表示処理が3回あります。空欄の行も含め、上から何が表示されるかを記録します。

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

空欄には print が入ります。おはよう、こんにちは、こんばんはの順に3行を表示します。3つのprintを1つずつ実行するため、それぞれの末尾に改行が入ります。

入力なし→処理→出力:最小のプログラム

最後に,これまで学んだことを使って,少しまとまったプログラムを書いてみましょう. 題材は,3科目のテストの合計点を表示する,というものです. 第1章で学んだ「入力→処理→出力」のうち,ここではまだ入力(キーボードから 打ち込む)は学んでいないので,点数はプログラムの中に直接書くことにします. つまり「入力なし→処理→出力」という最小の形です.

chapter-02_code_41.py
# 3科目の合計点を表示する
print("テストの結果")          # 見出しを表示
print("国語と数学と英語の合計")
print(80 + 75 + 90)            # 3科目を足した結果を表示
実行結果の例
テストの結果
国語と数学と英語の合計
245

このプログラムを,上から順に追ってみましょう.

1行目

# で始まるコメント.実行されず,何も表示されません. 「このプログラムが何をするか」のメモです.

2行目

print("テストの結果") で,見出しの文字列を表示します.

3行目

print("国語と数学と英語の合計") で,説明の文字列を表示します.

4行目

print(80 + 75 + 90) で,まず 80 + 75 + 90 を計算し, その結果 245 を表示する(処理と出力).

ここでの処理は 80 + 75 + 90 という足し算,出力は それぞれの print による表示です.入力をまだ使っていなくても, 立派に「処理して,結果を出す」プログラムになっています.

文字と数値を1行にまとめる

合計点を「合計は245点です」のように,1行で読みやすく表示することもできます. 前の節で学んだ,カンマで区切る方法を使います.

chapter-02_code_43.py
# 合計点を1行で表示する
print("合計は", 80 + 75 + 90, "点です")
実行結果の例
合計は 245 点です

カッコの中で,文字列・計算式・文字列をカンマで区切って並べています. 真ん中の 80 + 75 + 90 は先に計算されて 245 になり, その前後に文字列がそえられて1行に表示されました. このように,print 1つでも,計算と表示を組み合わせて 分かりやすい出力を作ることができます.

このプログラムでは,点数を 80・75・90 と 直接書いている.そのため,別の点数を表示したいときは,書いた数を 書きかえる必要があります.毎回プログラムを書きかえずに,あとから自由に値を あつかえるようにする仕組みが変数です.これは次の第3章で学ぶ.

  • 複数の print を順に並べれば,まとまった出力のプログラムになります.

  • 入力を使わなくても「処理(計算)→出力(表示)」のプログラムは作れます.

  • カンマ区切りを使えば,計算結果と文字を1行にまとめて表示できます.

入力なしで代金を計算する

知識

キーボード入力がなくても、コードに書いた値を計算して出力するプログラムを作れます。

print(120 * 3)
そのまま演習入力なしで代金を計算する

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

出力例
360
ヒントを見る

キーボードから入力を待つ命令はありません。コードに用意された2つの数を使って、表示前の計算を確かめます。

演習の解説

120を3倍して360を表示します。この例は入力待ちになりません。実行するだけで処理と出力まで進みます。

虫食い入力なしで代金を計算する

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

print(120 ___ 3)
ヒントを見る

単価と個数がコード内に用意されています。入力待ちをせず、その2つの値をどう組み合わせるか考えます。

虫食いの解説
print(120 * 3)

空欄には * が入ります。120を3倍して360を表示します。この例は入力待ちになりません。実行するだけで処理と出力まで進みます。

この章のまとめ

この章では,画面に表示する関数 print と,命令が書いた順に実行される 順次を学んだ.要点を整理しておく.

  • print(...) はカッコの中身を画面に表示します.文字列は ダブルクォート "\ " で囲み,数値は囲みません.

  • カッコの中の式は先に計算され,その結果が表示されます. 演算子 + - * / はすべて半角.

  • カンマ , で区切れば,文字列と数値を混ぜて1行に並べられます.

  • # から行末まではコメントで,実行されない人間向けのメモです.

  • 命令は上から下へ書いた順に1つずつ実行される(順次). 順番が変われば結果も変わります.

次の第3章では,値に名前をつけて何度でも使い回せるようにする 変数を学ぶ.変数を使えるようになると,毎回数を書きかえなくても, もっと柔軟なプログラムが書けるようになります.

計算してから説明を添える

知識

文字列と数値を区別し、式が評価されてから表示されることをまとめて確認します。

print("合計", 80 + 75)
そのまま演習計算してから説明を添える

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

出力例
合計 155
ヒントを見る

文字列の後に渡す式を先に計算してください。その結果と説明の文字列が、何で区切られて表示されるかを予想します。

演習の解説

式80+75が155になり、文字列「合計」と半角空白で区切られて同じ行へ表示されます。

虫食い計算してから説明を添える

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

print("合計", 80 ___ 75)
ヒントを見る

カンマの後の式を先に計算します。説明の文字列と、その計算結果の間の空白にも注目してください。

虫食いの解説
print("合計", 80 + 75)

空欄には + が入ります。式80+75が155になり、文字列「合計」と半角空白で区切られて同じ行へ表示されます。

図で理解する

順次実行
順次実行
入力と表示
入力と表示

練習して確かめる

章末演習(10問)

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

  1. 章末演習章末演習 1

    コメントで計算の目的を説明し、3種類のチケットの料金を順番に表示してください。

    入力

    キーボード入力なし。大人1200円を2人、学生800円を3人、小学生500円を1人とします。

    処理条件

    • 各計算の直前に、対象と計算の目的を説明する # コメントを1行ずつ書きます。
    • print() を3回使い、料金の式を渡します。変数や sum() は使いません。
    • 計算結果を直接書かず、掛け算を使います。

    出力

    大人、学生、小学生の順に料金の数値だけを各1行、合計3行で表示します。コメント、単位、空行は表示しません。

    実行例

    2400
    2400
    500
    
    ヒントを見る

    計算する人の区分を先に整理します。コメントは実行する命令と区別し、数値の出力に混ざらないことを確認してください。

  2. 章末演習章末演習 2

    上から順に実行される性質を使い、数値の表示と文字列の表示を交互に並べてください。

    入力

    キーボード入力なし。表示する数値は半角の整数2026と小数3.5です。

    処理条件

    • print() を4回使います。
    • 数値は引用符で囲まず、説明の文字列は引用符で囲みます。
    • 変数、計算式、型変換、改行文字 \n は使いません。

    出力

    1行目 年、2行目 2026、3行目 気温、4行目 3.5 とします。日本語は全角、数字と小数点は半角です。空白・空行・単位を加えません。

    実行例

    年
    2026
    気温
    3.5
    
    ヒントを見る

    数値そのものと、その数値を説明する言葉を区別してください。4つの命令を表示したい順番に並べます。

  3. 章末演習章末演習 3

    数字を並べた文字列の連結と、数値の足し算の違いを確かめてください。

    入力

    キーボード入力なし。使う数値は12と3、使う文字列は "12" と "3" です。

    処理条件

    • 1行目は2つの文字列を + で連結します。
    • 2行目は2つの数値を + で計算します。
    • print() を2回使います。結果の文字列や数値を直接書かず、変数、型変換、カンマによる複数値の表示は使いません。

    出力

    文字列の連結結果、数値の計算結果の順に半角数字だけを各1行で表示します。合計2行で、空白・見出し・空行は加えません。

    実行例

    123
    15
    
    ヒントを見る

    同じ + でも、左右が文字列なのか数値なのかを確かめます。引用符の有無だけで結果の意味が変わります。

  4. 章末演習章末演習 4

    負の数の整数除算で、商と余りの関係を確かめてください。

    入力

    キーボード入力なし。割られる数は -7、割る数は3です。

    処理条件

    • print() を3回使います。1行目は -7 // 3、2行目は -7 % 3 の式です。
    • 3行目は「整数の商 × 3 + 余り」の式を、同じ // と % を使って書きます。
    • 結果の数値を直接書かず、変数、int()、round() は使いません。
    • // は小数部分を単に削る操作ではなく、商を小さい側の整数へ丸めます。

    出力

    整数の商、余り、元の数に戻した結果の順に、各1行で半角整数を表示します。負号は半角 - です。空白・見出し・空行は加えません。

    実行例

    -3
    2
    -7
    
    ヒントを見る

    商が負のとき、0に近い整数と小さい側の整数を区別します。最後に「割られる数 = 商 × 割る数 + 余り」の関係で確認してください。

  5. 章末演習章末演習 5

    国語80点・数学75点・英語90点の3教科の合計点を,説明文といっしょに表示するプログラムを書いてください。

    入力

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

    処理条件

    • print() を2回使います。
    • 2行目は1つの print() の中で,文字列 合計は,合計を求める式 80 + 75 + 90,文字列 点です の3つをカンマ , で区切って並べる。
    • 合計の数値を直接書きません。
    • 文字列の連結 +,str(),f文字列,sum(),sep・end 引数は使いません。
    • 外部モジュールは使いません。

    出力

    • 1行目に 3教科の合計を計算します と表示する(3 は半角数字,それ以外は全角文字)。
    • 2行目は 合計は,半角スペース1つ,合計点(半角数字),半角スペース1つ,点です の順に表示します。
    • 合計2行とし,空行は表示しません。

    実行例

    3教科の合計を計算します
    合計は 245 点です
    
    ヒントを見る

    まず2行目を「文字列」「式」「文字列」の3つの部品に分けます。次に,カンマで区切った部品の間に何が自動で入るかを考え,出力条件の空白と一致するか確かめてください。

  6. 章末演習章末演習 6

    今日の献立を表示するプログラムを,コメントを使って書いてください。昼のメニューは中止になったため,その行を削除せずに実行されないようにします。

    入力

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

    処理条件

    • 1行目に,プログラムの目的を説明するコメント(# で始まる行)を書きます。
    • 献立表,朝: パン,昼: ラーメン,夜: カレー をこの順に表示する print() の行を4行書きます。そのうえで,昼の行だけ行頭に # を付けて実行されないようにします。
    • 昼の行は削除しません。
    • 外部モジュールは使いません。

    出力

    • 1行目に 献立表,2行目に 朝: パン,3行目に 夜: カレー を表示します。
    • 朝 と 夜 の後のコロン : は半角とし,その直後に半角スペースを1つ入れます。それ以外の文字は全角とします。
    • 昼のメニューの行,コメントの内容,空行は表示しません。

    実行例

    献立表
    朝: パン
    夜: カレー
    
    ヒントを見る

    まず4行すべてを表示するプログラムを書いて実行し,次にどの行を実行させないかを決めます。# を付けた行が実行結果に現れないことを確かめてください。

  7. 章末演習章末演習 7

    10 を 3 で割ったときの「整数の商」「余り」「小数までの商」を順に表示するプログラムを書いてください。3種類の割り算の演算子の違いを確かめる課題です。

    入力

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

    処理条件

    • print() を3回使います。
    • 1行目は //,2行目は %,3行目は / を使った式を print() に渡して計算させる。
    • 計算結果の数値を直接書きません。round() などで結果を加工しません。
    • 外部モジュールは使いません。

    出力

    • 1行目に整数の商,2行目に余り,3行目に小数までの商を,半角数字で1行に1つずつ表示します。
    • 3行目は,Python が表示する桁数のまま(丸めずに)表示します。
    • 合計3行とし,式・見出し・空行は表示しません。

    実行例

    3
    1
    3.3333333333333335
    
    ヒントを見る

    まず,整数の商・余り・小数までの商のそれぞれに対応する演算子を確認します。3行目の末尾の桁が手計算と違って見えるのは,コンピュータが小数を近似して扱うためです。

  8. 章末演習章末演習 8

    余りを求める演算子 % と,べき乗の演算子 ** を使い,次の3つの値を順に表示するプログラムを書いてください。

    1. 14 を 3 で割った余り
    2. 20 を 4 で割った余り(割り切れるかどうかの確認)
    3. 2 の 4 乗

    入力

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

    処理条件

    • print() を3回使います。
    • 1・2行目は %,3行目は ** を使った式を print() に渡して計算させる。
    • 計算結果の数値を直接書きません。2 * 2 * 2 * 2 のような掛け算の繰り返しや pow() は使いません。
    • 外部モジュールは使いません。

    出力

    • 上の1〜3の順に,計算結果の整数を半角数字で1行に1つずつ表示します。
    • 割り切れる場合,余りは 0 と表示されます。
    • 合計3行とし,式・見出し・空行は表示しません。

    実行例

    2
    0
    16
    
    ヒントを見る

    まず,それぞれの計算が「余り」と「べき乗」のどちらなのかを見分けます。次に,べき乗の式では演算子の左右のどちらが底で,どちらが指数になるかを確認してください。

  9. 章末演習章末演習 9

    文字列の連結演算子 + を使い,短い文字列をつなげて3行の文字列を作り,表示するプログラムを書いてください。

    入力

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

    処理条件

    • print() を3回使います。
    • 1行目は文字列 Hello, と World!,2行目は Python と Python,3行目は ABC と ABC を,それぞれ + でつないで表示します。
    • 完成した文字列を1つの文字列として直接書きません。カンマ , で並べる書き方,文字列の *,f文字列,sep・end 引数は使いません。
    • 外部モジュールは使いません。

    出力

    • 半角英字と半角記号で,1行目に Hello,World!,2行目に PythonPython,3行目に ABCABC を表示します。
    • 大文字・小文字は実行例のとおりとし,つなぎ目にスペースを入れません。
    • 合計3行とし,見出しや空行は表示しません。

    実行例

    Hello,World!
    PythonPython
    ABCABC
    
    ヒントを見る

    まず各行を,処理条件で指定された2つの部品に分けます。次に,+ でつないだときにつなぎ目に空白が入るかどうかを,実行して確かめてください。

  10. 章末演習章末演習 10

    文字列を + で連結した場合と,カンマ , で区切って並べた場合とで,表示がどう違うかを比べるプログラムを書いてください。

    入力

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

    処理条件

    • print() を2回使い,どちらにも文字列 りんご と ジュース の2つを渡す。
    • 1行目は + で連結し,2行目はカンマ , で区切って並べる。
    • 空白を含む文字列を自分で書き足しません。f文字列や,sep・end 引数は使いません。
    • 外部モジュールは使いません。

    出力

    • 1行目は りんご と ジュース をすき間なくつないで表示します。
    • 2行目は りんご,半角スペース1つ,ジュース の順に表示します。
    • 文字は全角とし,合計2行とします。見出しや空行は表示しません。

    実行例

    りんごジュース
    りんご ジュース
    
    ヒントを見る

    同じ2つの文字列を使い,つなぎ方だけを変えます。どちらの書き方で半角スペースが自動で入るかを考えてから,実行結果と出力条件を見比べてください。