jack blog
作者一覧
サイト移転のお知らせ
jack-webは下記のアドレスに移動しました
2024-03-29

はじめてのプログラミング(後編:やってみよう編)

槫林(えんぴつ)槫林(えんぴつ)

目次

書いてみよう

print

Hello worldのコードを見てみましょう。

print("Hello world!")

察しの良い方はお気付きになると思いますが、

print("[この部分]")

にかかれていた文字が表示されていました。 print というのは、このようにカッコの中身の文字を画面に表示するものです。このように機能を持ったものを 関数 と呼びます。 また、

print("1")
print("2")
print("3")

を実行してみると、 1 , 2 , 3 が順番に表示されて、pythonのコードが上から順番に実行されていることがわかります。

[演習]

Hello python!と表示させてみましょう。

[回答]

正解は

print("Hello python!")

です。 以下のようなものは間違いです。

print(Hello python!)
print "Hello python!"

input

print 関数だけでは、プログラムの結果はいつも同じです。これでは面白くありませんね。 そこで登場するのが input 関数です。 コードを以下のように書き換えてみましょう。

ipt = input("なにか文字を入力: ")
print("入力されたのは" + ipt)

これをまた

python [ファイル名].py

で実行してみましょう。

なにか文字を入力: 

と表示されて止まってしまったと思います。ここでなにか文字を打ってみてください。 例えば オウム返し と打ったとしましょう。そしてEnterを押すと「入力されたのは」に続いて入力したのと同じ文字( 入力されたのはオウム返し )が表示されたでしょう。


ここでコードを見返してみます。

ipt = input("なにか文字を入力: ")
print("入力されたのは" + ipt)

print 関数は先程説明した通り、カッコの中の文字を表示する関数です。 しかし、 "入力されたのは" + ipt とは表示されませんでしたね。 これは ipt変数 であって 文字列ではない からです。 Hello python! はそのままではだめで、ダブルクオーテーション " で囲わなければならなかったことを思い出してください。 "文字列 の印です。 そして、間に挟まっている + ですが、大体想像はつくかもしれません。これは文字列の結合を表しています。文字列の結合もまた文字列です。

"abc123" == "abc" + "123"

つまり、 ipt入力された文字列 として振る舞っていたことがわかります。 ipt が入力された文字列として振る舞うことを決定したのは、コードの

ipt=input("input function: ")

の部分です。 input 関数は、print関数のようにカッコの中の文字列を表示するのと同時に、プログラムの外からの入力を 文字列として 受け付ける関数なのです。 受け付けた入力はイコール = の左側にある 変数 の振る舞いとなります。 このようにイコール =変数の振る舞いを決めること代入といいます。 イメージとしては数学でx=3と書いて、xに3を代入するカンジですinput の使い方をまとめるとこうなります。

[変数]=input([表示する文字]) 

ちなみに、

ipt = input("なにか文字を入力: ")
print("入力されたのは" + ipt)

ipt = "入力されたのは" + input("なにか文字を入力: ")
print(ipt)

は全く同じ動きをするプログラムです。参考までに。

[演習]

名前を聞いて挨拶するプログラムを書きましょう。

[回答]

以下は回答の一例です。

ipt = input("あなたの名前は?: ")
print("こんにちは、" + ipt + "!")

数字と文字列

以下のコードを実行してみましょう。

a = input("a=")
b = input("b=")
print("a+b="+a+b)

そして、ターミナルに数字を入力してみると…

a=3
b=2
a+b=32

上のような結果となったことでしょう。 これが「予想外!😧」という人もいれば、「そりゃそうなるよね😒」という人もいるかと思いますが、 なぜ反応が分かれるのかというと、世の中には文字と数字があるからです。 2や3が文字として扱われるのか、数字として扱われるのか、ここに差があるわけです。 今回は input文字列として 入力を受け付ける関数だったため、 文字列の結合 (”32” == “3” + “2” ) として処理されたわけです。 しかし、

a=3
b=2
a+b=5

となってほしいときはどのように書けばよいのでしょうか? このようなときは int を使います。 int はカッコの中の文字列を数字として解釈し直してくれます。

3 == int("3")

では、以下のようにかけるでしょうか?

a = input("a=")
a = int(a)
b = input("b=")
b = int(b)
print("a+b="+a+b)

残念ながらこれはエラーになってしまいます。(実行してみるとTypeErrorが出るでしょう。)代わりに、

a = input("a=")
a = int(a)
b = input("b=")
b = int(b)
print(a+b)

a = input("a=")
a = int(a)
b = input("b=")
b = int(b)
print("a+b="+str(a+b))

なら動きます。


コードを詳しく見ていきましょう。

a=int(a)

a=int(a) については、全く新しいというわけではありませんが、もしかすると、 「aとint(a)は同じじゃないんだから、こんな書き方はおかしいじゃないか!👿」 と混乱してしまう方もいるかもしれません。しかし、落ち着いてください。 プログラミングにおける 代入は条件式や方程式ではない のです。 ただ純粋に、

[左辺]=[右辺]

は、左辺の 変数 の振る舞いを 右辺によって定める だけ なのです。 左右で同値関係になっているなどということは全く無いので、混乱しないように気をつけましょう。

str

print("a+b="+a+b) #NG
print(a+b) #OK
print("a+b="+str(a+b)) #OK

となっていたわけですが、strとは何なのでしょう? また、一番上は一体何がいけないのでしょうか? この答えは にあります。 いま、 abint によって、数字として再解釈されているのでした。 とすれば、 "a+b="+a+b文字列と数字の足し算 というよくわからないものを表現してしまっているのです。これがエラーの原因なのです。 であれば、文字列である ”a+b=” を取り除いてしまって数字だけにしてしまうか、str を用いて数字をもう一度文字列として再解釈してあげれば問題は起きません。 このように、データの種類(数か、文字か、など…)というのはプログラミングをしていくにあたってとても重要です。 プログラミングの世界ではデータの種類のことを “型” (type) といいます。 ちなみに、 intは整数型(integer)という意味で、 str は文字列型(string)という意味です。

[演習]

print(5*4)

は20と表示します。上の足し算の例に倣って

a=4
b=5
a+b=20

となるようなプログラムを書いてみましょう

[解答]

以下は一例です。

a=input("a=")
a=int(a)
b=input("b=")
b=int(b)
print("a+b="+str(a*b))

ちなみに、

a=int(input("a="))
b=int(input("b="))
print("a+b="+str(a*b))


print("a+b="+str(int(input("a="))*int(input("b="))))

と書くこともできます。

import

何でもつくれるとは言っても、実際何もかも自分で作るのは大変です。 そこで、pythonでは import文 を使って、外部のプログラムを取り込み利用することができます。プログラムを以下のように書き換えてみましょう。

from random import randint

この文をファイルの頭に書くと randint 関数を使うことができるようになります。 randint 関数は randint(a,b) のように使います。(aやbは整数型の変数か整数で置き換えます。) こうすると、a以上b以下の整数をランダムに返してくれます。

from random import randint

r = randint(1,6)
print(r)

もしくは

from random import randint

print(randint(1,6))

と書いたプログラムを何度か実行してみましょう。

おわりに

今回の記事はここまでです。ここまでついてきてくださった皆さん、お疲れ様でした! この記事が楽しいプログラミングライフのきっかけとなってくれたら嬉しいです😊 明日からの記事もぜひお楽しみに!

おすすめ記事