2016-04-17 18 views
0

到目前爲止,我所做的是這樣的:我如何知道python中while循環的最大數目是多少?

from random import randint  
def num_random(): 
    counter = 0 
    while (counter <= 99): 
     counter=counter+1 
     base=randint(1,100) 
     height=randint(1,100) 
     area = base*height/2 
     data(area) 

def data(area): 
    print("area=",area) 

num_random() 

但我想定什麼三角形面積最大。

我thnik我可以將每個區域的值存儲在一個列表中,然後使用max(list),所以我可以知道什麼是最大的。問題是我不確定如何將while循環中的值存儲在列表中。

在此先感謝!

回答

0

你是對的,只是追加area到一個列表,然後調用max功能:

from random import randint  
def num_random(): 
    counter = 0 
    areas = [] 
    while (counter <= 99): 
     counter=counter+1 
     base=randint(1,100) 
     height=randint(1,100) 
     area = base*height/2 
     areas.append(area) 
    data(max(areas)) 

def data(area): 
    print("area=",area) 

num_random() 

>>> num_random() 
('area=', 4140) 
>>> num_random() 
('area=', 4464) 
1

你可以簡單地做

max(randint(1,100)*randint(1,100)/2 for i in range(100)) 

,或者如果你想讓它更清晰一點,

def area_triangle(base, height): 
    return base*height/2 

def max_rand_area(num_trials=100): 
    return max(area_triangle(randint(1,100), randint(1,100)) for i in range(num_trials)) 
0

這裏是我會寫的原代碼,再加上以列表格式爲:

from random import randint 
def num_random(): 
    base = [] 
    height = [] 
    area = [] 
    for i in range(99): #Use For Loop rather than while loop with counter 
     base.append(randint(1,100))  #Add value to "base" list 
     height.append(randint(1,100))  #Add value to "height" list 
     area.append(base[i]*height[i]/2)   #Calculate Area h*b/2 
     print("Area = {}".format(area))  #Print Area Value to Terminal 
    print("Max Area = {}".format(max(area)) 
num_random() #call the function 

此外,現在您可以使用索引i從創建的列表中提取索引值。

相關問題