Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Huiswerkvragen: Exacte vakken (https://forum.scholieren.com/forumdisplay.php?f=17)
-   -   [INF] Python (https://forum.scholieren.com/showthread.php?t=1675214)

trippV 06-03-2008 08:53

[INF] Python
 
Ik heb een programma geschreven met classen. Nu heb ik dus de classe huisdieren, en daaromder de subclasse katten. De opdracht is dat je een aantal katten invoerd en deze kan oproepen. Maar nu zijn er 2 dingen die niet helemaal goed werken, en ik weet niet waarom.

Deel 1
Code:

# We roepen een kat aan.

invoer = raw_input("Roep een kat: ")

# Nu heb ik dus ook een kat in geprogrammerd.
# Voorbeeld kat is moortje.

if invoer == moortje:
    print "De kat komt eraan gelopen."
else:
    print "Deze kat woont niet in dit huis, misschien bij de buren?"

--> Maar elke keer als ik moortje invul, dan krijg ik: Deze kat woont niet in dit huis, misschien bij de buren?
--> Ik snap niet waarom hij dat doet.

Deel 2

Dit is mijn hoofdclasse:

Code:

class Huisdier(object):
    def _init_(self, naam, leeftijd, geslacht, kleur, gewicht):
        self.naam = naam
        self.leeftijd = leeftijd
        self.geslacht = geslacht
        self.kleur = kleur
        self.gewicht = gewicht

# En een kat die ik heb aangemaakt:

moortje = ("Moortje", "18 jaar", "Poes", "Zwart", "1,9 kg")

# Nu wil ik dus dat als ik de kat moortje aanroep dat ik dan zo'n lijst krijg:

Moortje
18 jaar
Poes
Zwart
1,9 kg

--> Maar hij print gewoon: ('Moortje', '18 jaar', 'Poes', 'Zwart', '1,9 kg')

Kan iemand helpen?

ILUsion 06-03-2008 19:46

Let een beetje op je opmaak, in het vervolg. Zeker voor Python-code zijn de [code][/code]-tags onontbeerlijk!

Goed, wat er mis is met je code:

je moet moortje als volgt aanmaken:
Code:

moortje = Huisdier( ... )
Waarbij je die puntjes vervangt door de parameters van je constructor (zoals geschreven in jouw code). Wat je in jouw code verkeerd doet: daar maak je een Tuple (als je niet weet wat dit is: een soort statische lijst) aan met daarin Strings.

Verder, om te laten printen moet je ook de method/functie/procedure __str__(self) definiëren. (dus met def __str__(self): ....). Die laat je een string returnen die dient voor de weergave. Een regeleinde geef je weer met \n trouwens.

Bij het aanroepen doe je trouwens nog iets mis: je kijkt of naam == moortje. Maar moortje is een object van de klasse huisdier (subklasse kat zie ik nergens in je code), die kan nooit gelijk zijn aan een str. Hoewel je in dit geval waarschijnlijk door het toevoegen van die method __str__ ervoor zorgt dat hij wel kan checken, maar dat je dan alles exact hetzelfde moet ingeven. Waarop je moet controleren is dit: naam == moortje.naam.

Tripp 10-03-2008 12:50

thanks :D


Alle tijden zijn GMT +1. Het is nu 19:35.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.