プログラムでは数値だけではなく、文字列もデータとして扱います。
文字列は string と呼ばれます。ここでは、文字列と文字列を扱う基本処理(表示の出力と、キー入力)について書いていきます。
文字列
文字列を定義するときは、”(ダブルクオーテーション)か'(シングルクオーテーション)でかこんで記述します。
Pythonでは文字列を定義するときに、”(ダブルクオーテーション)を使っても'(シングルクオーテーション)を使っても結果は同じです。
ただ、ソースコードなどで文字列を使用するときはできるだけどちらかに統一したほうが読みやすいコードとなります。
他のプログラミング言語に慣れている場合などは、ダブルクオーテーションで括るほうが良いかもしれません(シングルクオーテーションは、文字列ではなく「文字(1文字)」としているプログラミング言語もあります)。
数値の例
12000 # --> これは数値データです
文字列の例1
"12000" # --> これは文字列データです
文字列の例2
'12000' # --> これも文字列データです
文字と数値の違い
数値は、演算を行うことができますが、文字列(たとえ数字だけの文字列であっても)はそのままでは演算を行うことはできません。
数値データの演算
12000 * 34 # --> 計算を行い、結果は408000となります
文字列データで演算を試みた場合
"12000" * "34" # --> 実行すると'TypeError'となります
出力
画面にデータなどを表示する「出力」について、Pythonではprint()関数がよく使われます。
print()関数は、引数で指定したものの値を画面に表示します。
print(12) # --> コンソールなどに12が表示されます
print()関数は、複数の値を指定して表示させることができます。
print(12, 35, 98) # --> 実行すると、12 35 98と表示されます
文字列も表示させることができます
print("隣の客は、", 3, "個のカキ食う客だ") # --> 実行すると、隣の客は、 3 個のカキ食う客だ と表示されます
入力
input()関数を使うと、キーボードから文字列を入力することができます。
input("文字を入力してください")
実行すると、文字を入力してください と表示され、キーボードの入力待ちを行います。
(入力待ちを行っていますので、プログラムは終了せずにここで止まっています)
キーボードで文字を入力して、[Enter]キーを押すと処理が進みます。
入力時のメッセージがない場合は、文字列を指定しなくても呼び出すことができます。
input()
実行してみると、画面の表示などはないですが、先ほどと同じように入力待ちを行っています。
入力した文字列をそのままprint()関数に渡すと入力した値を表示させることもできます。
print("入力した文字列は、", input(), "ですね")
実行して、キーボードからabcdeと入力し、[Enter]キーを押すと
入力した文字列は、 abcde ですね
と表示されます。
input()関数では、キーボードから入力した文字列などは、処理の切替の判定や、文字列データとして使用することが多いため、変数に格納して使うことが多いです。
str = input("何か文字を入力してください") print("入力した文字列は、", str, "ですね")
文字列の連結
文字列は数値ではないため、そのままでは数値演算はできませんが、演算子である’+’を使うと文字列は「連結」することができます。
数値で’+’を使った場合
12000 + 34 # --> 実行すると、計算の結果12034になります
文字列で’+’を使った場合
"12000" + "34" # --> 実行すると、文字列の1200034となります
数字だと分かりづらいかもしれませんので、もう一つ例を
"明日は" + "テストだ" # 実行すると、文字列で 明日はテストだ となります
文字列の数値化
数値だけの文字列だと演算できないのですが、プログラムで「数値の文字列を数値として計算をさせる」ということなどはよくあると思います。
こういったときに、文字列の中身が数字だけで構成されている場合は、int()を使って整数に変換することができます。
int()を使って文字列を数値に変換すると、そのデータは数値なので演算を行うことが可能になります。
str1 = "10" str2 = "5" print(str1, "と", str2, "は合計すると", int(str1) + int(str2), "になります")
また、float()を使うと実数(float型)に変換できます。
数値として表現できない文字などを使うとエラー(ValueError)となります。
str1 = "10.9" str2 = "5.1" print(str1, "と", str2, "は合計すると", float(str1) + float(str2), "になります")
数値の文字列化
文字列を数値に変換するのとは逆に、str()を使って数値を文字列に変換することもできます。
文字列と数値を組み合わせてメッセージを表示するときなどにこのstr()を使って1つの文字列を生成させる。といったことができます。
temperature = 30 print("今日の気温は" + str(temperature) + "°です")
このコードだけを見ると
temperature = 30 print("今日の気温は", temperature, "°です")
でも同様の出力はできます。
ただ、str()を使わない(,で連結している)場合は、前後に半角スペースがついています。
また、下記のようにメッセージを変数に格納する場合はstr()を使う必要性が出てきます。
temperature = 30 temp_str = "今日の気温は" + str(temperature) + "°です" print(temp_str)
このようにすると、先ほどと同じように 今日の気温は30°です と表示されます。
先ほどのstr()関数を使わない場合と同じような記述で
temperature = 30 temp_str = "今日の気温は", temperature, "°です" print(temp_str)
とすると、実行結果は (‘今日の気温は’, 30, ‘°です’) と表示されます。
これは、「タプル」と呼ばれる別のデータで1つの文字列データではなく、3つのデータの集合となってしまいます。
メソッド
文字列などのデータには、データを操作するための専用関数が結びつけられています
文字列の文字をすべて大文字に変換するupper()やすべて小文字にするlower()があります。
このようにデータなどに結び付いている関数のことをメソッドと呼びます。
message = "It's Nice Weather Today" # --> 一部大文字にしています print("大文字に変換") print(message.upper()) # --> upper()というメソッドを呼び出しています print("小文字に変換") print(message.lower()) # --> lower()というメソッドを呼び出しています
また、文字列にはfind()というメソッドがあり、これは文字列の中に指定した文字列があるかどうかを調べるためのメソッドです。
文字列のfind()メソッドは、引数で指定した文字列が含まれていた場合は、その文字列が発見された位置を戻り値として返します。
message = "It's nice weather today, but I don't know if it's fine tomorrow" print(message.find("know"))
この例文の場合、”know”という文字列は、38文字目からですが、find()の戻り値は37となります。
これは、文字列の中のインデックスを返しているからで先頭で発見された場合は0が返ります
メソッドは関数の一種です。データなどの結びついており、処理の対象はその結びついているデータとなります。通常の関数は、データなどに結びついていないので、処理の対象も引数などで指定する必要があります。