2012-05-31 71 views
1

我正在做一個任務,我必須在屏幕上移動一個模擬機器人循環 - 我已經得到了這部分,但是,在循環之間,我還必須打印每個動作覆蓋的區域的百分比 - 這是我的問題。如何計算'for'循環內的某些內容?

我搜索了一下,甚至發現了一個人有同樣的問題,但是,我不知道如果我做得很好。被提供

此代碼:

percent_complete = 0 

for i in range(5): 
    percent_complete += 20 
    print('{}% complete'.format(percent_complete)) 

但是,錯誤之後,進一步谷歌搜索顯示,只有某些版本

所以我用這個代碼工作:

percent_complete = 0 

for i in range(5): 
     percent_complete += 20 
     print '% complete' % (percent_complete) 

而且,至少它現在執行代碼,但是,打印時的輸出如下所示:

Here we go! 
hello 
omplete 
hello 
(omplete 
hello 
<omplete 
hello 
Pomplete 
hello 
domplete 

這是什麼原因?我假設,因爲其中一個代碼必須進行編輯,其他部分也是如此,但我不確定需要做什麼。

回答

5
for i in range(5): 
    percent_complete += 20 
    print '%d complete' % (percent_complete) 

你失蹤了d符。

2

第一個版本只適用於Python 3,因爲它使用print作爲函數。你可能尋找以下:

percent_complete = 0 
for i in xrange(5): 
    percent_complete += 20 
    print '{0} complete'.format(percent_complete) 

你的其他代碼不會對你打算這樣做,因爲現在顯示爲一串數字什麼。你想要的是,該數字被正確地轉換爲一個字符串,然後顯示在字符串中。功能format爲你做。

您也可以使用Ansari的方法,明確指定percent_complete是一個數字(使用d說明符)。

+0

...和2.7。 – glglgl

1

爲了增加/修改上面的答案:

你的第一個例子沒有工作的原因是不是因爲印刷是不是一個函數,而是因爲你離開了的說法符。嘗試print('{0}% complete'.format(percent_complete))。括號內的0是那裏的關鍵因素。

+1

...不在最新版本。 – glglgl

+1

是的,但是OP提到純版{}僅在「某些版本」中起作用,所以推測它在OP所嘗試的版本中不起作用(否則它會起作用)。 – BrenBarn