今回はデータ型について解説していきます。
別の問題でも軽く触れましたが、プログラミングの世界で文字列の”5″と数値の5は全く別のものとして扱われると言いました。これは文字列と数値が違う「データ型」だからです。
性質や扱われ方などが異なるデータの種類のことをデータ型と言います。
Pythonには様々なデータ型が存在します。まずは最も基本ともなる文字列型と数値型について学習していきましょう。
print("4 + 8")
print(4 + 8)
print("4" + "8")
前回までの復習になりますが、上のprintの中身は文字列なので、4 + 8という文字がそのまま出力されます。一方で二つ目のprintの中身は数値なので、コンピュータが値を計算し、その結果である12が出力されます。
また三つ目のprintは一つ前の「文字列の連結」で学習したように、”4″という文字列と”8″という文字列の連結を表しているので、その結果である”48”が出力されます。
下のコードのように異なるデータ型動詞を連結させようとするとエラーが発生します。
year = 2021
print("今年は" + year + "年です") #文字列と数値を連結しようとしているためエラーが起こる
そこで数値を文字列に変換することで、エラーを起こさずに連結させることができます。
あるデータ型を別のデータ型に変換することを「型変換」と言います。
ここではstrという機能を使って数値から文字列に変換する方法を学習します。
year = 2021
print("今年は" + str(year) + "年です") #今年は2021年です
上のコードのようにstrのあとの( )の中に変換したい数値や変数を入れることで文字列として扱うことができるようになります。
逆に文字列を数値に変換したい場合もあります。
amount = "5"
price = 200
total_price = amount * price #エラー
上のコードの変数amountは文字列型ですが、数値として計算させようとしているためエラーが発生します。これを解消するためにはintという機能を使って文字列を数値に変換する必要があります。
amount = "5"
price = 200
total_price = int(amount) * price #1000
intもstrと使い方は同じでintのあとの( )の中に変換したい文字列型を入れるだけです。
①変数year、month, dateを用いて「今日は2021年6月8日です」と表示させてください。
②変数numberに5を足した値を出力してください。
year = 2021
month = 6
date = 8
print("ここを変更してください")
number = "5"
print("ここを変更してください")
year = 2021
month = 6
date = 8
print("今日は" + str(year) + "年" + str(month) + "月" + str(date) + "日です")
number = "5"
print(int(number) + 5)
[解説]
①ではstrを使って数値型のyear、month、dateをそれぞれ文字列型に型変換したあとで連結させています。str(year)などはクォーテーションで囲まないことに気を付けましょう。
②は文字列型のnumberをintで数値型に変換しています。
[/expander_maker]次のステップは 条件分岐 if文です
[itemlink post_id=”2041″]
文字列の連結とは、複数の文字列同士をつなげて一つの文字列として扱うことを言います。
数値の計算で使った「+」という演算子は文字列同士の間で使うと連結させることができます。
print("私の名前は" + "太郎" + "です")
name = "太郎"
print("私の名前は" + name + "です") #私の名前は太郎です
上のコードのように文字列を代入した変数を連結させることも可能です。
変数を連結させるときはクォーテーションで囲まないことに気を付けましょう。
また上のコードのように一度に何個でも連結させることができます。
①nameという変数を宣言し、文字列”ドロイド君”を代入してください。
②変数nameを使って、”私はドロイド君です”と出力してください。
name = "ドロイド君"
print("私は" + name + "です")
[解説]
nameにはドロイド君という文字列が代入されているので、それを連結させることで”私はドロイド君です”が表示されます。nameはクォーテーションで囲まれていないことを確認しておきましょう。
[/expander_maker]次のステップは データ型とはです
[itemlink post_id=”2031″]
次は既に定義した変数の値を変更してみましょう。変数の値は何度でも変更が可能なので、一度定義した変数を何度でも再利用することができます。
「変数名 = 新しい値」と書くことで、新しい値に変更することができます。変数を定義するときとまるっきり同じですね。
greeting = "Hello"
print(greeting) #"Hello"が出力される
greeting = "こんにちは"
print(greeting) #"こんにちは"が出力される
上のコードでは変数greetingの値をHello⇒こんにちはに変更しています。コードは上から下に順に実行されていくので、一つ目のprint(greeting)ではHelloが出力され、二つ目ではこんにちはが出力されるようになります。
数値を代入しておいた変数に新たに変数を足したい時があります。
そんなとき、変数の値は(もとの変数の値+足す値)となりますが、プログラミングの世界では以下のように記述することができます。
x = 5
x = x + 8
print(x) #13
以前説明したように、プログラミングの世界での「=」と私たちが普段使う数学の「=」は意味が異なります。数学的に考えると、x = x + 8という式は間違っているように感じられますが、プログラミングの世界ではこれはもとの変数に新しい値を足して値を更新するということになります。
同様に引き算や掛け算、割り算でも同じように値を代入することができます。
x = 10
x = x - 2 #8
x = x * 5 #40
x = x / 10 #4
コードは上から順に実行されるので、xは10から始まり、2を引かれて8に、その8に5を掛けて40に…という風に変更されていきます。
また上のコードのようにある変数自身に値を足したり引いたりするといったコードは以下のように省略して記述することができます。以下のコードは上のコードとまるっきり同じ意味になります。
x = 10
x -= 2 #8
x *= 5 #40
x /= 10 #4
「=」の左隣に記号を書くことで、その変数に新しく値を足したり引いたりするという意味になるのです。これもよく使われるので覚えておきましょう。
以下のコードに書き加えて、
①変数pointに150を足して変数pointを更新してください。
②変数pointの値を出力してください。
point = 300
point = 300
point += 150
print(point)
[解説]
ここでは省略形を用いていますが、point = point + 150でもOKです。
[/expander_maker]次のステップは 文字列を連結させるです
[itemlink post_id=”2041″]
前回の問題では変数の定義方法と値の取り出し方を解説しましたが、なぜわざわざ変数を使う必要があるのでしょうか。
変数を使うメリットは様々ありますが、その一つはコードの可読性が上がるという点です。データを直接記述するのではなく、一度変数という箱に名前を付けて保存することで、それが何を意味しているのかが一目で分かるようになります。例えば以下のコードを見てみましょう。
aplle_amount = 5
apple_price = 50
total_price = aplle_amount * apple_price
print(total_price) #合計金額の250が表示される
上のコードではりんごの個数と価格から合計金額を求めて出力していますが、直接 5 * 50とするのではなく、apple_priceとapple_amountという変数に入れてから計算することによって、その値が何を示しているのかが明らかになります。
また、その他にも値を後から変更する必要があるときや、同じ値を何度も使わなければならない時などにも変数を活用することで、変更箇所が少なく済んだり、コードがシンプルになったりとメリットがあります。
たとえば以下のコードのりんごの価格が50ではなく100に変更になったとします。
aplle_price = 50
musashi_apple_amount = 5
kojiro_apple_amount = 8
musashi_total_price = apple_price * musashi_apple_amount
kojiro_total_price = apple_price + kojiro_apple_amount
print(musashi_total_price)
print(kojiro_total_price)
上のコードではapple_priceが何回か使用されていますが、変更する際には一番上のapple_price = 50のコードだけ変更すれば、全てのapple_priceに反映されるので、他の値の計算結果も更新されることになります。
aplle_price = 100 #ここだけ変更すればOK
musashi_apple_amount = 5
kojiro_apple_amount = 8
musashi_total_price = apple_price * musashi_apple_amount
kojiro_total_price = apple_price + kojiro_apple_amount
print(musashi_total_price)
print(kojiro_total_price)
下記のコードに付け足して、
①apple_priceとapple_amoutをかけた値を変数total_priceに代入してください。
②total_priceの値を出力してください。
apple_price = 50
apple_amount = 8
apple_price = 50
apple_amount = 8
total_price = aplle_price * apple_amount
print(total_price)
[/expander_maker]
次のステップは 変数の値を変更するです
[itemlink post_id=”2031″]
変数とは様々なデータ(値)を保存しておける箱のようなものだとよく言われます。
変数にはそれぞれ名前を付けることができ、あとから別の値に変更したり、違う場所で変数から値を取り出したりすることができます。
変数を使うためにはまず変数を定義する必要があります。値を入れるための箱を準備する作業だと思ってください。
変数は下のコードのように、「変数名 = 値」で定義することができます。
初心者がよく混同しがちなのが、ここで用いられている「=」と私たちが日常で使う数学の「=」は全く別物ということです。
プログラミングの世界で使われる「=」は左辺の変数に右辺の値を代入する(保存する)という意味なので、注意しましょう。
name = "Takashi"
#nameは変数名、"Takashi"は変数に代入される値
変数に代入した値は取り出して使うことではじめて有用と言えます。下記コードのようにprint(name)とすることで、nameに代入されている”Takashi”という文字列が出力されます。
変数は文字列のようにクォーテーションで囲む必要はないので気を付けましょう。囲んでしまうと文字列として扱われ、nameがそのまま出力されてしまいます。
name = "Takashi"
print(name) #"Takashi"が出力される
print("name") #"name"が出力される
①変数nameに「Taro」という文字列を代入してください。
②変数nameの値を出力させてください。
③変数numberに数値の5を代入してください。
④変数numberの値を出力させてください。
name = "Taro"
print(name)
number = 5
print(number)
[解説]
numberに入れる数値はクォーテーションで囲まないことに注意しましょう。
[/expander_maker]次のステップは 変数を利用するです
[itemlink post_id=”2031″]
プログラミングの世界では文字列と数値は厳密に分けて考えられます。
数値の場合は文字列のようにダブルクォーテーション、またはシングルクォーテーションで囲む必要はありません。
print(4) #4
print(4 + 2) #6
print(4 - 2) #2
print(4 * 2) #8
print(4 / 2) #2
数値は上のコードのように演算子と呼ばれる「+」や「-」などを用いて数学のように四則演算が可能です。数値や演算子は全て半角で書かないとエラーが発生するので気を付けましょう。またプログラミングの世界では「*」は掛け算、「/」は割り算を意味します。「×」や「÷」は使われないので注意しましょう。
また一般的には演算子と数値の間には半角スペースを入れることが慣習になっています。なくてもエラーにはなりませんが、可読性を上げるために今の内に入れる癖をつけておくといいでしょう。
上で記したコードのようにprint(4 + 2)は計算結果である「6」を出力してくれます。
しかしprint(“4 + 2”)のようにクォーテーションで囲むと、「4+2」の部分は文字列として扱われるので、「4 + 2」がそのまま出力されることになります。
コンピューターに計算させたい場合は文字列ではなく、数値として扱うことに気を付けましょう。
①数値の「5」を出力させてください。
②「5」と「7」を足した計算結果を出力させてください。
③「5 + 7」を文字列として出力させてください。
print(5)
print(5 + 7)
print("5 + 7")
[/expander_maker]
次のステップは 変数とはです
[itemlink post_id=”2020″]
それではさっそくPythonでプログラムを組んでいきましょう。
printという関数(機能)を使うことで、文字を表示(出力)させることができます。
print("Hello World")
printの直後の()の中に表示した文字がコンソール(プログラムを実行したり結果が表示される画面)に表示されます。
上のコードで用いた「Hello World」という文字は、プログラミングの世界では「文字列」と呼ばれます。
文字列はシングルクォーテーション(’)かダブルクォーテーション(”)で囲みます。Pythonではどちらで囲んでも表示結果は同じになります。
'Hello World'
#もしくは
"Hello World"
囲んでいない場合はエラーが表示されてしまうので忘れないようにしましょう。
コードの中には「コメント」といってプログラムが実行されるときには無視される文字を書いておくこともできます。上のコード中の「#」を行頭につけることで、行末までがコメントとみなされます。
コメントはこのコードが何を意味しているかなどを知らない人が見るときや、自分があとから見た時に分かりやすいようにメモしておくために使います。
コンソールに「Python勉強中!」と出力させてください。
print("Python勉強中!")
答えではダブルクォーテーションを使っていますが、もちろんシングルクォーテーションでも正解です。
[/expander_maker]次のステップは 数値とはです。
[itemlink post_id=”2020″]
Python基礎講座レベル1ではPythonに初めて触れる初学者に向けて、実際にプログラムを作りながらPythonの基礎を解説していきます。
講座で使う知識を解説したあとはプログラムに必要なコードを自分で考えるような問題を用意しているので、理解できているか確認しながらすすめていくことができます。
問題の動作確認をするためにはPython実行環境が必要なので、環境構築がまだのかたは以下の記事に従ってPythonをインストールしてください。
初めに基礎講座レベル1の最終成果物を確認しておきます。
IDLEを起動し、File > New Fileを選択し、新しく出てきたウィンドウに以下のコードを張り付けてください。
※このコードは今後の問題の答えにもなってしまうので、今は中身をじっくり読まないでください。
juice_price = 150
money = 1500
input_count = input('購入するジュースの本数を入力してください:')
count = int(input_count)
total_price = juice_price * count
print('購入するジュースの本数は' + str(count) + '本です')
print('支払金額は' + str(total_price) + '円です')
if money > total_price:
print('ジュースを' + str(count) + '本買いました')
print('残金は' + str(money - total_price) + '円です')
elif money == total_price:
print('ジュースを' + str(count) + '本買いました')
print('お金がなくなりました')
else:
print('お金が足りません')
print('ジュースを買えませんでした')
貼り付けたらRun > Run Module(F5でも可能)を選択すると保存するか確認されるんで、OKを選択し、app.pyと名前を付けてお好きな場所に保存してください。
するとコードがIDLE上で実行されます。
“購入するジュースの本数を入力してください:”と表示され、適当な数字を入力すると、購入本数、支払金額、残金が表示されます。
これが今回作成していくプログラムのゴールです。
それではさっそくプログラムを自分で作成していきましょう。
次のステップは 文字列の出力です。
[itemlink post_id=”2020″]