def ind(): galos = eval(input("What was the starting integer??\n")) galoe = eval(input("What was the ending integer?\n")) use = galoe - galos round(use,1) if (use < 4000000): fin = 1000 elif (use > 4000000) and (use < 10000000): fin = 2000.00 else: use1 = use - 10000000 start = 2000.00 fin = str(start + (0.00025 * use)) print ("Your bill is:$" + fin) def bill(code): print("Code:" + code) print("Beggining reading:" + galos) print("Ending reading:" + galoe) print("Gallons used:" + use) print("Money owed:$" + fin) I am writing a basic code that creates a "water bill." I am trying to use galos in bill(), but I keep getting this error: NameError: name 'galos' is not defined How can I get that information?
4 Réponses :
Utilisez les globaux globaux (je ne recommande pas que) Je vous recommande de regarder les classes p> p>
Il y a deux raisons d'écrire une fonction. On consiste à effectuer une action (exemple Vous dites que vous ne voulez pas utiliser à la fin de votre fonction appel et utilisez ces valeurs retournées dans votre vous pouvez utiliser des variables globales pour cela, ce qui fonctionnera dans un programme de jouets, mais là-bas sont de bonnes raisons de ne pas avoir à moins qu'il n'y ait pas d'alternative. P> p> impression () code>) et l'autre consiste à calculer les valeurs et à les renvoyer.
retour code> mais dans une fonction qui ne veut pas utiliser
retour code> n'a pas beaucoup de sens. p>
ind () code>, ajoutez p>
ind () code> comme ceci: p>
impression () code> appels. p>
Vous pouvez utiliser une classe simple en tant que conteneur pour vos données: exécutant ceci sera sortie ceci: p> What was the starting integer??
123
What was the ending integer?
1235
Code: 5234
Beggining reading: 123
Ending reading: 1235
Gallons used: 1112
Money owed:$ 1000
Au fur et à mesure que d'autres réponses ont déclaré ci-dessus, les variables globales sont votre ticket d'or ici. Voici une façon que vous puissiez implémenter ces éléments suivants:
def ind(): global galos, galoe, use, fin galos = eval(input("What was the starting integer??\n")) galoe = eval(input("What was the ending integer?\n")) use = galoe - galos round(use,1) if (use < 4000000): fin = 1000 elif (use > 4000000) and (use < 10000000): fin = 2000.00 else: use1 = use - 10000000 start = 2000.00 fin = str(start + (0.00025 * use)) print ("Your bill is:$" + fin) def bill(code): # Use string formatting throughout print statements here, # string concatenation ("abc" + var) expects a string type. print("Code:%i" %code) print("Beggining reading:%i" %galos) print("Ending reading:%i" %galoe) print("Gallons used:%i" %use) print("Money owed:$%.2f" %fin) galos = 0 galoe = 0 use = 0 fin = 0 ind() bill(1234)