2013-07-07 164 views
3

我是新來的Python和我正在使用Python 3.3.2 ..我遇到了麻煩,包括我試圖打印的字符串中的數據項。該%運營商無論是從字面上打印出來,如:Python打印功能問題

for miles in range (10, 70, 10): 
    km=miles*1.609 
    print ("%d miles --> %3.2f kilometers") % (miles, km) 

生產:

%d miles --> %3.2f kilometers 

與錯誤一起:

Unsupported operand type for %: 'NoneType' and 'tuple' 

但是,當我改變第三行:

print (%d "miles -->" %3.2f "kilometers") % (miles, km) 

%d上出現語法錯誤。我能夠通過消除'print()'函數使程序在交互模式下正常工作,但是如果沒有'print()',它將不會在IDLE中產生輸出。我錯過了什麼?我一直試圖弄清楚的研究有助於瞭解更多關於Python的知識,但到目前爲止還沒有得到該程序的工作。順便說一句,它應該輸出:

10 miles --> 16.09 kilometers 
20 miles --> 32.18 kilometers 
30 miles --> 48.27 kilometers 
40 miles --> 64.36 kilometers 
50 miles --> 80.45 kilometers 
60 miles --> 96.54 kilometers 

我欣賞任何幫助或協助,我可以得到這個問題。

回答

4

移動% (miles, km)print函數內部:

print函數返回None,所以在你的代碼實際上是試圖做:

None % (miles, km) 

這就是爲什麼你得到錯誤。

工作代碼:

>>> for miles in range (10, 70, 10): 
...  km=miles*1.609 
...  print ("%d miles --> %3.2f kilometers" % (miles, km)) 
...  
10 miles --> 16.09 kilometers 
20 miles --> 32.18 kilometers 
30 miles --> 48.27 kilometers 
40 miles --> 64.36 kilometers 
50 miles --> 80.45 kilometers 
60 miles --> 96.54 kilometers 

使用新款string formatting

>>> for miles in range (10, 70, 10): 
     km=miles*1.609 
     print ("{:d} miles --> {:3.2f} kilometers".format(miles, km)) 
...  
10 miles --> 16.09 kilometers 
20 miles --> 32.18 kilometers 
30 miles --> 48.27 kilometers 
40 miles --> 64.36 kilometers 
50 miles --> 80.45 kilometers 
60 miles --> 96.54 kilometers 
+0

太謝謝你了。知道它必須是簡單的東西。現在就開始工作了。再次感謝。 –

3

使用.format()方法,在你的刺嘗試

>>> for miles in range(10, 70, 10): 
...  km = miles*1.609 
...  print ("{0} miles ---> {1} kilometers".format(miles, km)) 
2

您已經alread Ÿ得到一個答案,爲什麼打印不工作 - 但是,寫這個的方式略有不同的是:

miles = range(10, 70, 10) 
kms = (m * 1.609 for m in miles) 
fmt = '{:d} miles --> {:3.2f} kilometers'.format 
print(*map(fmt, miles, kms), sep='\n') 

給出:

10 miles --> 16.09 kilometers 
20 miles --> 32.18 kilometers 
30 miles --> 48.27 kilometers 
40 miles --> 64.36 kilometers 
50 miles --> 80.45 kilometers 
60 miles --> 96.54 kilometers 
+0

+1真棒,沒有循環。 –