2016-04-26 5 views
0

Ich versuche herauszufinden, was ich hier mit meinem Code falsch mache. Ich habe versucht, den zweiten Teil zu ändern, indem ich alles nach # der Hauptfunktion beseitige. Gedanken?Lokale Pythonvariable, auf die vor der Zuweisung verwiesen wird

bekomme ich folgende Fehler

Traceback (most recent call last): File "file", line 1, in import petspgm File "file", line 39, in main() File "file", line 34, in main print('Pet Name: ', pets.get_pet_name) builtins.UnboundLocalError: local variable 'pets' referenced before assignment –

import petspgm 

def main(): 
    #Get a list of pet objects. 
    pets = make_list() 

    #Display the data in the list. 
    print('Here is the data you entered: ') 
    display_list(pets) 

#This function gets data from the user for 3 pets. It returns a list of pet 
#objects containing the data. 
def make_list(): 
    #Create an 
    pet_list = [] 

    #Add three pet objects to the list 
    print('Enter the data for 3 pets.') 
    for count in range(1, 3): 
     #Get the pet data 
     print("Pet number " + str(count) + ":") 
     pet_name = input("Enter your pet's name: ") 
     pet_type = input("Enter the type of pet: ") 
     pet_age = float(input("Enter the pet's age: ")) 

     #Create a new PetData object in memory and assign it to the pet variable. 
     pet = petspgm.PetData(pet_name, pet_type, pet_age) 

     #Add the object to the list. 
     pet_list.append(pet) 

     #Return the list. 
     return pet_list 

#This function accepts a list containing PetData objects as an argument and 

def pet_list(): 

    #displays the data stored in each object. 
    display_list(pet_list) 
    for item in pet_list: 
     print("Pet's name is: " + item.get_pet_name()) 
     print("Pet's type is : " + item.get_pet_type()) 
     print("Pet's age is : " + item.get_pet__age()) 

#Call the main function 
main() 

Hier wird die andere Hälfte auf den Code ist:

class PetData(object): 
    def __init__(self, name, animal_type, age): 
     self.__pet_name = pet_name 
     self.__pet_type = pet_type 
     self.__pet_age = pet_age 

    def set_name(self, name): 
     self.__pet_name = pet_name 

    def set_type(self, animal_type): 
     self.__pet_type = pet_type 

    def set_age(self, age): 
     self.__pet_age = pet_age 

    def get_name(self): 
     return self.__pet_name 

    def get_animal_type(self): 
     return self.__pet_type 

    def get_age(self): 
     return self.__pet_age 


# The main function 
def main(): 
    # Prompt user to enter name, type, and age of pet 
    name = input('What is the name of the pet: ') 
    animal_type = input('What type of pet is it: ') 
    age = int(input('How old is your pet: ')) 
    print('This will be added to the records. ') 
    print('Here is the data you entered:') 
    print('Pet Name: ', pets.get_pet_name) 
    print('Animal Type: ', pets.get_pet_type) 
    print('Age: ', pets.get_pet_age) 
    pets = Pet(name, animal_type, age) 

main() 
+2

Bitte geben Sie weitere Details. Was läuft mit deinem Code falsch? Passiert etwas, von dem du erwartest, dass es nicht passiert? Ist etwas, von dem Sie erwarten, dass es nicht passiert? Be specific http://stackoverflow.com/help/how-to-ask – Hamms

+0

Traceback (letzter Aufruf zuletzt): Datei "C: \ Benutzer \ BakerFamily \ Dokumente \ Vince \ LCC \ CITP 110 \ BakerVPR9.py", Zeile 1, in import petspgm Datei "C: \ Benutzer \ BakerFamily \ Dokumente \ Vince \ LCC \ CITP 110 \ petspgm.py", Zeile 39, in main() Datei „C: \ Benutzer \ BakerFamily \ Dokumente \ Vince \ LCC \ CITP 110 \ petswpg.py ", Zeile 34, im Hauptverzeichnis print ('Tiername:', pets.get_pet_name) builtins.UnboundLocalError: lokale Variable 'pets' referenziert vor Aufgabe – bakervin730

+0

Bitte aktualisieren Sie Ihre Originalfrage mit diesen Daten – Hamms

Antwort

1

Im Haupt:

print('This will be added to the records. ') 
print('Here is the data you entered:') 
print('Pet Name: ', pets.get_pet_name) 
print('Animal Type: ', pets.get_pet_type) 
print('Age: ', pets.get_pet_age) 
pets = Pet(name, animal_type, age) 

Sie die Tiere Werte drucken bevor es tatsächlich initialisiert/deklariert wird. Ich denke, Sie wollen:

pets = Pet(name, animal_type, age) 
    print('This will be added to the records. ') 
    print('Here is the data you entered:') 
    print('Pet Name: ', pets.get_pet_name) 
    print('Animal Type: ', pets.get_pet_type) 
    print('Age: ', pets.get_pet_age) 
+0

Nun gibt mir mein Fehler Trac eback (letzter Aufruf zuletzt): Datei "C: \ Benutzer \ BakerFamily \ Dokumente \ Vince \ LCC \ CITP 110 \ BakerVPR9.py", Zeile 1, in import petspgm Datei "C: \ Users \ BakerFamily \ Dokumente \ Vince \ LCC \ CITP 110 \ petspgm.py ", Zeile 40, in main() Datei" C: \ Benutzer \ BakerFamily \ Dokumente \ Vince \ LCC \ CITP 110 \ petspgm.py ", Zeile 32, in main pets = Haustier (Name, Tierart, Alter) builtins.NameError: Name 'Pet' ist nicht definiert – bakervin730

+0

@ bakervin730 Schau dir die Datei an und welche Klassen du definierst. Warum glaubst du, dass "Pet" nicht gefunden wird? – viraptor

+0

@viraptor ist es, weil es vorher "Petdata" war, und ich Daten davon vergessen habe? – bakervin730

Verwandte Themen