2017-10-04 303 views
0

我对Python相当陌生,遇到了一个试图计算一堆随机数的平均值的障碍。该程序的总体概述是它是一个模具滚动程序它会提示用户输入一定数量的边,然后滚动,直到程序输出蛇眼。它也跟踪双打的数量和获得蛇眼需要多长时间。然后创建整个程序中每个骰子的平均数量。这是我迷失的地方。计算多个随机数的平均值Python

编辑:我删除了我的原代码,并在瓦西利斯的回答工作:

import random 

while True: 
    #prompts user for valid number 
    user_s = int (input ("How many sides on your dice? ")) 
    if user_s < 3: 
     print("That is not a valid size value, please enter a positive number") 
    if user_s >= 3: 
     break 

print() 
print("Thanks! Here we go...") 
print() 
double_count = 0 
roll_count = 0 

sum1 = 0 # Used to calculate sum of die_1 
sum2 = 0 # Used to calculate sum of die_2 

while True: 
    roll_count += 1 
    die_1 = random.randint(1,user_s) 
    die_2 = random.randint (1,user_s) 




    print(roll_count,".", " Die number 1 is ", die_1 , " and die number 2 is ", die_2, ".", sep ="") 
    if die_1 == die_2: 
     double_count += 1 
    if die_1 == 1 and die_2 == 1: 
     break 

    # Making sum 
    sum1 = sum1 + die_1 
    sum2 = sum2 + die_2 

print("You finally got snake eyes on try number", roll_count) 
print("Along the way you rolled a double", double_count,"times") 

print(die_1) 
print(die_2) 

# Integer divisions 

avg_roll1 = sum1 // roll_count 
avg_roll2 = sum2 // roll_count 


print("The average roll for die 1 was", format(avg_roll1,".2f")) 
print("The average roll for die 2 was", avg_roll2) 

但是像他指出,它并不需要全部通过所有的卷记录的数字,而不是最后的数字。 任何帮助来实现这一点,将不胜感激。

谢谢!

+0

有几件事:一个'list'永远不会等于一个整数。 'die_1 = [random.randint(1,user_s)]'不附加到列表,它只是替换它。如果你想保留原来的值(你已经正确地知道了你的值),你需要添加到列表中,而不是替换它。最后,由于'die_1'已经是一个列表,'[die_1]'是列表*的列表,所以'sum'不会真正起作用。 –

回答

0

明白了自己。

将累加器变量=设置为模具卷。在这种情况下,sum1和sum2是变量。

# make all of the functions in the "random" module available to this program 
import random 

while True: 
    #prompts user for valid number 
    user_s = int (input ("How many sides on your dice? ")) 
    if user_s < 3: 
     print("That is not a valid size value, please enter a positive number") 
    if user_s >= 3: 
     break 

print() 
print("Thanks! Here we go...") 
print() 
double_count = 0 
roll_count = 0 

sum1 = 0 # Used to calculate sum of die_1 
sum2 = 0 # Used to calculate sum of die_2 

#while statement for die rolls 
while True: 
    roll_count += 1 
    die_1 = random.randint(1,user_s) 
    sum1 += die_1 

    die_2 = random.randint (1,user_s) 
    sum2 += die_2 




    print(roll_count,".", " Die number 1 is ", die_1 , " and die number 2 is ", die_2, ".", sep ="") 
    if die_1 == die_2: 
     double_count += 1 
    if die_1 == 1 and die_2 == 1: 
     break 



print("You finally got snake eyes on try number", roll_count) 
print("Along the way you rolled a double", double_count,"times") 


# Integer divisions 

avg_roll1 = sum1/roll_count 

avg_roll2 = sum2/roll_count 


print("The average roll for die 1 was", format(avg_roll1,".2f")) 
print("The average roll for die 2 was", format(avg_roll2,".2f")) 
0

如果您喜欢看一看,我在代码中做了一些更改。我认为你想要把平均值作为整数来计算,尽管你可以改变它。您可以使用die_1die_2简单整型变量,因此它们只持有由random.randint(1,user_s)产生的最后一个值:

import random 

    '''Skipped input part''' 

    print() 
    print("Thanks! Here we go...") 
    print() 
    double_count = 0 
    roll_count = 0 

    sum1 = 0 # Used to calculate sum of die_1 
    sum2 = 0 # Used to calculate sum of die_2 

    while True: 
     roll_count += 1 
     die_1 = random.randint(1,user_s) 
     die_2 = random.randint (1,user_s) 

     print("DIE_1: ", die_1) 
     print("DIE_2: ", die_2) 


     print(roll_count,".", " Die number 1 is ", die_1 , " and die number 2 is ", die_2, ".", sep ="") 
     if die_1 == die_2: 
      double_count += 1 
     if die_1 == 1 and die_2 == 1: 
      break 

     # Making sum 
     sum1 = sum1 + die_1 
     sum2 = sum2 + die_2 

    print("You finally got snake eyes on try number", roll_count) 
    print("Along the way you rolled a double", double_count,"times") 

    print(die_1) 
    print(die_2) 

    # Integer divisions 

    avg_roll1 = sum1 // roll_count 
    avg_roll2 = sum2 // roll_count 


    print("The average roll for die 1 was", avg_roll1) 
    print("The average roll for die 2 was", avg_roll2)