在Python中使用break命令的随机函数

时间:2015-02-04 00:55:12

标签: python random

  1. 编写一个接受3个数字的函数并计算3个数字的平均值,并将平均值提高到第二个幂(返回平均值)。

  2. 写一个循环,找到3个随机统一数字(0到1);将3个数字发送给函数,在函数值大于0.5625时停止循环

  3. 我试图找出这两件事,但我有点困惑。

    import random 
    
    a = random.random ()
    b = random.random ()
    c = random.random ()
    
    def avenum(x1,x2,x3):   # the average of the 3 numbers
        z = (x1+x2+x3)/3.0 
        return z
    
    y = avenum(a,b,c)
    
    print 'the average of the 3 numbers = ',y
    
    
    def avesec(x1,x2,x3):   # the average of the second power
        d = ((x1**2)+(x2**2)+(x3**2))/3.0 
        return d
    
    y1 = avesec(a,b,c)
    
    print 'the average of the second power = ',y1
    

2 个答案:

答案 0 :(得分:2)

第一个问题:

  

编写一个接受3个数字的函数并计算3个数字的平均值,并将平均值提高到第二个幂(返回平均值)。

def square_of_average(x1, x2, x3):
    z = (x1 + x2 + x3) / 3
    return z ** 2 # This returns the square of the average

你的第二个问题:

  

写一个循环,找到3个随机统一数字(0到1);将3个数字发送到函数,并在函数值大于0.5625 时停止循环。

假设你想在另一个函数中写这个:

import random
def three_random_square_average():
    z = 0 # initialize your answer
    while(z <= 0.5625): # While the answer is less or equal than 0.5625...
        # Generate three random numbers:
        a, b, c = random.random(), random.random(), random.random()
        # Assign the square of the average to your answer variable
        z = square_of_average(a, b, c)
    # When the loop exits, return the answer
    return z

另一种选择:

import random
def three_random_squared_average():
    while(True):
        a, b, c = random.random(), random.random(), random.random()
        z = square_of_average(a, b, c)
        if(z > 0.5625):
            break
    return z

如果您不想要一个功能:

import random
z = 0
while(z < 0.5625):
    z = square_of_average(random.random(), random.random(), random.random())
print z

答案 1 :(得分:1)

首先是1) - 你将平均值提高到第二个幂...而不是每个值。否则,您需要输入值的第二个幂的平均值。

import random 

a = random.random ()
b = random.random ()
c = random.random ()

def avenum1(x1,x2,x3):   # the average of the 3 numbers
    z = ((x1+x2+x3)/3.0)**2
    return z

对于2):有更好的方法,但这是最明显的。

def avenum1(x1,x2,x3):   # the average of the 3 numbers
    z = ((x1+x2+x3)/3.0)**2
    return z

avg = 0:
while avg<0.5625:
    a = random.random ()
    b = random.random ()
    c = random.random ()
    avg = avenum1(a,b,c)

更好的方法:

avg = 0
while avg<0.5625:
    list_ = [random.random() for i in range(3)]
    avg = (sum(list_)/3.0)**2