2011-11-03 77 views
-1

我有這樣一個錯誤,說「float沒有屬性int」錯誤。 問題是編寫一個函數,它需要一個參數作爲圖像,並繪製兩條垂直線到img,一條從(50,0)到(50,300)的紅線和一條由(150,50)到(150,250)。出於某種原因,隨機部分,我有randomcolor.int(0,255)是我有錯誤的地方。有什麼我需要轉換?這是我的代碼:float沒有屬性int,在Python 3.2中

from cImage import* 
import random 
RandomColor = random.random() 


myImWin = ImageWin("Line Image", 300, 300) 
lineImage = EmptyImage(300,300) 
redPixel = Pixel(255,0,0) 
randomRed = Pixel(RandomColor.int(0,255)) 
for i in range(300): 
    for x in range(250): 
    lineImage.setPixel(50,i,redPixel) 
    randomRed.setPixel(150,x,randomRed) 
lineImage.draw(myImWin) 
randomRed.save("lineImage.gif") 

任何建議將有助於,謝謝。

+0

我很好奇,你在哪裏得到'.int(0,255)'會縮放值並將其轉換爲整數的想法?我認爲在任何情況下我都沒有看到過。 –

+0

我打算把randint,但後來我想通了,我應該把進口隨機放在頂部,擺脫randomcolor = random.random()。那麼該區域我有一個錯誤,我應該把random.randint(0,255),0,0)。我忘了把0,0,因爲在setPixels中它接受3個值 – user1028129

回答

1

RandomColorrandom.random()的結果,這是一個float。如果你想從中獲得0到255之間的東西,你應該使用int(RandomColor*256)random模塊的另一個更具體的功能。

+0

不需要,你需要'int(RandomColor * 256)'。 –

+0

感謝大家的建議......是的,把整數作爲一個整數是有意義的,並且當浮點數沒有意義時出現這個數字。 – user1028129

+0

@TimPietzcker感謝您的正確答覆,並已更新。 –

6

random.random()返回範圍[0.0,1.0)內的隨機浮點數。如果你想它的一個整數,你必須做的:

int(RandomColor) # would be 0 because random() is < 1.0 
int(RandomColor * 256) # to get 0-255 

你想0-255之間的隨機數,因此不能你只是做:

random.randint(0,255) 
+0

'int(RandomColor * 255)'只會給你一個從0到254的範圍。對於'random.randint()',+1。 –

+0

@TimPietzcker - 感謝您指出'random()'範圍。 – birryree

相關問題