Hilfe meine if statements funktionieren nicht

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.
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Freitag 25. April 2014, 17:39

Schau doch mal in deine Zeile 5 und in meine Zeile 1 und schau ob du da einen Unterschied erkennst. Kleiner Tipp: Ersetze meine Zeile mit deiner Zeile.

EDIT: Okay, da stand definitiv was Anderes als ich gepostet habe. Finde ich schon ein wenig dreist.
Littlejofel
User
Beiträge: 17
Registriert: Mittwoch 23. April 2014, 16:39

Freitag 25. April 2014, 17:46

EDIT: Anmerkung: In deinem Code stand

Code: Alles auswählen

Eingabe = '3'
Grüße,
anogayales[/quote]

ja für die Variable
Littlejofel
User
Beiträge: 17
Registriert: Mittwoch 23. April 2014, 16:39

Freitag 25. April 2014, 17:50

meinst du das so?

Code: Alles auswählen

print '1: Tastatur und Maus'
print '2: USB Stick'
print '3: Drucker'
Eingabe == '3'
f1 = raw_input('Welche der unten aufgelistteten Dinge sind Ausgabegeräte?')
if f1 == "3":
    print 'Genau'
else:
    print 'Leider Falsch'
wenn ich Eingabe == zum code hinzufüge steht in der shell ich soll Eingabe definieren. Was meinst du? :| was soll wo hin? :(

Edit:Hab den anderen code von der Seite hiervor angeguckt in deiner zeile: == in meiner: = aber was ändert das?
Littlejofel
User
Beiträge: 17
Registriert: Mittwoch 23. April 2014, 16:39

Freitag 25. April 2014, 18:13

Das hier geht (Aber nur mit Zahlen)

Code: Alles auswählen

print 'Schreibe 1  2  oder  3'
print 'Was ist ne Software?'
print '1  ein Programm'
print '2  Nutella auf tost'
print '3  Tastatur Maus ...'

a = int(input())

if a == 1:
    print 'Du hast recht'
else:
    print 'Falsch'
wie kann ich denn 1 2 und 3 durch A) B) oder C) auswechseln.Dann bräuchte ich ja einen anderen input befehl z.B raw_input aber damit hat es ja noch nicht funktioniert...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Freitag 25. April 2014, 18:15

Littlejofel hat geschrieben: Edit:Hab den anderen code von der Seite hiervor angeguckt in deiner zeile: == in meiner: = aber was ändert das?
Ersters ist ein Vergleich, zweiteres eine Zuweisung! Das ist ein erheblicher Unterschied.

Wieso trennst Du nicht einfach mal von dem Programm und gibst in einer Shell einfach einzelne Anweisungen Schritt für Schritt an?

Gib doch einfach mal in einer Python-Shell (nimm am besten *nicht* Idle, sondern starte einfach nur die ganz normale Standard-Python-Shell!) folgendes ein:

Code: Alles auswählen

gesucht = "Ja"
eingegeben = "Ja"
gesucht == eingegeben
Und dann sag uns, was die Shell als Antwort hinschreibt!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3))
assert encoding_kapiert
Littlejofel
User
Beiträge: 17
Registriert: Mittwoch 23. April 2014, 16:39

Samstag 26. April 2014, 09:00

@Hyperion

Die Shell schreibt True nachdem ich alles eingegeben habe

und wenn ich z.B statt

Code: Alles auswählen

eingeben = '9'

Code: Alles auswählen

eingeben == '9'
mache

steht in der shell ich soll 'eingeben' definieren.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Samstag 26. April 2014, 12:30

Also arbeitet Dein Python-Shell wie erwartet richtg ;-)

Nun probiere doch mal, was passiert, wenn Du für ``eingeben`` das "Ja" in Hockommata setzt, also so:

Code: Alles auswählen

eingeben = "'ja'"
(Beachte die kleinen ' um das "Ja"!)

Was denkst Du, sollte dabei rauskommen?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3))
assert encoding_kapiert
Littlejofel
User
Beiträge: 17
Registriert: Mittwoch 23. April 2014, 16:39

Sonntag 27. April 2014, 09:41

Hyperion hat geschrieben:Was denkst Du, sollte dabei rauskommen?
nun ich würde mal sagen ich muss 'ja' eingeben , doch das klappt nicht. Hier ist der Code nur etwas abgespeckt:

Code: Alles auswählen

beginn = raw_input('willst du anfangen?')
eingeben = "'ja'"

if beginn == eingeben:
    print 'Funktioniert'
else:
    print 'Funktioniert nicht'
so sah das dann in der shell aus : willst du anfangen? 'ja'
Funktioniert nicht
Benutzeravatar
pillmuncher
User
Beiträge: 1110
Registriert: Samstag 21. März 2009, 22:59
Wohnort: München

Sonntag 27. April 2014, 10:15

Bei mir funktioniert dein Code:

Code: Alles auswählen

>>> beginn = raw_input('willst du anfangen?')
willst du anfangen?'ja'
>>> eingeben = "'ja'"
>>> if beginn == eingeben:
...     print 'Funktioniert'
... else:
...     print 'Funktioniert nicht'
...
Funktioniert
Aber vergleich mal:

Code: Alles auswählen

willst du anfangen? 'ja'  # <-- deins
willst du anfangen?'ja'  # <-- meins
" 'ja'" ist offensichtlich nicht das gleiche wie "'ja'".
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Sonntag 27. April 2014, 10:16

Die simple Anwtort wäre ``False`` gewesen! ;-)

Code: Alles auswählen

gesucht == eingegeben
Dies *vergleicht* ja eben den von den beiden Objekten die den Operator (``==``) umschließen. Zwei Strings sind eben nur gleich, wenn jeder einzelne Buchstabe an jeder einzelnen Stelle exakt dem an der selben Stelle im anderen String entspricht!

Ja ist also ungleich 'Ja'!

Und genau das solltest Du lernen, denn das ist Dir bei Deinem Ursprungsproblem auf die Füße gefallen! :mrgreen:

Irgend wie habe ich allerdings das Gefühl, dass Du das immer noch nicht wirklich verstanden hast :(
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3))
assert encoding_kapiert
Littlejofel
User
Beiträge: 17
Registriert: Mittwoch 23. April 2014, 16:39

Sonntag 27. April 2014, 15:50

Hyperion hat geschrieben:Irgend wie habe ich allerdings das Gefühl, dass Du das immer noch nicht wirklich verstanden hast :(
Du hast recht xD damit kann ich nicht viel anfangen...

sagen wir einfach ich muss statt :willst du anfangen? 'ja'
willst du anfangen?'ja' schreiben :D

trotzdem vielen dank für die hilfe ^^
Sirius3
User
Beiträge: 8424
Registriert: Sonntag 21. Oktober 2012, 17:20

Sonntag 27. April 2014, 16:49

@Littlejofel: Dein Problem zeigt aber auf schöne Weise, in welche Probleme man kommt, wenn man vom Benutzer Eingaben in natürlicher Sprache verlangt, auch wenn es sich nur um ein »ja« handelt: Groß/Kleinschreibung, Leerzeichen, Satzzeichen, usw.

Das Beispiel mit den Anführungszeichen sollte Dir nur nochmal verdeutlichen, dass man Anführungszeichen im Programmcode braucht, um Strings zu kennzeichnen (denn die können ja Zeichen enthalten, die eine besondere Bedeutung für die Programmiersprache haben). Der Inhalt des Strings, der mit der Eingabe dann verglichen wird, enthält aber nicht die Anführungszeichen.
Antworten