Seite 1 von 1

anfänger probleme :)

Verfasst: Sonntag 30. März 2008, 11:16
von Skuhl
Jo ich hab erst vor 2 tagen angefangen zu Programmieren mit python, da es ein kumpel von mir sehr empfohlen hat.
Muss sagen gefällt mir echt gut aber ich gebe in einem compiler vollgendes ein:

Code: Alles auswählen


Name = raw_input()
satz = "hy Name, wie, geht es dir?"
print satz

aber wen ich des ausühren will, geht nix, da muss irgendwo ein fehler sein :)
bitte net lachen, kann mir vorstellen das es ein richtig doofer anfänger fehler ist der eigentlich simpel zu beheben ist :) aber ich hoffe es erklärt mir jemand gut den fehler, bitte.

Liebe grüsse aus der Schweiz

Andi

p.s. ich arbeite mit dem KDevelop auf SuSE 10.2, arbeite irgendwie nicht gerne mit der konsole direkt obwohl dann gibt es:

smot@linux-sbbm:~/xc> python xc.py
Peter
hy Name, wie, geht es dir?
smot@linux-sbbm:~/xc>

aus.

Verfasst: Sonntag 30. März 2008, 11:26
von CM
Hallo und willkommen im Forum,

Versuche mal

Code: Alles auswählen

name = raw_input("Wie heisst du denn? ")
print "Hallo %s, wie geht es dir?" % name
Mehr dazu findest Du im Tutorial

Gruss
Christian

Re: anfänger probleme :)

Verfasst: Sonntag 30. März 2008, 11:58
von Leonidas
Hallo Skuhl, willkommen im Forum,
Skuhl hat geschrieben:p.s. ich arbeite mit dem KDevelop auf SuSE 10.2, arbeite irgendwie nicht gerne mit der konsole direkt obwohl dann gibt es:
Natürlich, denn die Ausgaben erscheinen auf stdout. Wenn du keine Konsole offen hast, dann siehst du die Ausgaben nicht. So einfach ist das.

Verfasst: Sonntag 30. März 2008, 13:11
von Skuhl
jo danke :) bin jetzt bissl mit dem tutorial weiter gekommen :)

Jetzt is mir nur wieder etwas komisches pasiert, hab ne aufgabe nach tutorial gemacht, eine passwort + name abfragung aber wen ich auch falsches eingebe ist das eigentlich richtig :) strange---->

Code: Alles auswählen


def passwort():
    print "Dein name?: ",
    eingabe = raw_input()
    print "Zauberwort: ",
    wort = raw_input()
    if (eingabe, wort == "Skuhl, Pocus"):
       print "Salut Skuhl !"
    else:
       print "weg von meinem Rechner !!"
passwort()


Verfasst: Sonntag 30. März 2008, 13:25
von Leonidas
``if (eingabe, wort == "Skuhl, Pocus"):`` -> ``if eingabe, wort == "Skuhl", "Pocus":``

Außerdem solltest du schauen, dass due die Einrückung mit konstant 4 Leerzeichen hinbekommst. Im Beispiel hast du einmal 4und einmal 3 Leerzeichen.

Verfasst: Sonntag 30. März 2008, 13:26
von Hyperion

Code: Alles auswählen

    if eingabe, wort == "Skuhl", "Pocus":
Versuchs mal damit

Verfasst: Sonntag 30. März 2008, 13:44
von Skuhl
ok, vielen dank :) geht ja schnell hier mit dem geholfen werden :)

Verfasst: Sonntag 30. März 2008, 13:51
von Skuhl
hmmm geht aber immer noch net,

Code: Alles auswählen

def passwort():
    print "Dein name?: ",
    eingabe = raw_input()
    print "Zauberwort: ",
    wort = raw_input()
    if eingabe, wort == "Skuhl", "Pocus":
       print "Salut Skuhl !"
    else:
       print "weg von meinem Rechner !!"
passwort()

gibt mir in der konsole dann:

smot@linux-sbbm:~/xc> python passwd-test.py
File "passwd-test.py", line 6
if eingabe, wort == "Skuhl", "Pocus":
^
SyntaxError: invalid syntax
smot@linux-sbbm:~/xc>

aus, auch ohne komma gibt es die gleiche fehlermeldung nur ist es dann das e von eingabe das falsch sein sollte :)

Verfasst: Sonntag 30. März 2008, 14:06
von CM
Kann es sein, daß Du

Code: Alles auswählen

def passwort():
    login = raw_input("Dein name?: ")
    passwd = raw_input("Zauberwort: ")
    if login == "Skuhl" and passwd == "Pocus":
       print "Salut Skuhl !"
    else:
       print "weg von meinem Rechner !!"
passwort() 
möchtest?

Wie die anderen beiden auf ihre Vorschläge kommen, weiß ich nicht, aber das ist ohnehin ein Syntaxfehler. Hier beißt sich meine persönliche Logik und die Syntax. Was bedeutet denn 'if eingabe, ...' ? Der Interpreter, weiß es offenbar auch nicht ;-).

Gruß,
Christian

Verfasst: Sonntag 30. März 2008, 14:13
von Trundle
CM hat geschrieben:Wie die anderen beiden auf ihre Vorschläge kommen, weiß ich nicht, aber das ist ohnehin ein Syntaxfehler.
Weil man dann zwei Tupel vergleichen würde. Das funktioniert sogar, wenn man Klammern darum macht (wie eben in LCs, lambdas etc. auch).

Code: Alles auswählen

if (eingabe, wort) == ("Skuhl", "Pocus"):
    pass
Edit: Typos..

Verfasst: Sonntag 30. März 2008, 14:14
von Rebecca
Das Komma erzeugt normalerweise ein Tupel, in diesem Fall scheint das so nicht zu funktionieren, da muesste man Klammern:

Code: Alles auswählen

if (eingabe, wort) == ("Skuhl", "Pocus"):
Aber die Variante mit dem and finde ich da schon schoener.

Hier geht's ohne Klammern:

Code: Alles auswählen

>>> a = 1, 2, 3
>>> print a
(1, 2, 3)

Verfasst: Sonntag 30. März 2008, 14:48
von Skuhl
boeh echt geil leute, fühle mich hier ja schon echt wohl, obwohl ich das gefühl habe euch bald auf die nerven zu gehen mit meiner fragerei :) aber eben bin ein blutiger anfänger :) werde mir jetzt gleich auch noch n buch bestellen über Python.

Verfasst: Sonntag 30. März 2008, 14:53
von CM
Mal zur Klarstellung:

Code: Alles auswählen

>>> a, b = 1, 1
>>> a, b == 1, 1
(1, True, 1)
>>> (a, b) == (1, 1)
True
Wenn der Ausdruck nicht zu lang wird, nutze ich meist "and". Aber das ist natürlich Geschmackssache. Aber die Variante ohne Klammer würde ich nicht nutzen wollen. Kann gut gehen, muß aber nicht.

Verfasst: Sonntag 30. März 2008, 14:57
von Leonidas
Hmm, wundert mich ein wenig, warum es da nur mit Klammern funktioniert. Da müssteman in der Grammatik nachschlagen, warum es das nicht tut.

Ansonsten finde ich die Tupel-Methode gar nicht mal schlecht, da man damit hässliche ``and``-Kaskaden vermeidet. Vielleicht mag ich auch einfach keine Schlüsselwörter.

Verfasst: Sonntag 30. März 2008, 19:52
von birkenfeld
Leonidas hat geschrieben:Hmm, wundert mich ein wenig, warum es da nur mit Klammern funktioniert. Da müssteman in der Grammatik nachschlagen, warum es das nicht tut.
Das Komma hat einfach eine ziemlich niedrige Priorität, u.a. auch niedriger als ==.
Ansonsten finde ich die Tupel-Methode gar nicht mal schlecht, da man damit hässliche ``and``-Kaskaden vermeidet. Vielleicht mag ich auch einfach keine Schlüsselwörter.
Nur leider ist die Methode langsamer, weil erst sinnlose Tupel gebaut werden müssen. Außerdem shortcuttet (:)) "and".

Verfasst: Sonntag 30. März 2008, 21:55
von Leonidas
birkenfeld hat geschrieben:Ansonsten finde ich die Tupel-Methode gar nicht mal schlecht, da man damit hässliche ``and``-Kaskaden vermeidet. Vielleicht mag ich auch einfach keine Schlüsselwörter.
Nur leider ist die Methode langsamer, weil erst sinnlose Tupel gebaut werden müssen. Außerdem shortcuttet (:)) "and".[/quote]
Das Tupel gebaut werden ist mir klar, aber zumindest im Fall von zweielementigen Tupel sollte das kein großes Problem sein, da die gecached sind. Das Kurzschließen von "and"... ja, stimmt - nur im vorliegenden Fall macht es für die Programmausführung keinen Unterschied.