2017-09-01 1 views
2

Je suis nouveau sur Python. Dans mon module Utility.py, la fonction ci-dessous prend en compte l'âge et le sexe d'une personne. Il renvoie les frais que cette personne doit payer en fonction de son âge et de son sexe. Je ne suis pas autorisé à apporter des modifications à ce module.NameError en Python - Impossible d'appeler une fonction

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 

J'ai aussi fait un nouveau module, PrintFees.py, où je dois demander à l'utilisateur l'âge et le sexe et passent ensuite les entrées à la fonction (get_fees) que je dois appeler à partir du module utilitaire . J'ai aussi besoin d'imprimer les frais nécessaires.

Voici ce que j'ai essayé:

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)) 

Quand j'ai essayé de courir, ce message d'erreur est apparu.

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 

Comment résoudre ce problème? Merci.

+1

Ce ne sont pas des classes, ce sont des modules. –

+0

Si l'importation a été faite je ne vois pas pourquoi ce que vous avez montré ne devrait pas fonctionner. Vous voyez, votre erreur indique 'printfees.py', vous dites' PrintFees.py'. Vous avez probablement fait la même chose avec 'Utility.py' –

+1

Tout d'abord, votre terminologie est un peu éteinte. Vous n'avez créé aucune classe, vous avez créé des modules. Module est juste le jargon Python pour un fichier avec du code Python. Maintenant pour votre problème: je ne peux pas reproduire l'erreur. Quelque chose d'autre que vous ne nous avez pas montré se passe. – timgeb

Répondre

-1

Je suppose que votre problème est avec indentation dans la fonction get_fees:

au lieu de ceci:

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 

faire:

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

Tout d'abord vous avez besoin du modual Utility dans le même dossier que votre code ou dans les paquets du site dans le répertoire python. Si c'est le nom f de la classe dans le code utilitaire. Je vais montrer un exemple:

import Utility 
Utility.className.functionName(arguments) 
0

tout d'abord la structure de votre répertoire soit comme celui-ci

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

but de __init_.py

Dans 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 

Dans 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)))