-1
votes

Comment prendre des informations d'une fonction à utiliser dans un autre dans Python sans utiliser de retour?

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? 

0 commentaires

4 Réponses :


0
votes

Utilisez les globaux globaux (je ne recommande pas que) xxx

Je vous recommande de regarder les classes


0 commentaires

0
votes

Il y a deux raisons d'écrire une fonction. On consiste à effectuer une action (exemple impression () ) et l'autre consiste à calculer les valeurs et à les renvoyer.

Vous dites que vous ne voulez pas utiliser retour mais dans une fonction qui ne veut pas utiliser retour n'a pas beaucoup de sens.

à la fin de votre fonction ind () , ajoutez xxx

appel ind () comme ceci: xxx

et utilisez ces valeurs retournées dans votre impression () appels.

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.


0 commentaires

0
votes

Vous pouvez utiliser une classe simple en tant que conteneur pour vos données: xxx pré>

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


0 commentaires

0
votes

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)


0 commentaires