Seite 1 von 3

Hilfe meine if statements funktionieren nicht

Verfasst: Mittwoch 23. April 2014, 16:44
von Littlejofel
Hallo, ich bin neu beim Programmieren und irgendwie funktionieren meine if statements nie (Ich benutze Python 2.7.6)


'

Code: Alles auswählen

Antwort1 = 'b'
print 'Willkommen zum Quiz'
print '___________________'
print 'Hier die erste frage :'

Frage1 = raw_input('Was ist eine Software?')
print 'a) Dateien'
print 'b) alle formen von Programmen'
print 'c) alles vom Computer das man anfassen kann'

if Antwort1 == Frage1:
   print 'Ja , ganz genau!'
else:
   print 'Leider nicht'
Kann mir das vieleicht irgendjemand erklären oder ein gutes Tutorial hinterlassen?

Danke im vorraus :)

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Mittwoch 23. April 2014, 17:36
von mutetella
@Littlejofel
Was meinst Du mit "funktionieren nie"? Dein Beispiel jedenfalls funktioniert bis auf den Umstand, dass die möglichen Antworten zu spät angezeigt werden... :wink:

mutetella

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Mittwoch 23. April 2014, 18:38
von Littlejofel
mutetella hat geschrieben:@Littlejofel
Was meinst Du mit "funktionieren nie"? Dein Beispiel jedenfalls funktioniert bis auf den Umstand, dass die möglichen Antworten zu spät angezeigt werden... :wink:

mutetella
Erstmal danke für die schnelle antwort,

oft ist es so das bei meinen if statements die Falschen Antworten auf die Fragen als richtig erkannt werden , egal was ich eingebe oder es ist genau anders herum.

Wie sollte so ein if statement denn eigentlich richtig sein , in allen videos von anderen programmierern funktioniert alles einband frei , doch sobald ich es nachmache klappt irgendwie nix :(

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Mittwoch 23. April 2014, 19:26
von BlackJack
@Littlejofel: Es gibt kein allgemeines „richtig”, was genau als Bedingung da hingeschrieben werden muss, hängt davon ab was man damit überprüfen möchte. Wie mutetella schon schrieb ist das Beispiel bis auf die Reihenfolge der Ausgabe der Frage und des Tests korrekt. Wenn Du uns korrekten Quelltext zeigst, können wir Dir auch nicht sagen wo der Fehler ist, weil da eben keiner ist. Und was Du sonst so schreibst — die Glaskugel ist gerade in der Reinigung. ;-)

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Donnerstag 24. April 2014, 15:59
von Littlejofel
BlackJack hat geschrieben:@Littlejofel: Es gibt kein allgemeines „richtig”, was genau als Bedingung da hingeschrieben werden muss, hängt davon ab was man damit überprüfen möchte. Wie mutetella schon schrieb ist das Beispiel bis auf die Reihenfolge der Ausgabe der Frage und des Tests korrekt. Wenn Du uns korrekten Quelltext zeigst, können wir Dir auch nicht sagen wo der Fehler ist, weil da eben keiner ist. Und was Du sonst so schreibst — die Glaskugel ist gerade in der Reinigung. ;-)
Ja aber wie kriege ich denn alles in die richtige reihenfolge xD Wenn etwas richtig ist kommt ja immer der Text für etwas falsches. Das ist doch das Thema um das es hier geht :(

Bild

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Donnerstag 24. April 2014, 16:10
von mcdwerner
@Littlejofel:
um zu wissen was da tatsächlich passiert, könntest Du Dir die interessanten Werte doch mal genauer ansehen, z.B. mit einem

Code: Alles auswählen

print f1
nach dem raw_input

Code: Alles auswählen

print f1 == "1 2"
#bzw
print f1 == "1"
funktioniert übrigens auch ;-)

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Donnerstag 24. April 2014, 16:16
von BlackJack
@Littlejofel: Hast Du die Quelltextdatei vor dem Ausführen auch gespeichert? Im Bildschirmfoto ist das zum Beispiel nicht der Fall.

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Donnerstag 24. April 2014, 19:16
von mutetella
@Littlejofel
Du beginnst, Variablen zu nummerien (`frage1` ...). Stell' Dir einmal vor, Dein Quiz nimmt 'Trivial Pursuit' Dimensionen an... :wink: . Zudem ist das Feature, mehrere Antworten zu geben, sehr fehlerbehaftet, was ist z. B., wenn der Spieler '1, 2' oder '12' eingibt?
Ich habe Dir mal ein kleines Beispiel notiert, das zumindest diese Dinge umschifft:

Code: Alles auswählen

import re

tasks = (
    {'question': 'Was versteht man unter Software?',
     'choices': ('1) Dateien',
                 '2) Ausfuehrbare Programme',
                 '3) Computerbauteile'),
     'solutions': ('2',)},
    {'question': 'Welches gehoert zu meinen Leibgerichten?',
     'choices': ('1) Zwiebelrostbraten mit Kaesspatzn',
                 '2) Pizza Classico mit Kaese im Rand',
                 '3) McRib mit extra Westernsauce'),
     'solutions': ('1', '2', '3')}
)

def get_answers():
    return re.findall(r'(\d)', raw_input())

def validate_answers(answers, solutions, fully):
    '''`fully` = True: All answers must be correct
    `fully` = False: At least one answer must be correct '''
    results = [answer in solutions for answer in answers]
    if fully:
        return all(results) and sum(results) == len(solutions)
    return any(results)

def run():
    print 'Willkommen zum Quiz'
    print '___________________'
    for number, task in enumerate(tasks):
        print '\nHier die {}. Frage:'.format(number+1)
        print task['question']
        print '\n'.join(task['choices'])
        answers = get_answers()
        if validate_answers(answers, task['solutions'], fully=True):
            print 'Ja, ganz genau!'
        else:
            print 'Leider nicht'

if __name__ == '__main__':
    run()
mutetella

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Donnerstag 24. April 2014, 21:35
von Hyperion
@mutetella: Eigentlich hat es sich hier im Board die Meinung etabliert, dass man die Lösung per Konvention an die erste Stelle der Antworten setzt und letztere vor dem Quzi mischt. Zudem ist das statische Durchnummerieren der Antworten auch unnötig :-)

Hier mein Beispiel dazu: Link

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Donnerstag 24. April 2014, 21:54
von BlackJack
Da gibt's hier das Problem das es mehr als eine richtige Antwort geben kann.

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Donnerstag 24. April 2014, 22:20
von Hyperion
BlackJack hat geschrieben:Da gibt's hier das Problem das es mehr als eine richtige Antwort geben kann.
Oopsi... stimmt. Hatte ich übersehen!

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Freitag 25. April 2014, 08:53
von mutetella
Hyperion hat geschrieben:Eigentlich hat es sich hier im Board die Meinung etabliert, dass man die Lösung per Konvention an die erste Stelle der Antworten setzt und letztere vor dem Quzi mischt.
Eine "so gestalten wir ein Quiz"-Konvention hier im Board? Hä? Bin ich jetzt eine Spaßbremse oder verstehe ich das nicht?
Hyperion hat geschrieben:Zudem ist das statische Durchnummerieren der Antworten auch unnötig
Ja klar, aber ich wollte mein Beispiel nicht zu sehr verkomplizieren. Erstmal ging es mir nur darum, Littlejofel eine Möglichkeit zu zeigen, auf nummerierte Namen zu verzichten und mehrere mögliche Eingaben des Nutzers zu validieren.

mutetella

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Freitag 25. April 2014, 10:13
von Littlejofel
mutetella hat geschrieben:
Hyperion hat geschrieben:Eigentlich hat es sich hier im Board die Meinung etabliert, dass man die Lösung per Konvention an die erste Stelle der Antworten setzt und letztere vor dem Quzi mischt.
Eine "so gestalten wir ein Quiz"-Konvention hier im Board? Hä? Bin ich jetzt eine Spaßbremse oder verstehe ich das nicht?
Hyperion hat geschrieben:Zudem ist das statische Durchnummerieren der Antworten auch unnötig
Ja klar, aber ich wollte mein Beispiel nicht zu sehr verkomplizieren. Erstmal ging es mir nur darum, Littlejofel eine Möglichkeit zu zeigen, auf nummerierte Namen zu verzichten und mehrere mögliche Eingaben des Nutzers zu validieren.

mutetella
Es ist ja schön und gut das du mir ein beispiel gibst , aber ich bin ein Anfänger und mehr als die hälfte deines Codes verstehe ich nicht , ich möchte einfach nur die if funktion mit einem Satz , einer zahl oder einen Buchstaben lernen den man dann z.B für kleine Fragen benutzen kann ^^

in vielen Videos sehe ich dann etwa so einen code :

Code: Alles auswählen

Frage1 = raw_input('Die Frage')
print 'A: Antwort 1'
print 'B: Antwort 2'
print 'C: Antwort 3'

if Frage 1 ==  A:
   print 'Genau'
else:
           print 'Falsch'
Aber warum sind die eigentlich richtigen Antworten denn immer Falsch?
Bzw was schreibe ich daran falsch?

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Freitag 25. April 2014, 11:20
von BlackJack
@Littlejofel: Da ist ein Syntaxfehler drin, weil da ein Leerzeichen zwischen ``Frage`` und ``1`` steht.

Die Unterschiedliche Einrückung bei den beiden Zweigen ist zwar nicht syntaktisch falsch, aber so etwas sollte man nicht machen. Konvention bei Python ist vier Leerzeichen pro Ebene einzurücken.

Ansonsten hast Du immer noch keinen Quelltext gezeigt bei dem ein Problem mit dem ``if`` besteht. Das Bildschirmfoto zählt nicht, weil der dort gezeigte Quelltext laut Foto nicht gespeichert wurde, man also nicht sicher sein kann welcher Code *tatsächlich* ausgeführt wurde.

Solange wir Deine Probleme nicht nachvollziehen können, ist es schwer bis unmöglich Dir zu sagen was Du falsch machst und wie man es richtig machen würde.

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Freitag 25. April 2014, 15:22
von mutetella
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

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Freitag 25. April 2014, 15:53
von Littlejofel
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. :(

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Freitag 25. April 2014, 16:07
von mcdwerner
@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()
 
 

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Freitag 25. April 2014, 16:29
von Littlejofel
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

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Freitag 25. April 2014, 16:33
von Hyperion
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!

Re: Hilfe meine if statements funktionieren nicht

Verfasst: Freitag 25. April 2014, 16:36
von Littlejofel
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?