Python ミッション1_犬年齢計算機

python

今回から簡単な演習問題を通してpythonを学習していく。python3を使って行っていくので実行環境を整えて行ってもらいたい。
Windowsなら
「win python3 インストール」
Macなら
「mac python3 インストール」
あたりでググればいくらでも情報が出てくる。やりやすそうな記事を見つけてインストールしてもらいたい。
pythonは2ではなく新しい3で行っていくのでそこだけは注意してほしい。

なお、この講座はプログラミング超初心者を対象としているので全くプログラム経験がなくても大丈夫だ。
OK。では早速やっていこう。

ミッション1_犬年齢計算機

犬の年齢を人間の年齢に換算するには7をかけるという方法がある。
これを用いて、ユーザーに犬の名前と年齢を入力してもらうと人間の年齢に換算した値を出力するプログラムを作ってみよう。
[実行例]

犬の名前を入力してください>John [enter]
犬の年齢を入力してください>2 [enter]
Johnは今2才、人間の年齢に換算すると14才です。

[作っていこう]
ではさっそく犬年齢計算機を作っていこう。
1.「出力」
まずは「犬の名前を入力してください>」と出力しなければならない。
テキストエディタで

print('犬の名前を入力してください>')

と1行入力して。ファイルの名前をdog_year.pyとして保存してから実行してみよう。

犬の名前を入力してください>

と無事出力されたであろうか?
このようにpythonでは、画面への出力にprint命令を使う。
その際丸括弧の中に出力したいものを入れる。
今回は「犬の名前を入力してください>」という文字列を表示した。このような文字列を作る場合にはシングルコーテーションで囲うのを忘れてはならない。

2.「入力」
次はユーザーから犬の名前を入れてもらう処理だ。
以下のように一行追加し実行してみよう。

print('犬の名前を入力してください>')
input()

犬の名前を入力してください>
と出力した後改行され、入力待ちになっているのでJohnでもポチでもなんでもいいので犬の名前をいれてエンターキーを押す。

犬の名前を入力してください>
John

ここまでよろしいだろうか?
ユーザーから入力をしてもらう命令がinput()だ。

3.「変数」
ユーザーから入力してもらった犬の名前は結果出力でも使うので保存しておきたい。
以下のように修正しよう。

print('犬の名前を入力してください>')
dog_name=input()

実行してみても先ほどと変わらないがここで用意したdog_nameという変数がその情報を保持している。
ここでdog_nameというのは犬の名前だからという意味でつけた変数名でこれはinu_nameでもnameでもaでもbでもなんでもよい。
ただ普通はそれが何を保持しているのかわかりやすい名前をつける。
これでdog_nameという変数がユーザーが入力した内容を保持している。以下のように追記して出力してみよう。

print('犬の名前を入力してください>')
dog_name=input()
print(dog_name)

実行結果

犬の名前を入力してください>
John
John

実行してみると
print(dog_name)
によって入力した内容が表示される。このように変数をprint命令のカッコの中にいれるとその保持している内容を出力する。
ここでは
print('dog_name')
とシングルコーテーションでくくっていはいけない。くくってしまうとdog_nameとそのまま出力されてしまう。

4.「複数の出力」
続いて以下のように変更しよう。

print('犬の名前を入力してください>')
dog_name=input()
print(dog_name,'と入力されました。')

実行結果

犬の名前を入力してください>
John
John と入力されました。

print命令はカッコの中にカンマ区切りで複数の値を並べることによって複数の値を一度に出力することができる。

5.「input命令の便利な使い方」
今回のように何かを出力してから入力してもらう機会は多い。pythonではこれを一度に行うことができる。
以下のように修正しよう。

dog_name=input('犬の名前を入力してください>')
print(dog_name,'と入力されました')

実行結果

犬の名前を入力してください>John
John と入力されました。

input命令のカッコの中に文字列を入れるとそれを出力してから入力待ちになる。
先ほどまで2行に分けていた処理を一つにまとめた感じだ。さきほどまであったprint命令による改行処理もなくなって同じ行に入力できるようになっている点も注目だ。

6.
犬の年齢も入力してもらおう。以下のように修正する。

dog_name=input('犬の名前を入力してください>')
dog_age=input('犬の年齢を入力してください>')
print('名前:',dog_name,'年齢:',dog_age)

実行結果

犬の名前を入力してください>John
犬の年齢を入力してください>2
名前: John 年齢: 2

あらたに年齢を保持するdog_ageという変数を用意してそこに値を格納している。ここまではよろしいだろうか?

7.
それでは計算をしていこう。pythonでは足し算、引き算、掛け算、割り算などを行うことができる。
一つkeisan.pyという別ファイルを作って確認しておこう。

a=10
b=5

answer=a+b
print(a,'+',b,'=',answer)

answer=a-b
print(a,'-',b,'=',answer)

answer=a*b
print(a,'*',b,'=',answer)

answer=a/b
print(a,'/',b,'=',answer)

実行結果

10 + 5 = 15
10 - 5 = 5
10 * 5 = 50
10 / 5 = 2.0

変数aとbに値を入れて四則演算をしている。掛け算は*,割り算は/を使う。
pythonは割り算の結果は常に実数になる点も注目だ。

8.
再びdog_year.pyに戻ろう。
掛け算のやり方もわかったのでゴールは近い。さっそく以下のように修正しよう。

dog_name=input('犬の名前を入力してください>')
dog_age=input('犬の年齢を入力してください>')
human_age=dog_age*7
print('名前:',dog_name,'年齢:',dog_age,'人間に換算した年齢:',human_age)

実行結果

犬の名前を入力してください>John
犬の年齢を入力してください>2
名前: John 年齢: 2 人間に換算した年齢: 2222222

おや、人間に換算した年齢がいくらなんでも大きすぎる。何事であろうか?
実はpythonは文字列を掛け算した場合、その回数分文字列を連結した文字を作る。
以下のソースで確認しよう。

str='Hello'*5
print(str)

実行結果

HelloHelloHelloHelloHello

9.
これで謎が解けた、どうやら2という入力が数値ではなく文字と解釈されてしまったようだ。
このようにinput命令で受け取った値はそれがなんであれ文字列として解釈される。
このままでは計算できないのでそれを整数に変換する処理が必要だ。以下のように修正する。

dog_name=input('犬の名前を入力してください>')
dog_age=input('犬の年齢を入力してください>')
human_age=int(dog_age)*7
print('名前:',dog_name,'年齢:',dog_age,'人間に換算した年齢:',human_age)

実行結果

犬の名前を入力してください>John
犬の年齢を入力してください>2
名前: John 年齢: 2 人間に換算した年齢: 14

int()命令を使うことによって文字列から数値に変換できる。
今回はこのint命令のカッコの中に変換したい変数dog_ageを入れている。こうすることによって文字の2から数値の2に変換できるわけだ。

10.
最後に出力がそっけないので以下のように修正しよう。

dog_name=input('犬の名前を入力してください>')
dog_age=input('犬の年齢を入力してください>')
human_age=int(dog_age)*7
print(dog_name,'は今',dog_age,'才、人間の年齢に換算すると',human_age,'才です。',sep='')

print命令の中でsep=’文字’とすることで連結部分の文字を指定できる。今回はこの部分を”というシングルコーテーション2つの空文字列にすることによって半角スペースの隙間を無くしている。

完成

以上で完成だ。まずは変数、print命令、input命令、四則演算あたりから徐々に慣れていこう。

コメント

タイトルとURLをコピーしました