ユーザーから 2 つの文字列を読み取るコードがあります。
name1 = input("Enter name 1: ")
name2 = input("Enter name 2: ")
後で、これらの文字列を印刷用に長い文字列にフォーマットします。
if len(name1) > len(name2):
print ("'{0}' is longer than '{1}'"% name1, name2)
しかし、次のようなエラー メッセージが表示されます。
Traceback (most recent call last):
File "program.py", line 13, in <module>
print ("'{0}' is longer than '{1}'"% name1, name2)
TypeError: not all arguments converted during string formatting
コードの何が問題なのでしょうか? 文字列を適切にフォーマットするには、この行をどのように記述すればよいでしょうか?
参照文字列の書式設定: % と .format と f 文字列リテラルこの種の文字列フォーマットを行う最も一般的な方法の詳細な比較については、変数の値を文字列内に入れる(文字列内に挿入する)にはどうすればよいでしょうか?この種の文字列構築の一般的なガイドについては、Python で文字列フォーマットを使用してタプルを印刷するエラーの別の一般的な原因。
ベストアンサー1
古いスタイルの%
書式設定では、%
書式設定にコードが使用されます。
# A single value can be written as is:
'It will cost $%d dollars.' % 95
# Multiple values must be provided as a tuple:
"'%s' is longer than '%s'" % (name1, name2)
新しいスタイルの{}
書式設定では、{}
コードと メソッドを使用します.format
。 混在させないようにしてください。「テンプレート」文字列にプレース{}
ホルダーが含まれている場合は、 を呼び出し.format
、 を使用しないでください%
。
# The values to format are now arguments for a method call,
# so the syntax is the same either way:
'It will cost ${0} dollars.'.format(95)
"'{0}' is longer than '{1}'".format(name1, name2)