English Zeitformen Rausfinden

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.
Antworten

Wie gut ist dieser Code geschrieben

Sehr gut und sehr übersichtlich
0
Keine Stimmen
Gut und Gut übersichtlich
0
Keine Stimmen
Mittel beides
0
Keine Stimmen
Schlecht und schlecht übersichtlich
2
40%
Sehr schlecht und sehr schlecht übersichtlich
3
60%
 
Insgesamt abgegebene Stimmen: 5
LeandergamesYT
User
Beiträge: 7
Registriert: Montag 13. Januar 2020, 16:09

Code: Alles auswählen

######################################################
# Name des Programmes: Zeitform- Lernprogramm.py     #
# Autor des Programmes: Yekta Senay                  #
# Erstellungsdatum: 13.01.2020 ; Von 14:21 Bis       #
######################################################
print("Dieses Programm ist noch in der Alpha version.")
print("Willst du dieses Programm trotzdem Verwenden?")
print()
print()
#Variablen und Listen:


b = 1
a = 1
x = 1
Ja = 1
Yes = 1
ja = 1
yes = 1
jA = 1
yEs = 1
yeS = 1
YeS = 1
YEs = 1
yES = 1


keineEindeutigenSignalWörter = ['Keine Eindeutigen Signalwörter | No clearly Signal Words']
pastPerfectSignal = keineEindeutigenSignalWörter
pastProgressiveSignal = ['while','when']
presentPefektSignal = ['just','yet','never','already','ever','so far','up to now','recently','since','for']
presentPerfectProgrssive = ['all day','the whole das','since','for','Fragen mit \"How Long\" | Questions with \"How Long']
presentProgressiveSignal = ['now','at the moment','Look!','Listen']
simplePastSignal = ['yesterday','last week','ago','in YEAR','this morning,evening...','Die Wörter week/month/2010 können mit anderen Zeitangaben ersetzt werden | The Words week/month/2010 can change to other Timeforms']
implePresentSignal = ['always','often','usually','sometimes','seldom','never','every day','every week','every year','on Mondays (oder andere Tage | or different days)','after school']
goingToFutureSignal = keineEindeutigenSignalWörter
willFurure = keineEindeutigenSignalWörter


#Haputcode:

print("Bitte gib das Wort ein, von dem du die Zeitform haben willst.")
print("Please enter the Word, from them you would to know the Timeform.")

aktuellerSatz = input()


if 'while' or 'when' in aktuellerSatz:
        print("Der Satz ", aktuellerSatz, "enthät eines dieser Signalwörterund befindet sich in der Zeitform \"Past Progressive\"")
        print("Signalwörter anzeigen Lassen?")
        print("Bitte gib Ja oder Yes ein.")
        signalWörterAnzeigen = input()
        if signalWörterAnzeigen == Ja or Yes or ja or yes or jA or yEs or yeS or YeS or YEs or yES:
            print("Das sind die Signalwörter der Zeitform Past Progressive:")
            print("while, when")

elif 'just' or 'yet' or 'never' or 'already' or 'ever' or 'so far' or 'up to now' or 'recently' or 'since' or 'for' in aktuellerSatz:
        print("Der Satz ", aktuellerSatz, "enthät eines dieser Signalwörterund befindet sich in der Zeitform \"Present Perfekt\"")
        print("Signalwörter anzeigen Lassen?")
        print("Bitte gib Ja oder Yes ein.")
        signalWörterAnzeigen = input()
        if signalWörterAnzeigen == Ja or Yes or ja or yes or jA or yEs or yeS or YeS or YEs or yES:
            print("Das sind die Signalwörter der Zeitform Present Perfekt:")
            print("just, yet, never, already, ever, so far, up to now, recently, since, for")
elif 'all day' or 'the whole das' or 'since' or 'for' or 'Fragen mit \"How Long\" | Questions with \"How Long' in aktuellerSatz:
            print("Der Satz ", aktuellerSatz, "enthät eines dieser Signalwörterund befindet sich in der Zeitform \"Perfect Progressive\"")
            print("Signalwörter anzeigen Lassen?")
            print("Bitte gib Ja oder Yes ein.")
            signalWörterAnzeigen = input()
            if signalWörterAnzeigen == Ja or Yes or ja or yes or jA or yEs or yeS or YeS or YEs or yES:
                print("Das sind die Signalwörter der Zeitform Perfect Progressive:")
                print("while, when")

elif if 'now' or 'at the moment' or 'Look!' or 'Listen' in aktuellerSatz:
                print("Der Satz ", aktuellerSatz, "enthät eines dieser Signalwörterund befindet sich in der Zeitform \"Present Progressive\"")
                print("Signalwörter anzeigen Lassen?")
                print("Bitte gib Ja oder Yes ein.")
                signalWörterAnzeigen = input()
                if signalWörterAnzeigen == Ja or Yes or ja or yes or jA or yEs or yeS or YeS or YEs or yES:
                    print("Das sind die Signalwörter der Zeitform Present Progressive:")
                    print("while, when")

elif if 'yesterday' or 'last week' or 'ago' or 'in YEAR' or 'this morning or evening...' or 'Die Wörter week/month/2010 können mit anderen Zeitangaben ersetzt werden | The Words week/month/2010 can change to other Timeforms' in aktuellerSatz:
                    print("Der Satz ", aktuellerSatz, "enthät eines dieser Signalwörterund befindet sich in der Zeitform \"Simple Past\"")
                    print("Signalwörter anzeigen Lassen?")
                    print("Bitte gib Ja oder Yes ein.")
                    signalWörterAnzeigen = input()
                    if signalWörterAnzeigen == Ja or Yes or ja or yes or jA or yEs or yeS or YeS or YEs or yES:
                        print("Das sind die Signalwörter der Zeitform Simple Past:")
                        print("while, when")

elif if 'always' or 'often' or 'usually' or 'sometimes' or 'seldom' or 'never' or 'every day' or 'every week' or 'every year' or 'on Mondays (oder andere Tage | or different days)' or 'after school' in aktuellerSatz:
                        print("Der Satz ", aktuellerSatz, "enthät eines dieser Signalwörterund befindet sich in der Zeitform \"Simple Present")
                        print("Signalwörter anzeigen Lassen?")
                        print("Bitte gib Ja oder Yes ein.")
                        signalWörterAnzeigen = input()
                        if signalWörterAnzeigen == Ja or Yes or ja or yes or jA or yEs or yeS or YeS or YEs or yES:
                            print("Das sind die Signalwörter der Zeitform Simple Present:")
                            print("while, when")

                    elif 
                        print("Das tut mir Leid, dein Signalwort konnte nicht gefunden werden. Bitte überprüfe nochmal deinen Satz und die schreibweise des Wortes.")
^^ Das ist mein Code
Ich weis nicht, warum er auf Past Progresive zu greift, wenn ich often, also Simple Present eingebe.
Kann mir hemand helfen?
Benutzeravatar
ThomasL
User
Beiträge: 1379
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

if 'while' or 'when' in aktuellerSatz: ist immer True auch wenn weder while noch when im Satz vorkommen, da if 'while' immer True ergibt.
Du müsstest das konkretisieren in if 'while' in aktuellerSatz or 'when' in aktuellerSatz:
Das gilt natürlich für alle anderen Konditionen auch.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Es heißt `elif` und nicht `elif if`, so dass der Code nichtmal fehlerfrei am Compiler vorbei kommt. Beim einsamen `elif` am Ende fehlt eine Bedingung.

Konstanten schreibt man nach Konvention KOMPLETT_GROSS. Was sollen eigentlich die 6 unterschiedlichen Variablen mit unterschiedlier Schreibweise von yes, die alle den Wert 1 haben, und sich nie ändern?
b, a und x sind schlechte Variablennamen, werden aber auch gar nicht benutzt.
Variablennamen schreibt man klein_mit_unterstrich: signalwörter_anzeigen

`or` ist kein umgangssprachliches Oder, sondern ein logisches. Das heißt, ist der Linke Wert (ein nicht leerer String) wahr, dann wird die rechte Seite nicht mehr ausgewertet, weil das Gesamtergebnis klar ist.
Was Du suchst ist der Vergleich mit dem "in"-Operator.

Die Einrückungen sind falsch. Eingerückt wird immer mit 4 Leerzeichen pro Ebene.
`signalWörterAnzeigen` ist niemals eine Zahl, da Ja aber den Wert 1 hat, kann das nie True werden.

Statt der Langen elif-Kette und den vielen Code-Duplizierungen in den Blöcken, würde man eine passende Datenstruktur wählen, was z.B. Signalwortgruppen auf Zeitformen abbildet.
LeandergamesYT
User
Beiträge: 7
Registriert: Montag 13. Januar 2020, 16:09

Hi @Sirius3
Kannst du mir mal das so umschreiben, dass es passt?
LeandergamesYT
User
Beiträge: 7
Registriert: Montag 13. Januar 2020, 16:09

Kannst auch nur einen breich ändern damit ich das andere selber lerne
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Was soll das denn?

Code: Alles auswählen

Ja = 1
Yes = 1
ja = 1
yes = 1
jA = 1
yEs = 1
yeS = 1
YeS = 1
YEs = 1
yES = 1
Hier hast du die Signalwörter bereits in Listen:

Code: Alles auswählen

pastProgressiveSignal = ['while','when']
presentPefektSignal = ['just','yet','never','already','ever','so far','up to now','recently','since','for']
presentPerfectProgrssive = ['all day','the whole das','since','for','Fragen mit \"How Long\" | Questions with \"How Long']
presentProgressiveSignal = ['now','at the moment','Look!','Listen']
simplePastSignal = ['yesterday','last week','ago','in YEAR','this morning,evening...','Die Wörter week/month/2010 können mit anderen Zeitangaben ersetzt werden | The Words week/month/2010 can change to other Timeforms']
implePresentSignal = ['always','often','usually','sometimes','seldom','never','every day','every week','every year','on Mondays (oder andere Tage | or different days)','after school']
Warum benutzt du die Listen hinterher nicht, um damit zu prüfen?
Du solltest dir die anderen Datenstrukturen anschauen. Zum Beispiel "dictionaries" (dict). Damit kannst du einem Schlüssel einen Wert zuweisen. Der Wert kann ein beliebiges Objekt sein - also auch eine Liste. Wenn du den eine Schleife baust, die die Listen durchsucht und bei einem Treffer den Schlüssel ausgibt (und der Schlüssel die Zeitform ist) brauchst du das nur 1x schreiben und nicht für jede Zeitform wieder.
LeandergamesYT
User
Beiträge: 7
Registriert: Montag 13. Januar 2020, 16:09

Das hat der Liste hat net so geklappt habe die ganze zeit fahler bekommen
Kann mir jemand einen abteil bearbeiten?
Also von einer zeitform?
LeandergamesYT
User
Beiträge: 7
Registriert: Montag 13. Januar 2020, 16:09

Das hat der Liste hat net so geklappt habe die ganze zeit fahler bekommen
Kann mir jemand einen abteil bearbeiten?
Also von einer zeitform?
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Was hat genau nicht geklappt?

So könnte das aussehen:

Code: Alles auswählen

SIGNAL_WORDS = {
    "Past Progressive": ['while', 'when'],
    "Present Perfekt": ['just', 'yet', 'never', 'already', 'ever', 'so far', 'up to now', 'recently', 'since', 'for'],
    "Perfect Progressive": ['all day', 'the whole das', 'since', 'for'],
    "Present Progressive": ['now', 'at the moment', 'Look!', 'Listen'],
    "Simple Past": ['yesterday', 'last week', 'ago', 'in YEAR', 'this morning or evening...'],
    "Simple Present": ['always', 'often', 'usually', 'sometimes', 'seldom', 'never', 'every day', 'every week', 'every year', 'on Mondays (oder andere Tage | or different days)', 'after school'],
}

def main():
    print("Bitte gib das Wort ein, von dem du die Zeitform haben willst.")
    print("Please enter the Word, from them you would to know the Timeform.")
    aktueller_satz = input()

    for timeform, words in SIGNAL_WORDS.items():
        if any(word in aktueller_satz for word in words):
            print(f'Der Satz {aktueller_satz} enthält eines dieser Signalwörter und befindet sich in der Zeitform "{timeform}"')
            print("Signalwörter anzeigen Lassen?")
            print("Bitte gib Ja oder Yes ein.")
            show = input()
            if show.upper() in ['YES', 'JA']:
                print(f"Das sind die Signalwörter der Zeitform {timeform}:")
                print(", ".join(words))
            break
    else:
       print("Das tut mir Leid, dein Signalwort konnte nicht gefunden werden. Bitte überprüfe nochmal deinen Satz und die schreibweise des Wortes.")

if __name__ == '__main__':
    main()
LeandergamesYT
User
Beiträge: 7
Registriert: Montag 13. Januar 2020, 16:09

Hast du es getestet?
<code>

Code: Alles auswählen

[quote]Bitte gib den Satz ein, dessen Zeitform und Signalwort du ermitteln willst.
Please enter the Sentence, from which timeform and signalword it haves.
yesterday
Tut mir Leid, dieser Satz konnte nicht ermittelt werden. Bitte Überprüfe nochmal deinen Satz und die schreibweise jedes Wortes.
Tut mir Leid, dieser Satz konnte nicht ermittelt werden. Bitte Überprüfe nochmal deinen Satz und die schreibweise jedes Wortes.
Tut mir Leid, dieser Satz konnte nicht ermittelt werden. Bitte Überprüfe nochmal deinen Satz und die schreibweise jedes Wortes.
Tut mir Leid, dieser Satz konnte nicht ermittelt werden. Bitte Überprüfe nochmal deinen Satz und die schreibweise jedes Wortes.
Der Satz {aktueller_satz} enthält eines dieser Signalwörter und befindet sich in der Zeitform "{timeform}"
Signalwörter anzeigen Lassen?
Bitte gib Ja oder Yes ein.
Ja
Das sind die Signalwörter der Zeitform {timeform}:
yesterday,last week,ago,in YEAR,this morning or evening...
>>> 
>>> 
>>> Bitte gib den Satz ein, dessen Zeitform und Signalwort du ermitteln willst.
Please enter the Sentence, from which timeform and signalword it haves.
yesterday
Tut mir Leid, dieser Satz konnte nicht ermittelt werden. Bitte Überprüfe nochmal deinen Satz und die schreibweise jedes Wortes.
Tut mir Leid, dieser Satz konnte nicht ermittelt werden. Bitte Überprüfe nochmal deinen Satz und die schreibweise jedes Wortes.
Tut mir Leid, dieser Satz konnte nicht ermittelt werden. Bitte Überprüfe nochmal deinen Satz und die schreibweise jedes Wortes.
Tut mir Leid, dieser Satz konnte nicht ermittelt werden. Bitte Überprüfe nochmal deinen Satz und die schreibweise jedes Wortes.
Der Satz {aktueller_satz} enthält eines dieser Signalwörter und befindet sich in der Zeitform "{timeform}"
Signalwörter anzeigen Lassen?
Bitte gib Ja oder Yes ein.
Ja
Das sind die Signalwörter der Zeitform {timeform}:
yesterday,last week,ago,in YEAR,this morning or evening...
>>> 
>>> 
>>> [/quote]
</code>
LeandergamesYT
User
Beiträge: 7
Registriert: Montag 13. Januar 2020, 16:09

sry, passt thx
Antworten