2011-08-16 5 views
1
だけのpythonで開始し、次のコードビットを試してみました

のPython 3.2はTypeError:%のためのサポートされていないオペランド(S): 'NoneType' と 'str' は

my_name = 'Joe Bloggs' 
my_age = 25 
my_height = 71 # inches 
my_weight = 203 #lbs approximate, converted from ~14.5 stones 
my_eyes = 'Blue' 
my_teeth = 'White' 
my_hair = 'Brown' 

print("Let's talk about %s") % my_name 
print ("He's %d inches tall.") % my_height 
print ("He's %d pounds heavy.") % my_weight 
print ("Actually that's not too heavy") 
print ("He's got %s eyes and %s hair.") % (my_eyes, my_hair) 
print ("His teeth are usually %s depending on the coffee.") % my_teeth 

私は(9行目のエラーを取得する取得

TypeError:%: 'NoneType'と 'str'のためのサポートされていないオペランド

{0}と{0}を使用しようとしても、これを回避することができませんでした。フォーマット方法、任意のアイデア?

答えて

9

あなたが行の末尾に近いかっこを移動したい:Pythonの3、printで機能ですので、あなたは、印刷機能の結果に%演算子を適用しているためprint ("He's %d inches tall." % my_height)

だ。つまり、 Noneです。あなたが望むのは、書式文字列と置換する文字列に%演算子を適用し、その演算の結果をprint()に送信することです。

EDIT:GWWが指摘しているように、この種の文字列フォーマットはPython 3.1では廃止されました。 Pythonの2.xは、ほとんどの本番環境では当たり前ですので、http://docs.python.org/library/stdtypes.html#str.format

しかし、それは%オペレータに精通してまだ便利です:あなたはここで、%演算子を置き換えに関するstr.formatより多くの情報を、見つけることができます。

+1

文字列の書式設定に '%'の代わりにstr.formatを使うべきです。なぜなら、これはpython 3.1で償却されており、今後削除されるからです。 – GWW

+0

+1、完璧な答え。 (GWWが話していた部分を除いて:P) –

+1

@GWWこれに対処するための答えに追加しました。 –

関連する問題