2016-11-04 1 views
0

Ich habe diesen Zufallsgenerator, um die positiven, negativen und Nullen aufzuzeichnen, die vom Zufallsgenerator aufgezeichnet wurden. Aber wenn ich es teste, werden die negativen Zahlen nicht aufgezeichnet und stattdessen im positiven Zähler aufgezeichnet. Ich sehe nicht, was mit meinem Code falsch ist, irgendeine Hilfe?Zufallsgenerator: Zähler

from random import randint 
posi_counter = 0 
nega_counter = 0 
zero_counter = 0 
avg_counter = 0 

# Inputs 
num_gen = int(input("How many numbers to be generated? ")) 
if num_gen > 0: 
    max_gen = int(input("Enter maximum number to be generated (>0): ")) 
    min_gen = max_gen * -1 
    print("For {} numbers in the range, {} to {}:".format(
    num_gen, min_gen, max_gen)) 
    avg = 0 
    # Outputs 
    for x in range(num_gen): 
     print(randint(min_gen, max_gen)) 
     avg_counter += 1 
     avg = avg + x 
     if x > 0: 
      posi_counter += 1 
     elif x < 0: 
      nega_counter += 1 
     elif x == 0: 
      zero_counter += 1 
    average_total = avg/avg_counter 
    print("{} positive numbers".format(posi_counter)) 
    print("{} zero numbers".format(zero_counter)) 
    print("{} negative numbers".format(nega_counter)) 
    print("{:.1f} average value".format(average_total)) 
+2

'X', wegen 'Bereich (num_gen)' ist immer positiv. Sie behalten den von 'randint' generierten Wert nicht bei. –

+0

Nebenbei würde ich Ihre 'avg' Variable in' total' umbenennen. (Es ist nicht der Durchschnitt der Zufallsvariablen, es ist ihre Summe - aber 'sum 'ist ein eingebauter Python, also wäre eine schlechte Wahl des Namens.' Average_total' könnte dann' durchschnittlich 'werden. –

Antwort

3

x von range(num_gen) kommt, so ist es immer >= 0, so etwas wie dieses stattdessen:

for _ in range(num_gen): 
    x = randint(min_gen, max_gen) 
    print(x) 
+0

Ahh ich sehe, dass ich definitiv mehr gelernt habe über die for-Schleife heute, danke – IncognitoBatman