2015-11-25 58 views
0

我正在寫一個Dog類,以便每個創建的狗對象包含高度和重量字段變量。每隻狗都應隨機初始化。高度應初始化爲[1.00,100.0]釐米範圍內的隨機浮動。體重應在[0.7,20] kg範圍內隨機初始化。我有這個,但它不會輸出。我是做撥錯對象類和隨機變量

類犬什麼: 進口隨機

def_init_(self,heihgt,weight): 
    self.height = height 
    self.weight = weight 

    r = random.random() 
    a = dog(0.0,101.0) 
    b = dog(0.6,21.0) 
+0

那麼,我不認爲這是句法有效的Python(def_init_?)。第二,你的意思是「它不會輸出」?你的意思是它不會打印到屏幕上?但是,沒有任何地方打印的電話...... – jme

+0

儘管所有提到的事情@jme,隨機float random.uniform https://docs.python.org/2/library/random.html#random.uniform – kwarunek

回答

0

你明確地設定各犬的身高和體重,如果你把它作爲這樣的參數。如果你想使用隨機值初始化,不經過任何變量打擾:

>>> import random 
>>> class dog(): 
    def __init__(self): 
     self.height = random.uniform(1.0,100.0) 
     self.weight = random.uniform(.7,20.0) 

>>> dog1 = dog() 
>>> dog1.height 
79.21247401443837 
>>> dog1.weight 
16.713010614190193 
>>> dog2 = dog() 
>>> dog2.height 
48.90049233226392 

但是,如果你想允許根據需要還明確規定身高和體重,你可以有默認參數:

>>> class dog(): 
    def __init__(self,height = None, weight = None): 
     self.height = height if height else random.uniform(1.0,100.0) 
     self.weight = weight if weight else random.uniform(.7,20.0) 

>>> dog().height 
78.10866941943496 
>>> dog().height 
50.715307081419276 
>>> dog(20).height 
20 

順便說一句,如果你輸入0爲您的身高或體重中,init將評估作爲假,因此將選擇一個隨機浮動,而不是將其設置爲0。我把它喜歡這樣,因爲我認爲你永遠不會想要一隻身高或體重爲0的狗(儘管不應該歧視狗的外表)。

+0

如果我想編寫一個名爲makePack()的函數,它接受一個整數參數n,並返回一個n個Dog對象的列表,我會使用像這樣的正確列表嗎? (n): n =鴨() n.attr =計數 Duck.append(n) – user5473706

+0

'鴨子!=狗'.... –