Python/数値入力と文字入力と出力表示
入力
[編集]文字列の入力
[編集]Pythonで文字列の入力は、input()
関数を使用します。以下は、文字列を入力して表示する簡単な例です。
# 文字列の入力例 user_input = input("文字列を入力してください: ") # 入力を表示 print("入力された文字列は:", user_input)
このコードでは、input()
関数を使ってユーザーに文字列の入力を求め、その結果を変数 user_input
に格納しています。そして、print()
関数を使ってその入力を表示しています。
上記のコードを実行すると、プログラムはユーザーに対話的に文字列を尋ね、入力された文字列を表示します。
もしユーザーが Ctrl + D
(UNIX系システム)または Ctrl + Z
(Windows)を入力してEOFを発生させると、EOFError
が発生します。
EOF(End of File)をハンドルするためには、try
-except
ブロックを使用して、EOFError
をキャッチすることができます。以下はその例です。
try: # 文字列の入力例 user_input = input("文字列を入力してください: ") # 入力を表示 print("入力された文字列は:", user_input) except EOFError: print("EOFError: 入力が終了しました。")
このコードでは、try
ブロック内で input()
関数を使ってユーザーに文字列の入力を求めています。もし EOFError
が発生すると、それを except
ブロックでキャッチして処理します。
これにより、ユーザーが入力を終了させたときにエラーが発生する代わりに、プログラムが graceful に終了します。
数値の入力と計算
[編集]では、数値を入力させて、計算をさせたい場合、どうすればい良いのでしょうか?
文字列から整数への変換し計算し表示する
[編集]文字列から整数への変換と計算を行うためには、int()
関数を使って文字列を整数に変換し、その後に計算を行います。以下はその例です。
# 文字列の入力例 user_input = input("整数を入力してください: ") try: # 文字列を整数に変換 number = int(user_input) # 計算と表示 result = number * 2 print(f"入力された整数の2倍は: {result}") except ValueError: print("ValueError: 整数以外が入力されました。") except EOFError: print("EOFError: 入力が終了しました。")
このコードでは、まず input()
関数を使ってユーザーに整数の入力を求め、int()
関数でその文字列を整数に変換します。変換が成功すれば、計算と結果の表示を行います。もし "abc" のような整数以外の文字列が入力された場合は、ValueError
が発生し、それを except
ブロックでキャッチしてエラーメッセージを表示します。また、EOFが発生した場合も except EOFError
ブロックで処理しています。
文字列から浮動小数点数への変換し計算し表示する
[編集]文字列から浮動小数点数への変換と計算を行うためには、float()
関数を使って文字列を浮動小数点数に変換し、その後に計算を行います。以下はその例です。
# 文字列の入力例 user_input = input("浮動小数点数を入力してください: ") try: # 文字列を浮動小数点数に変換 number = float(user_input) # 計算と表示 result = number * 2.5 # 例として2.5倍にしますが、任意の計算が可能です print(f"入力された浮動小数点数の2.5倍は: {result}") except ValueError: print("ValueError: 数値以外が入力されました。") except EOFError: print("EOFError: 入力が終了しました。")
このコードでは、まず input()
関数を使ってユーザーに浮動小数点数の入力を求め、float()
関数でその文字列を浮動小数点数に変換します。変換が成功すれば、計算と結果の表示を行います。もし数値以外の文字列が入力された場合は、ValueError
が発生し、それを except
ブロックでキャッチしてエラーメッセージを表示します。また、EOFが発生した場合も except EOFError
ブロックで処理しています。
変数と文字列を同時に表示したい場合
[編集]Pythonでは、複数の変数や文字列を同時に表示するためには、print()
関数に複数の引数を渡すことができます。以下はその例です。
# 変数の定義 name = "John" age = 30 # 変数と文字列を同時に表示 print("名前:", name, "年齢:", age)
- 実行結果
- :
名前: John 年齢: 30
このコードでは、print()
関数に複数の引数を渡しています。各引数は,
(カンマ)で区切られており、それぞれが表示される際にはスペースで区切られます。このようにして複数の変数や文字列を同時に表示することができます。
フォーマット済み文字列リテラル
[編集]Python には文字列の中に式を埋込み文字列化する「フォーマット済み文字列リテラル(Formatted string literals; F文字列とも)」があります[1]。
print(f"文字列の中に{ 式 }を埋め込むことができる")
のように、fを引用符の前につける事で利用できます。 引用符は二重引用符でも一重引用符でも、どちらでも構いません(ただし、引用符の開始と終始における引用符の種類は一致している必要があります。)。 JavaScriptなどの「テンプレート・リテラル」に相当する機能です[2]。
- コード例
x = 123 print(f"数は{x+100} です")
- 実行結果
数は223 です
F文字列は Pyhon3.6 から導入されました。Python2.x系では利用できません[3]。
'{' と '}' 自身の文字列中での使用
[編集]場合によってはテンプレートリテラルを使いつつも '{' や '}' 自身を文字列中で使用したい場合があります。 その場合は、'{' は '{{'、'}' は '}}' と二重にします。
- コード例
x = 123 print(f"文字列{{x}} には {x} が代入されます")
- 実行結果
文字列{x} には 123 が代入されます
{式=} :式と値の双方の文字列化
[編集]式の後に等号'='を付けることで式のテキストと評価後の値の両方を文字列化することができます。
- コード例
x = 123 print(f"式と値の表示:{x=}") print(f"式と値の表示:{[x * 2 for x in range(5)]=}") print(f'''\ +++ {x=} *** {[x * 2 for x in range(5)]=} ''')
- 実行結果
式と値の表示:x=123 式と値の表示:[x * 2 for x in range(5)]=[0, 2, 4, 6, 8] +++ x=123 *** [x * 2 for x in range(5)]=[0, 2, 4, 6, 8]
- ''' から ''' あるいは、""" から """ はヒアドキュメントで、複数行に渡る文字列を表現できます。
- ヒアドキュメントに f あるいは F を前置すると、Fヒアドキュメントになり、式の埋め込みができます。
- 開始を、 '''\ の様に \ を後置すると最初の改行を抑止できます。
Pythonの文字列フーマッティングの歴史
[編集]文字列の%演算子
[編集]最初に、文字列の % 演算子がありました。
x = 333 print('数は %s です' % x )
- 実行結果
数は 333 です
文字列のformatメソッド
[編集]次に、文字列のformatメソッドができました[4]。
x = 200 print('数は{y} です'.format(y=x) )
- 実行結果
数は200 です
脚註
[編集]- ^ “Lexical analysis # Formatted string literals” (2021年11月29日). 2021年11月29日閲覧。
- ^ JavaScriptのテンプレート・リテラルはヒアドキュメントの機能も持っています。
- ^ Python2.x系のサポートは2021/01/01に終了しました。 ⇒ PEP 373 -- Python 2.7 Release Schedule, PEP 404 -- Python 2.8 Un-release Schedule
- ^ PEP 3101 -- Advanced String Formatting