2015-11-25 54 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

'鸭子!=狗'.... –