0

私のコードは次のようになります。

import sys
print "What are his odds of hitting?", ( 25.0 / 10.0 ) * 8 + 65, sys.stdout.write('%')

Powershell (Windows 7) で実行すると、次のようになります。

What are his odds of hitting? 85.0%None

私が取得したいのはこれです:

What are his odds of hitting? 85.0%

最後に「なし」が表示されるのはなぜですか? これが起こらないようにするにはどうすればよいですか?

4

2 に答える 2

3

呼び出しの戻り値を出力していsys.stdout.write()ます:

print "What are his odds of hitting?", ( 25.0 / 10.0 ) * 8 + 65, sys.stdout.write('%')

その関数は を返しますNone。この関数は、同じファイル記述子にprint書き込むため、最初%に stdout に書き込み、次に戻り値を含むprintさらにテキストを書き込むように要求します。stdoutNone

%おそらく、最後にスペースなしで追加したかっただけでしょう。文字列の連結またはフォーマットを使用します。

print "What are his odds of hitting?", str(( 25.0 / 10.0 ) * 8 + 65) + '%'

また

print "What are his odds of hitting? %.02f%%" % (( 25.0 / 10.0 ) * 8 + 65)

また

print "What are his odds of hitting? {:.02f}%".format((25.0 / 10.0 ) * 8 + 65)

2 つの文字列形式のバリエーションは、浮動小数点値を小数点以下 2 桁で形式設定します。文字列フォーマット操作('..' % ...バリアント、古いスタイルの文字列フォーマットについて)、またはフォーマット文字列構文(str.format()メソッドについては、言語への新しい追加) を参照してください。

于 2013-07-29T07:21:40.960 に答える
1

sys.stdout.write('%')戻りますNone。メッセージを出力するだけで、何も返しません。

"%"呼び出す代わりに最後に置くだけsys.stdout.write

または、ここで使用でき.format()ます:

print "What are his odds of hitting? {}%".format(( 25.0 / 10.0 ) * 8 + 65)
于 2013-07-29T07:19:58.763 に答える