3. 文字列と操作

3-1. 文字列
 Pythonでは、主にシングルクォート('xxx')やダブルクォート("xxx")で囲まれた情報を文字列として取り扱います。文字列の型はstr型になります。

▽サンプルプログラム3-1. 文字列の表示とstr型

print('Hiroshima')
print("Shudo")
print(type("Shudo"))
a="University"
print(a)
▼プログラミングセル3-1. packages = [] terminal = false

3-2. 演算子による文字列の操作
 演算子+を使って文字列を連結することができます。また、演算子*を使うと文字列を繰り返すことができます。クォートで囲まれた文字列同士を連結する+は省略することもできます。ただし、文字が格納されている変数を連結する場合は+を省略することはできません。

▽サンプルプログラム3-2. 文字列の操作

print("Hiro"+"Shima")
print("HSU"*3)
print("Hiro" "Shima")
a="Hiro"
b="Shima"
print(a b) #エラー
▼プログラミングセル3-2.

3-3. 文字列と数値の取り扱い(エラー)
 文字列を数値のように取り扱うことはできません。同様に、数値を文字列のように取り扱うこともできません。これは非常によく発生してしまうエラーなので特に注意しておきましょう。

▽サンプルプログラム3-3. 文字列と数値を同時に取り扱う場合のエラー

a=100
print(a+"点") #エラー
a="100"
print(a/2) #エラー
a="100.123"
print(a//2) #エラー
▼プログラミングセル3-3.

3-4. 文字列と数値の取り扱い(変換)
 文字列と数値を同時に取り扱いたい場合、int関数やfloat関数、str関数を使って、数値(整数、浮動小数点数)や文字列に統一して操作します。

▽サンプルプログラム3-4. str関数やint関数、float関数を使った文字列と数値の操作

a=100
print(str(a)+"点") #文字列として連結
a="100"
print(int(a)/2) #整数として算術
a="100.123"
print(float(a)/2) #浮動小数点数として算術
▼プログラミングセル3-4.

3-5. f文字列
 変数の値を文字列を一緒に表示しようとした場合、通常は以下のようにカンマ区切りで並記したり(空白スペースが入る)、str変換と演算子+で連結したりして表示します。

▽サンプルプログラム3-5. 文字列と数値の連結

a=100
b=85
print("数学の点数は", a, "点であり、国語の点数は", b, "点でした")
a=100
b=85
print("数学の点数は"+str(a)+"点であり、国語の点数は"+str(b)+"点でした")
▼プログラミングセル3-5.

 上記の書き方でも良いのですが、これをもっと簡単にしたものがf文字列(フォーマット済み文字列リテラル)になります。f文字列では、f"***{a}***{b}***"のように記述することで、文字列の中に記述した{変数名}の部分が変数の値に置き換わります。

▽サンプルプログラム3-6. f文字列

a=100
b=85
print(f"数学の点数は{a}点であり、国語の点数は{b}点でした")
▼プログラミングセル3-6.

 f文字列では埋め込む部分{ }内で算術することもできます。

▽サンプルプログラム3-7. f文字列内での算術

a=100
b=85
print(f"数学の点数は{a}点であり、国語の点数は{b}点でした。平均点は{(a+b)/2}になります")
▼プログラミングセル3-7.

3-6. 文字列の長さ
 len関数を用いると文字列の長さ(文字数)を整数値として取得できます。このlen関数は利用する機会が多いので注意しておきましょう。

▽サンプルプログラム3-8. 文字列の長さ

print(len("Hiroshima"))
a="Shudo"
print(len(a))
▼プログラミングセル3-8.

3-7. クォートの利用
 クォート("や')で囲まれた文字列の中で同じクォートを利用したい場合、\や\をクォート記号の前に記入するとクォートを1つの文字として扱います。

▽サンプルプログラム3-9. クォートの表示

print("Hi\"r\"oshima")
print('Hirosh\'i\'ma')
▼プログラミングセル3-9.

3-8. 文字列内での改行
 クォート("や')で囲まれた文字列の中で改行したい場合、\nや\nを使用します。

▽サンプルプログラム3-10. 改行

print("Hiroshima\nShudo University")
▼プログラミングセル3-10.

3-9. 複数行の表示
 三連引用符("""xxx""" や '''xxx''')を利用すると、記述した通りに改行されます。なお、改行したくない文末に\や\を記入すれば改行しなくなります。

▽サンプルプログラム3-11. 三連引用符

print("""\
Hiroshima
Shudo
University\
""")
▼プログラミングセル3-11.

3-10. インデックスによる文字列情報の取得
 文字列からインデックス([数字]という添字)を使って文字列情報を取得することができます。インデックスは0から始まります。添字[0]だと最初の文字、添字[1]だと2番目の文字、添字[2]だと3番目の文字といった具合です。インデックスにはマイナス値も指定できます。添字[-1]は文字列の一番最後の文字、添字[-2]は最後からの2番目の文字といった具合です。なお、添字の指定した数が実際の数をオーバーする場合はエラーになる点に注意してください。

▽サンプルプログラム3-12. インデックスによる文字列情報の取得

a="Hiroshima"
print(a[0])
print(a[1])
print(a[2])
a="Hiroshima"
print(a[-1])
print(a[-2])
print(a[-3])
a="Hiroshima"
print(a[15]) #エラー
a="Hiroshima"
print(a[-15]) #エラー
▼プログラミングセル3-12.

3-11. スライスによる文字列情報の取得
 文字列からスライス([数字:数字]という添字)を使って文字列情報を取得することができます。スライスを使うことで添字[X:Y]の部分文字列(開始値Xから始まり、終了値Yの1つ前まで)を取得することができます。開始値の文字は常に含まれ、終了値の文字は含まれない点に注意してください。指定した数が実際の数をオーバーした場合は、端から自動的に取得してくれます。また、先頭もしくは最後を指定したい場合は数値を省略することもできます。なお、添字[X:Y:Z]と指定した場合、X~Yの部分文字列からZ間隔で要素を取り出します。

▽サンプルプログラム3-13. スライスによる文字列情報の取得

a="Hiroshima"
print(a[0:2])
print(a[4:6])
print(a[5:15])
print(a[-15:15])
print(a[:6])
print(a[-5:])
print(a[:])
print(a[::2])
print(a[1::3])
▼プログラミングセル3-13.

3-12. 文字列の不変性
 文字列は変更することができない不変なものである点に注意してください。文字列を変更したい場合は、変更後の文字列を新しく別に作成する必要があります。

▽サンプルプログラム3-14. 文字列の不変性

a="Python"
a[0]="C" #エラー
a="Python"
b = "C"+a[1:]
print(b)
▼プログラミングセル3-14.

問題
 以下の問題の解答となるプログラムを記述しましょう。

  1. 変数aに自分の苗字を格納し、変数bに自分の名前を格納し、その2つを連結したものを変数cに格納させましょう。
  2. ▼プログラミングセル
  3. 今日の気温(摂氏)を調べて変数aに格納し、「今日の温度は華氏XXです」とXXに摂氏を華氏に変換した値を表示させましょう。なお、摂氏と華氏の変換式は各自で調べること。
  4. ▼プログラミングセル
  5. 所属名(例、広島修道大学経済科学部経済情報学科)を変数aに格納したのち、aの文字数を表示させましょう
  6. ▼プログラミングセル
  7. 所属組織の住所を以下のように複数行に表示させましょう。
  8. 例:
    〒731-3195
    広島県広島市安佐南区大塚東1-1-1
    広島修道大学
    
    ▼プログラミングセル
  9. 所属名(例、広島修道大学経済科学部経済情報学科)を変数aに格納したのち、以下の文字または文字列をインデックスとスライスを使って表示させましょう。
    1. 先頭から9番目の文字
    2. 最後から4番目の文字
    3. 先頭から2番目~6番目の文字列
    4. 最後尾から3番目~5番目の文字列
    5. 奇数番目の文字
    ▼プログラミングセル