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.
Littlejofel
User
Beiträge: 17
Registriert: Mittwoch 23. April 2014, 16:39

mutetella hat geschrieben:
Littlejofel hat geschrieben:... aber ich bin ein Anfänger und mehr als die hälfte deines Codes verstehe ich nicht , ...
Vieles lernt man gerade dadurch, dass man versucht, fremden Code zu verstehen. Nicht umsonst findet man in Dokumentationen neben der eigentlichen Erläuterung meistens auch ein/zwei Beispiele. Und für die dann noch bestehenden Unklarheiten gibt es Foren wie dieses... :wink:
Littlejofel hat geschrieben:... oft ist es so das bei meinen if statements ...
... Wie sollte so ein if statement denn eigentlich richtig sein ...
... irgendwie funktionieren meine if statements nie ...
So geht es mir zum Beispiel mir regulären Ausdrücken... :wink: Die liefern oft nicht das, was ich mir vorstelle. Aber die Lösung auf meine grundsätzlichen Probleme mit regulären Ausdrücken gibt es halt nicht. Wenn ich ein konkretes Problem nicht hinbekomme, dann muss ich konkret fragen. [wunschdenken]Und irgendwann habe ich genügend konkrete Antworten bekommen, um keine Probleme mehr mit regulären Ausdrücken zu haben![/wunschdenken]

mutetella
aber höhr doch mal , dein Script ist so kompliziert und ich kann nichts daraus lesen :| Alles was ich mit if mache funktioniert Nicht!!!
z.B der Code hier der kommt noch nichtmal dazu das eigentliche Quiz zu starten:

Code: Alles auswählen

#Das ist jetzt noch ein Beispiel das fast ganz genau wie aus einem Video übernommen wurde nur mit anderen Fragen und Variablen!
print 'Willkommen zu meinem Quiz'
beginn = raw_input('Bist du bereit? Schreibe Ja oder nein')
if beginn == 'Ja':
    print 'A: Nutelle auf nem Tost'
    print 'B: Programme'
    print 'C: Monitor tastatur etc.'
    q1 = raw_input('Was versteht man unter Software?')
    if q1 == 'B' or q1 == 'b':
        print 'Ganz genau'
else:
    print 'Leider nicht'
if beginn == 'Nein':
    quit()

das ist echt frustrierend und keine der sachen die geschrieben wurden haben geholfen und ich hab echt keinen Plan wie das Script seien muss damit es richtig läuft und die Antworten die richtig seien sollen auch als richtig erkannt werden. Bei dem test in der Shell kommt auf die richtige antwort immer der Satz der für die Falsche Antwort gedacht ist aber wenn ich das if und else umschreibe kommt er nur dazu Richtig zu schreiben , ist ja klar. :(
mcdwerner
User
Beiträge: 113
Registriert: Donnerstag 7. Juli 2011, 14:27

@Littlejofel:
ich würde gern nochmal meinen Tipp von oben wiederholen. Um zu verstehen was da im Moment gerade passiert hilft es sehr, sich genau das (was gerade passiert) anzeigen zu lassen. u.a. dafür gibt es das print Statement.
Nochmal ausführlich:

Code: Alles auswählen

#Das ist jetzt noch ein Beispiel das fast ganz genau wie aus einem Video übernommen wurde nur mit anderen Fragen und Variablen!
print 'Willkommen zu meinem Quiz'
beginn = raw_input('Bist du bereit? Schreibe Ja oder nein')
print "Diesen Wert hat die Variable 'beginn' gerade:", beginn
print "So wird das if Statement ausgewertet:", beginn == 'Ja'
if beginn == 'Ja':
    print 'A: Nutelle auf nem Tost'
    print 'B: Programme'
    print 'C: Monitor tastatur etc.'
    q1 = raw_input('Was versteht man unter Software?')
    print "Diesen Wert hat die Variable 'q1' gerade:", q1
    print "So wird das if Statement ausgewertet:", q1 == 'B' or q1 == 'b'
    if q1 == 'B' or q1 == 'b':
        print 'Ganz genau'
else:
    print 'Leider nicht'
if beginn == 'Nein':
    quit()
 
 
Littlejofel
User
Beiträge: 17
Registriert: Mittwoch 23. April 2014, 16:39

mcdwerner hat geschrieben:@Littlejofel:
ich würde gern nochmal meinen Tipp von oben wiederholen. Um zu verstehen was da im Moment gerade passiert hilft es sehr, sich genau das (was gerade passiert) anzeigen zu lassen. u.a. dafür gibt es das print Statement.
Nochmal ausführlich:

Code: Alles auswählen

#Das ist jetzt noch ein Beispiel das fast ganz genau wie aus einem Video übernommen wurde nur mit anderen Fragen und Variablen!
print 'Willkommen zu meinem Quiz'
beginn = raw_input('Bist du bereit? Schreibe Ja oder nein')
print "Diesen Wert hat die Variable 'beginn' gerade:", beginn
print "So wird das if Statement ausgewertet:", beginn == 'Ja'
if beginn == 'Ja':
    print 'A: Nutelle auf nem Tost'
    print 'B: Programme'
    print 'C: Monitor tastatur etc.'
    q1 = raw_input('Was versteht man unter Software?')
    print "Diesen Wert hat die Variable 'q1' gerade:", q1
    print "So wird das if Statement ausgewertet:", q1 == 'B' or q1 == 'b'
    if q1 == 'B' or q1 == 'b':
        print 'Ganz genau'
else:
    print 'Leider nicht'
if beginn == 'Nein':
    quit()
 
 
Das kommt dann bei der shell heraus(Habe Ja und 'Ja' ausprobiert nachdem ich enter drücke kommt das mit False und danach kann ich nichts mehr eingeben :( )
Bild
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Bitte unterlasse die Full-Quotes doch - zietiere nur das, was Du auch wirklich kommnetierst; das macht den Thread leserlicher :-)

Schau Dir doch mal *genau* an, was Du eingibst und *was* Du erwartest! ;-)

Du brauchst im übrigen keine Screenshots posten - poste einfach die Shell-Ausgabe. Das kannst Du einfach mit den Python-Code-Tags machen!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Littlejofel
User
Beiträge: 17
Registriert: Mittwoch 23. April 2014, 16:39

Hyperion hat geschrieben:Bitte unterlasse die Full-Quotes doch - zietiere nur das, was Du auch wirklich kommnetierst; das macht den Thread leserlicher :-)

Schau Dir doch mal *genau* an, was Du eingibst und *was* Du erwartest! ;-)

Du brauchst im übrigen keine Screenshots posten - poste einfach die Shell-Ausgabe. Das kannst Du einfach mit den Python-Code-Tags machen!
ich hab den Code schon gefühlte 10 minuten angeschaut und bin ihn durchgegangen , aber ich finde den fehler nicht :( Kann mir denn keiner den Fehler sagen?
Zuletzt geändert von Littlejofel am Freitag 25. April 2014, 16:45, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dir ist schon klar, dass das wieder ein sinnloser Full-Quote war?
Littlejofel hat geschrieben: ich hab den Code schon gefühlte 10 minuten angeschaut und bin ihn durchgegangen , aber ich finde den fehler nicht :(
Ok, ich geb Dir einen Tipp:

Code: Alles auswählen

antwort = "Ja"
eingabe = "'Ja'"

antwort == eingabe
> False

print(antwort, eingabe)
> Ja 'Ja'
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Littlejofel
User
Beiträge: 17
Registriert: Mittwoch 23. April 2014, 16:39

zu deiner Frage: Das war doch nur ein Quote , du musst doch wissen auf welche frage ich antworte (Ich mach jetzt einfach keine Quotes mehr sondern nur noch @Name...)

und ich weiß was du mit deinem tipp sagen willst aber es hilft mir nicht viel weiter.Ich habe ja geschrieben das ich 'Ja' und Ja probiert habe , ebend auch noch mehr.Aber egal was ich eingebe es kommt immer die Falsche antwort.Ich möchte keine Tipps mehr ich möchte nur wissen wie man ein fernünftiges if statement macht :( langsam kriege ich das gefühl das programmieren nichts für mich ist , aber ich will es unbedingt lernen und es ist echt ein (Das könnt ihr euch denken) gefühl so ein simples if statement nicht hinzubekommen...

ich gucke schon seid 2 Tage nach Videos für mein Problem kann aber nichts finden das mir hilft
BlackJack

@Littlejofel: Du kannst nicht alles probiert haben, denn dann hättest Du die richtige Kombination gefunden. Wobei es davon eigentlich nur vier Stück gibt, also auch nicht wirklich viele. Im Quelltext kannst Du ``Eingabe == 'Ja'`` und ``Eingabe == Ja`` schreiben, und eingeben jeweils Ja und 'Ja'. Das sind vier Kombinationen. Bei zweien gibt es eine Ausnahme weil der Name `Ja` nicht definiert ist, bei einer ”funktioniert es nicht” und eine ist richtig.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Littlejofel hat geschrieben:zu deiner Frage: Das war doch nur ein Quote , du musst doch wissen auf welche frage ich antworte (Ich mach jetzt einfach keine Quotes mehr sondern nur noch @Name...)
Ja nur ein Quote, aber den hättest Du bearbeiten müssen! Du hast Dich in Deiner Antwort lediglich auf den mittleren Absatz bezogen - also reicht es auch aus, nur genau diesen zu zitieren. Und ja, das macht mitunter ein wenig Arbeit ;-)

Wie Du bei mir in diesem Posting sehen kannst, zitiere ich auch nur den für meine Antwort relevanten Teil 8)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Littlejofel
User
Beiträge: 17
Registriert: Mittwoch 23. April 2014, 16:39

@Blackjack

wie meinst du das an welcher stelle soll ich was eingeben? :shock:
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Es ist ein Unterschied ob du Ja oder "Ja" eingibst.
Das Leben ist wie ein Tennisball.
BlackJack

@Littlejofel: Am besten gibst Du sowohl im Editor als auch wenn das Programm nach Eingaben fragt, das richtige ein. ;-)

Ich weiss nicht ob Du so weiterkommst. Du schreibst Du hast alles mögliche ausprobiert, aber wir wissen nicht was das alles ist und vor allem auch nicht was Du Dir dabei gedacht hast. Das wäre aber wichtig um zu verstehen wo Du falsche Annahmen triffst, also wo Deine Probleme konkret liegen.

Beim Programmlauf hast Du 'Ja' eingegeben. Wie viele Zeichen sind das? Und womit vergleichst Du das im Programm? Wie viele Zeichen hat *das*? Beantworte diese beiden Fragen für Dich und überprüfe sie dann mit ``print`` und der `len()`-Funktion. Vielleicht kommst Du dann ja drauf.
Littlejofel
User
Beiträge: 17
Registriert: Mittwoch 23. April 2014, 16:39

@Blackjack

Das ist zum Beispiel mein Code :

Code: Alles auswählen

print '1: Tastatur und Maus'
print '2: USB Stick'
print '3: Drucker'
f1 = raw_input('Welche der oben aufgelistteten Dinge sind Ausgabegeräte?')
Eingabe = '3'
if f1 == Eingabe:
    print 'Genau'
else:
    print 'Leider Falsch'
Wenn ich '3' oder einfach nur 3 eingebe kommt: Leider Falsch , also was muss ich ändern bzw eingeben?
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Verwende dazu am besten den Vergleichsoperator und keine Zuweisung, also

Code: Alles auswählen

Eingabe == '3'
EDIT: Anmerkung: In deinem Code stand

Code: Alles auswählen

Eingabe = '3'
Grüße,
anogayales
Zuletzt geändert von anogayales am Freitag 25. April 2014, 17:44, insgesamt 2-mal geändert.
Littlejofel
User
Beiträge: 17
Registriert: Mittwoch 23. April 2014, 16:39

Ich bin ein Anfänger und kann damit leider nicht viel anfangen , da ich nicht weiß wo ich was hinschreiben soll.
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

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

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

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

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: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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, utf-8 everywhere))
assert encoding_kapiert
Antworten