2017-10-11 8 views
0

pour l'école Je dois faire un programme qui trace combien de fois vous devez lancer les dés pour tout acheter, avec différentes quantités d'argent à chaque fois. Le script afin de calculer le rouleau des dés fonctionne correctement, mais je ne sais pas comment faire l'intrigue. Voici mon code pour calculer pour différentes quantités de liquidités initiales:Python: tracer plusieurs lignes avec la même variable que résultat

money = [2500, 2000, 1500, 1000, 500, 0] 
count = 0 
for value in money:  
     while True: 
      throw() 
      piece.move(distance) 
      count = count + 1 
      start() 
      buy() 
      if (poslen) == 36: 
       print("It took", count,"rolls.") 
       plt() 
       break 

Après que je voulais faire un terrain qui se présente comme suit:

def plt(): 
    money = [0,500,1000,1500,2000,2500] 
    line0 = [count] 
    line500 = [count] 
    line1000 = [count] 
    line1500 = [count] 
    line2000 = [count] 
    line2500 = [count] 
    plt.xlabel("Amount of money") 
    plt.ylabel("Amount of throws") 
    plt.title("Throws with varying amounts of money") 
    plt.plot(money, line0) 
    plt.plot(money, line500) 
    plt.plot(money, line1000) 
    plt.plot(money, line1500) 
    plt.plot(money, line2000) 
    plt.plot(money, line2500) 
    plt.show() 

Le nombre variable de ofcourse varie chaque ligne (puisqu'il vous prend plus de tours pour acheter des choses). Donc, mes questions est de savoir comment puis-je imprimer la valeur Y correcte pour chaque ligne différente (j'espère que ma question est de ne pas vague)

+0

Première SIGNE - essayez de coder tout anglais sauf que c'est une chose fonctionnelle sur l'interface utilisateur qui s'appelle différent dans votre langue. "Money in Geld" est également par exemple - mybe utilise "Betrag in Beträge" (je suppose que vous comprenez l'allemand). Et comment l'intrigue serait-elle stylée? lineprinting simple, un terminaltable, une UI-pop-up avec un graphique? – LenglBoy

+0

Je l'ai édité en anglais :) Il devrait être lineprinting simple, montrant le nombre de lancers pour chaque montant d'argent de départ. Sur le Y devrait être les lancers et les lignes devraient aller plus haut sur le Y cul le montant de l'argent de départ diminue (puisqu'il faut plus de temps pour accumuler de l'argent). – Kushan

Répondre

0

Le code qui fonctionne soi-disant déjà, est incomplète: poslen, throw, start, buy et distance sont manquants, donc je ne peux pas être exactement sûr de ce que vous faites là, mais il semble que la structure de vos boucles est inutilement compliquée. Et à propos de ça?

for value in money: 
    while not poslen == 36: 
     throw() 
     piece.move(distance) 
     count = count + 1 
     start() 
     buy() 
    print("Het duurde", count, "worpen voordat je alles had.") 

plt() 

Il est également très suspect value est utilisé nulle part. Ces mystères ne nous aident pas à comprendre ce que votre code est censé accomplir. En ce qui concerne votre fonction plt, je vous suggère de stocker vos différents comptes dans un conteneur. Probablement un dictionnaire. Ce n'est pas clair pour moi exactement comment vous générer les données, mais si vous parvenez à les obtenir dans un dictionnaire (appelons-le line), plt pourrait ressembler à ceci:

+0

Jamais pensé à écrire la boucle for comme ça, merci! C'est beaucoup moins compliqué en effet. Et oui, on utilisera certainement votre conseil mentionné sur les parcelles! – Kushan

+0

@Kushan Remarquez que ma modification sur 'value' n'est pas utilisée. Il est probable que vous souhaitiez utiliser 'value' comme clé dans le dictionnaire, lorsque vous le remplissez. (Si vous trouvez la réponse utile, n'oubliez pas de l'augmenter et/ou de l'accepter.) – jacg

+0

@Kushan Autre modification: l'appel 'plt()' n'appartient pas à la boucle. Vous voulez tracer une fois que vous avez recueilli toutes les données. – jacg