web-dev-qa-db-ja.com

TypeError:%sを使用する場合、フォーマット文字列に十分な引数がありません

これは私のコードです

import sys
name = input("Enter your name:")
last_name = input("Enter your last name:")
gender = input("Enter your gender:")
age = input("Enter your age:")
print ("So your name is %s, your last name is %s, you are %s and you are %s years old" % name, last_name, gender, age)

トピックを検索しましたが、わかりません。

9
iDebug

文字列フォーマットの引数を括弧で囲む必要があります。

print (... % (name, last_name, gender, age))

それ以外の場合、Pythonは、nameのみを文字列フォーマットの引数として認識し、残りはprint関数の引数として認識します。


ただし、最近では、文字列の書式設定操作に%を使用することは嫌われていることに注意してください。最新のアプローチは、 str.format を使用することです。

print ("So your name is {}, your last name is {}, you are {} and you are {} years old".format(name, last_name, gender, age))
18
iCodez

括弧のセットが必要です:

>>> '%s %s' % 'a', 'b'  # what you have
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: not enough arguments for format string
>>>
>>>
>>> '%s %s' % ('a', 'b')  # correct solution
'a b'

'%s %s' % 'a', 'b'('%s %s' % 'a'), 'b'として評価されます。これは、フォーマット指定子よりも引数が少ないため、'%s %s' % 'a'でエラーを生成します。


print("So your name is %s, your last name is %s, you are %s and you are %s years old" % (name, last_name, gender, age))
6
arshajii