Lesen Sie die Werte aus dem Print-Anweisungs-Array, um ein Kreisdiagramm zu erstellen

Hier ist der Code:

import matplotlib.pyplot as plt students = [6,3,1,8,2] a=[] for s in students: a.append((s/20)*100) values =[] for b in a: values.append(b) print(values) # Want to grab values directly from the "print(values)" instead of copying them from the output. values = [30, 15, 5 , 40, 10] colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral', 'red'] plt.pie(values, labels=[6,3,1,8,2], colors=colors, autopct='%1.1f%%', shadow=True, startangle=90) 

Wie in beiden "für Loops" gezeigt, bekomme ich den% Wert für jeden der Schüler in diesem Array. Meine aktuelle Ausgabe von der "for Loops" Berechnung ist:

 [30.0, 15.0, 5.0, 40.0, 10.0] 

Und das Piechart, das ich mit der Syntax für Piechart bekomme, wird im folgenden Link angezeigt:

Http://oi58.tinypic.com/68hued.jpg

Ich bekomme die Ergebnisse, die ich will, aber ich möchte keine values = [30, 15, 5 , 40, 10] weil ich jede Nummer manuell aus der Ausgabe eingeben muss.

Wenn ich 50 Nummern habe, dann gehe ich nicht in jede Nummer ein. Ich könnte, aber das ist einfach nicht sauber.

Vielen Dank!!

    One Solution collect form web for “Lesen Sie die Werte aus dem Print-Anweisungs-Array, um ein Kreisdiagramm zu erstellen”

    Zuerst sollten Sie in der Lage sein, Ihre Sekunde für die Schleife zu entfernen, es sei denn, sie sind ein bestimmter Grund, dass Sie es einschließen. Liste 'a' speichert bereits alle Ihre Werte, daher ist es redundant, die Liste in eine andere Liste zu kopieren.

    Es sieht aus wie Ihr Skript sollte in der Lage sein, die Werte auf dem Kreisdiagramm richtig anzuzeigen, wie es ohne manuelles Eingeben von ihnen ist, solange Sie die richtige Liste zurückgeben. Sie rufen "Werte" in der Plotten-Anweisung an, die bereits alle Prozentwerte, die Sie benötigen, von der Schleife oben speichern

    Ihr Code sollte wie folgt funktionieren:

     import matplotlib.pyplot as plt students = [6,3,1,8,2] values=[] for s in students: values.append((s/20.)*100) print values colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral', 'red'] plt.pie(values, labels=students, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90) plt.show() 

    Wenn Sie Ihr Skript in pyhton 2.7 ausführen, hat 'values' eine Liste von 0s als Ergebnis der Integer-Division für Ihre prozentualen Berechnungen zurückgegeben. Wenn dies der Fall ist, achten Sie darauf, ein '.' Zu verwenden. In Ihrer prozentualen Berechnung, um eine dezimale statt Boden-Integer-Ergebnis zurückzugeben. Wenn Sie in Python 3 arbeiten, ist dies nicht notwendig.

    Python ist die beste Programmiersprache der Welt.