Passwort abfrage

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Klassen sollten mit einem Großbuchstaben anfangen.

Wenn du keine Umlaute verwenden willst, dann schreib doch gleich "size". :)

Es ist wesentlich lesbarer, wenn man nicht nach jedem Komma noch ein Leerzeichen setzt.
Gleichzeichen in Klammern würde ich ganz ohne Leerzeichen schreiben.

None ist ein reserviertes Wort in Python, das man in solchen Fällen auch ruhig verwenden sollte. Dein "none" ist ja einfach nur ein String.

Beim Zugriff auf eine Variable macht man keine Anführungszeichen (denn die stehen für einen String). Zudem muss "self.grosse" auch an "grosse" und nicht wie bei dir an "klein" gebunden sein.

Weiterhin solltest du dich schon entscheiden, ob du die Argumente bei der Bestellfunktion oder bei der Initialisierung mitgeben willst. Für letzteres wäre dies eine mögliche Lösung:

Code: Alles auswählen

class Pizza(object):

    def __init__(self, size='normal', topping=None):
        self.size = size
        self.topping = topping
        
    def order(self):
        print 'Your %s pizza with %s has been ordered' % (self.size, self.topping)
            

def main():
    p = Pizza('small', 'ham')
    p.order()
Möchte man das ganze etwas realistischer gestalten, würde man "order()" außerhalb einer Klasse schreiben. Dann können nämlich auch mehrere "Pizza()"-Instanzen in eine Bestellung aufgenommen werden:

Code: Alles auswählen

ham = Pizza(size=small, topping='ham')
peperoni = Pizza(topping='peperoni') # wenn keine Größe angegeben wird, nimmt die Klasse aus dem Beispiel ja "normal"
order(ham, peperoni)
Schreib doch mal zur Übung den passenden Code dazu. :) Denkbar wäre ja vielleicht noch eine Fehlermeldung, wenn der Belag vergessen wurde.

EDIT: Wobei die Behandlung einer unbekannten Zahl an Argumenten für den Anfang vielleicht doch etwas viel ist. Zudem ist eigentlich gar keine Klasse nötig, wenn es wirklich nur um Größe und Belag geht. Da kann auch eine "normale" Funktion genommen werden, die dann der Funktion "order()" übergeben wird.
Zuletzt geändert von snafu am Sonntag 12. Oktober 2008, 11:30, insgesamt 1-mal geändert.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

snafu hat geschrieben:Es ist wesentlich lesbarer, wenn man nicht nach jedem Komma noch ein Leerzeichen setzt.
Gleichzeichen in Klammern würde ich ganz ohne Leerzeichen schreiben.
Nicht das Leerzeichen NACH dem Komma ist störend, sondern davor.
@rootmentor Arbeite mal die PEP8 durch. Im Wiki ist auch eine Übersetzung, falls dich das Englisch des Originals abhält. Ausserdem solltest du den Code auch durchlesen, der gepostet wird und dich zusätzlich fragen "Warum ist das so geschrieben?" und wenn du es nicht verstehst nachfragen. So hättest du jede Menge Fehler in deinem Schnipsel vermeiden können.

Idioms & Anti-Idioms aus den neuen 2.6er-Docs ist in dem Zug vielleicht auch keine schlechte Lektüre ;)
Rootmentor
User
Beiträge: 54
Registriert: Sonntag 17. August 2008, 18:26
Wohnort: Lingen
Kontaktdaten:

Is das nich egal wie ich meinen code gestalte?
Oder bekomm ich dann nachher probleme?

Also jetzt siehsts doch schon etwas schicker aus:

Code: Alles auswählen

#!/usr/bin/env python

class Pizza(object):
    def __init_(self , size = "small" , topping = None):
        self.size = "small"
        self.topping = None
        
        
    def order(self , size , belag):
        print "You choosed a" ,user_size,user_topping,"pizza"
        
            
            

topping_list = ("Ham , Peperoni , Tomato , Onion")

print "Welcome to Pizza.py you can choose from theese toppings"
print topping_list

user_size = raw_input("What size you want?")
user_topping = raw_input("What topping you want?")
while user_topping not in topping_list:
    user_topping = raw_input("What topping you want?")
    
p = Pizza()
p.order(user_size  ,  user_topping)


Man bin ich stolz auf mich xD
danke , Rootmentor
_____________________________________________
Die unendlichkeit dauert lang , besonders bis zum Ende
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ohne dir nahetreten zu wollen, aber bei deinem Verhalten bleibt einem eigentlich nur noch ein Kopfschütteln. Du scheinst dir nichts von dem anzunehmen, was man dir rät, sondern willst offenbar sowieso dein eigenes Ding machen. Du wurdest jetzt mehrmals auf die Fehler in deinem Code hingewiesen, nimmst aber weiterhin deine falsche Version als Grundlage für weitere Fehler. Ich für meinen Teil habe jetzt ehrlich gesagt keine Lust mehr, dir zu helfen.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

snafu hat geschrieben:Ich für meinen Teil habe jetzt ehrlich gesagt keine Lust mehr, dir zu helfen.
Das kann ich verstehen.
MfG
HWK
BlackJack

Me Too. Ist das Dummheit oder ein Troll?
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich vermute einen relativ jungen Typen dahinter, dem das alles gerade ein bißchen zuviel Input ist. Da schaltet der Kopf schon mal ab und man probiert es mit der Brechstange.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Rootmentor hat geschrieben:Is das nich egal wie ich meinen code gestalte?
Oder bekomm ich dann nachher probleme?
Ja, dadurch dass du PEP8 ignorierst gibst du anderen das Signal dass du auf gutgemeinte, jahrelang erprobte Methoden pfeifst. Brauchst dich dann nicht wundern, dass die Leute eher seltener helfen wollen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Rootmentor hat geschrieben:Is das nich egal wie ich meinen code gestalte?
Oder bekomm ich dann nachher probleme?
Nur mit uns und anderen, die ihn lesen sollen (ohne ihre Lesegeschwindigkeit durch ungewöhnliche Formatierung verringern zu müssen) :)


Noch 'n Tipp zu Klassen: Wenn du darin Methoden hast, die in ihren Rümpfen nicht auf ``self`` zugreifen, dann sollten sie in den allermeisten Fällen auch nicht Teil der Klasse sein. Die Klasse ist nicht (wie bei PHP *hust*) als Namensraum gedacht, sondern für wirkliche objektorientierte Modellierung dessen, was du abbilden möchtest.
Rootmentor
User
Beiträge: 54
Registriert: Sonntag 17. August 2008, 18:26
Wohnort: Lingen
Kontaktdaten:

is das nich das was programmieren grad so einzigartig macht ich mein wenn alle mail programme alle betriebsysteme alle handy betriebssysteme gleich aussehen würden. Also ich fänds langweilig :D
_____________________________________________
Die unendlichkeit dauert lang , besonders bis zum Ende
lunar

Du hast nicht viel Ahnung vom Programmieren ...
Rootmentor
User
Beiträge: 54
Registriert: Sonntag 17. August 2008, 18:26
Wohnort: Lingen
Kontaktdaten:

da ich vor 6wochen damit angefangen bin ...
_____________________________________________
Die unendlichkeit dauert lang , besonders bis zum Ende
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Rootmentor hat geschrieben:is das nich das was programmieren grad so einzigartig macht ich mein wenn alle mail programme alle betriebsysteme alle handy betriebssysteme gleich aussehen würden.
Heißt aber nicht, dass da der Quelltext wie Kraut und Rüben ausschaut.
Rootmentor hat geschrieben:Also ich fänds langweilig :D
Du weißt doch gar nicht, wie der Quelltext deines Betriessystemes, der deines Handys und der deines Mailclients aussieht. Warum ziehst du schlüsse über etwas, das du nicht kennst?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Don't feed the troll, sag ich nur (auch wenn ich normalerweise nicht so unfreundlich bin).
Benutzeravatar
draci
User
Beiträge: 53
Registriert: Dienstag 26. September 2006, 18:13

Don't feed the troll, sag ich nur (auch wenn ich normalerweise nicht so unfreundlich bin).
*HILFE* noch ein Troll :mrgreen: (http://www.python-forum.de/topic-16161. ... s&start=30)
Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect. - Linus Torvalds

[url]http://groups.google.com/group/pt.comp.so.linux/msg/9eb7db59e32fe08a[/url]

[url=http://www.tty1.net/smart-questions_de.html]Wie man richtig Fragen stellt[/url]
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

draci hat geschrieben:*HILFE* noch ein Troll :mrgreen: (http://www.python-forum.de/topic-16161. ... s&start=30)
Der hat sich aber wenigstens zum Schluss noch einigermaßen Mühe in Sachen Ausdrucksweise und Rechschreibung gegeben und war nur am Anfang etwas irritiert, weil er aus nem anderen Umfeld kommt. Unser Freund hier zeigt aber ganz und gar keine Einsicht, spart nicht an Eigenlob und kommt irgendwie so rüber als will er uns beweisen was für ein mehr oder weniger toller Programmierer er schon ist. Und sowas kann ich mal gar nicht ab.

Anders gesagt: Ich kann über Ausdrucksschwächen und gewissen Problemen beim Mitdenken/Aufnehmen der Informationen ja noch hinwegsehen. Aber wenn einer wirklich 0% von den Tipps annehmen will, die ihm gegeben werden, ist die ganze Sache in meinen Augen einfach sinnlos. Am Anfang schien sich das noch in Grenzen zu halten und daher hat er's auch zunächst von mir erklärt bekommen.
Zuletzt geändert von snafu am Montag 13. Oktober 2008, 16:01, insgesamt 1-mal geändert.
Rootmentor
User
Beiträge: 54
Registriert: Sonntag 17. August 2008, 18:26
Wohnort: Lingen
Kontaktdaten:

Hey ich versuch den scheiß hier einigermaßen hinzubekommen!
_____________________________________________
Die unendlichkeit dauert lang , besonders bis zum Ende
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Rootmentor hat geschrieben:Hey ich versuch den scheiß hier einigermaßen hinzubekommen!
Da du wohl aber entweder unsere Beiträge nicht liest, nicht verstehst oder nicht verstehen willst, musst du das alleine hinbekommen.
Antworten