2017-09-01 4 views
2

Ich bin neu in Python. In meinem Modul - Utility.py, nimmt die folgende Funktion das Alter und Geschlecht einer Person auf. Es gibt die Gebühren zurück, die diese Person je nach Alter und Geschlecht zu zahlen hat. Ich darf an diesem Modul keine Änderungen vornehmen.NameError in Python - Kann keine Funktion aufrufen

def get_fees(age, gender): 
    if gender == 'M': 
     if age >= 50: 
      return 300 
     elif age >= 35: 
      return 250 
     else: 
      return 150 
    else: 
     if age >= 50: 
      return 320 
     elif age >= 35: 
      return 270 
     else: 
      return 160 

Ich habe auch ein neues Modul, PrintFees.py, wo ich brauche die Benutzer für das Alter und Geschlecht zu veranlassen und dann die Eingaben an die Funktion (get_fees) übergeben, die von dem I-Dienstprogramm-Modul aufrufen müssen . Ich muss auch die Gebühren drucken.

Hier ist, was ich versucht:

import Utility 
age= int(input("What's your age? ")) 
gender = input("What's your gender? [M|F]") 
#Print fees 
print("Your fees is $", Utility.get_fees(age,gender)) 

Wenn ich zu laufen versucht, diese Fehlermeldung angezeigt.

Traceback (most recent call last): 
File "printfees.py", line 7, in <module> 
print("Your fees is $", Utility.get_fees(age,gender)) 
NameError: name 'Utility' is not defined 

Wie löse ich dieses Problem? Vielen Dank.

+1

diejenigen, die nicht Klassen sind, sind sie Module. –

+0

Wenn der Import durchgeführt wurde, sehe ich nicht, warum das, was Sie gezeigt haben, nicht funktionieren sollte. Sehen Sie, Ihr Fehler sagt 'printfees.py', Sie sagen' PrintFees.py'. Sie haben wahrscheinlich das gleiche mit 'Utility.py' getan. –

+1

Zunächst einmal ist Ihre Terminologie ein bisschen aus. Sie haben keine Klassen angelegt, Sie haben Module angelegt. Modul ist nur der Python-Jargon für eine Datei mit Python-Code. Nun zu deinem Problem: Ich kann den Fehler nicht erneut versuchen. Etwas anderes, was du uns nicht gezeigt hast, geht weiter. – timgeb

Antwort

-1

ich Ihr Problem erraten ist mit Vertiefung in der get_fees Funktion:

statt dessen:

def get_fees(age, gender): 

if gender == 'M': 
    if age >= 50: 
     return 300 
    elif age >= 35: 
     return 250 
    else: 
     return 150 
else: 
    if age >= 50: 
     return 320 
    elif age >= 35: 
     return 270 
    else: 
     return 160 

dies tun:

def get_fees(age, gender): 

    if gender == 'M': 
     if age >= 50: 
      return 300 
     elif age >= 35: 
      return 250 
     else: 
      return 150 
    else: 
     if age >= 50: 
      return 320 
     elif age >= 35: 
      return 270 
     else: 
      return 160 
0

Zunächst müssen Sie das Dienstprogramm modual in derselbe Ordner wie Ihr Code oder in den Site-Paketen im Python-Verzeichnis. Wenn es der Name der Klasse im Utility-Code ist. Ich werde ein Beispiel zeigen:

import Utility 
Utility.className.functionName(arguments) 
0

allererst die Verzeichnisstruktur sein wie diese

path/ 
| 
|----__init__.py 
|----Utility.py 
|----PrintFees.py 

Zweck __init_.py

In Utility.py

def get_fees(age, gender): 

    if gender == 'M': 
     if age >= 50: 
      return 300 
     elif age >= 35: 
      return 250 
     else: 
      return 150 
    else: 
     if age >= 50: 
      return 320 
     elif age >= 35: 
      return 270 
     else: 
      return 160 

In printfees.py

form Utility import get_fees 


age= int(input("What's your age? ")) 
gender = input("What's your gender? [M|F]") 
#Print fees 
print("Your fees is $ %s", str(get_fees(age,gender))) 
Verwandte Themen