Seite 1 von 1

For Schleife -> If zählen

Verfasst: Donnerstag 5. Januar 2023, 15:16
von Namlus
Hallo zusammen, google hilft mir leider nicht weiter deshalb dachte ich mir ich versuche es hier, vielleicht weis jemand die Lösung.

Ich habe folgende Schleif

For var1 in Ausgabe_Text:
If Bedingung 1 == True:
.....
If Bedingung 2 == True:
.....
else:

Ich möchte am Ende ein "Gesamtergebnis" je If-Bedingung ausgeben. Also wie oft war Bedingung 1 in der Liste, wie oft die 2 usw.

Wie stelle ich das an?

Re: For Schleife -> If zählen

Verfasst: Donnerstag 5. Januar 2023, 16:25
von __blackjack__
@Namlus: Variable mit 0 initialisieren: ``some_name = 0``. Den Wert um 1 erhöhen: ``some_name += 1``.

Das ist zwar nur Pseudo-Code, aber trotzdem die beiden Hinweise:

1. Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassennamen (PascalCase).
2. Man vergleicht nicht mit literalen Wahrheitswerten. Da kommt ja entweder das Ergebnis der Bedingung heraus wenn die Wahr ist oder False wenn die Bedingung unwahr ist, also ist der Vergleich überflüssig. Sollte man mal das Gegenteil von einem Wahrheitswert brauchen, dann gibt es dafür ``not``.

Re: For Schleife -> If zählen

Verfasst: Donnerstag 5. Januar 2023, 19:50
von Namlus
Hallo,

vielen Dank für die Antwort. Ja ich habe letzte Woche mit Python begonnen (und das bis gestern noch falsch geschrieben Phyton....) und murksle mich damit durch.

Kleinschreiben.... ja ich weis, daran muss ich mich noch gewöhnen... :-)

Ja das verstehe ich so weit. Nur wie bekomme ich die Variable aus der For Schleife wieder raus:

some_name = 0
For var1 in Ausgabe_Text:
-> If Bedingung 1 == True:
-> .....
-> some_name += 1
-> If Bedingung 2 == True:
-> .....
-> else:

print(str(some_name))


das habe ich so schon versucht, das funktioniert aber nicht.

Re: For Schleife -> If zählen

Verfasst: Donnerstag 5. Januar 2023, 20:36
von __deets__
Doch, tut es.

Code: Alles auswählen

some_name = 0
for i in range(10):
     if i %2:
         some_name += 1
print(some_name)

Re: For Schleife -> If zählen

Verfasst: Donnerstag 5. Januar 2023, 20:54
von Sirius3
@Namlus: bitte zeige Deinen richtigen Code mit der dazugehörigen Fehlermeldung. Aus Deinen Code-Fragmenten kann man nicht rauslesen, was Du denn falsch machst.

Re: For Schleife -> If zählen

Verfasst: Donnerstag 5. Januar 2023, 23:39
von Namlus
Vielen Dank.

Stimmt..... tut es (plötzlich)!!!!

Was mich zur frage bringt: Warum tat es das zuvor nicht.....?
Aber diese Frage werden wir hier wohl niemals klären können *lach*

Re: For Schleife -> If zählen

Verfasst: Donnerstag 5. Januar 2023, 23:45
von Namlus
Jetzt weis ich warum

"some_name += 1" ist der Zaubercode

ich hatte
"some_name + 1" das hat nicht funktioniert.....

Re: For Schleife -> If zählen

Verfasst: Freitag 6. Januar 2023, 09:51
von Kebap
Der Zaubercode "some_name += 1" ist auch nur eine Abkürzung für "some_name = some_name + 1" also insofern warst du schon halb richtig.. :mrgreen:

Re: For Schleife -> If zählen

Verfasst: Samstag 7. Januar 2023, 21:07
von Namlus
In einer Funktion funktioniert das prinzip aber nicht oder?


some_name = 0
def funktion():
....führe etwas aus
if ausführung == "Fehler"
some_name += 1
return
funktion

print(some_name)

Re: For Schleife -> If zählen

Verfasst: Samstag 7. Januar 2023, 21:15
von Sirius3
Funktionen muß man auch aufrufen. Und alles was sie brauchen, bekommen sie über ihre Argumente, das Ergebnis ist der Rückgabewert:

Code: Alles auswählen

def funktion(ausfuehrung):
    ergebnis = 0 
    if ausfuehrung == "Fehler":
        ergebnis += 1
    ...
    return ergebnis

some_name = funktion("Fehler")
print(some_name)

Re: For Schleife -> If zählen

Verfasst: Samstag 7. Januar 2023, 21:17
von sparrow
@Namlus: Bitte poste Code in Code-Tags. Code-Tags werden eingefügt, indem man den </>-Button im "vollständigen Editor" drückt. Zwischen die Tags gehört dein Code.
Es ist dir sicher schon aufgefallen, dass sonst die Einrückungen verloren gehen und dass der Code bei anderen, die hier posten, anders aussieht?

Du solltest ein Python-Tutorial durcharbeiten.
Ich weiß, dass du dich in dem anderen Thread dafür ausgesprochen hast, dass du "quick&dirty"-Lösungen willst, aber das wird nicht funktionieren.
In einem Tutorial wirst du grundlegende Dinge lernen. Etwa wie Funktionen funktionieren und was es für Datenstrukturen gibt und wie man mit ihnen arbeitet.

Und du wirst etwas über die Sichtbarkeit von Variablen lernen. Denn das, was du machen willst funktioniert durchaus. Aber jed Funktion hat einen eigenen Namensraum.
Für Funktionen gilt: Alles was eine Funktion braucht, bekommt sie als Parameter übergeben. Ihr ergebnis gibt sie mit return zurück.

Weiter gilt: Auf Modulebene (also ohne Einrückung) stehen ausschließlich die Importe, die Definition von Konstanten (die heißen so, weil sie sich _nie_ ändern, die Definition von Klassen und Funktionen und die berühmt Weiche um eine Funktion namens "main" aufzurufen. In "main" beginnt dein Programm:

Code: Alles auswählen

def main():
    # das Programm beginnt hier

if __name__ == "__main__":
    main()
Dann kommst du erst gar nicht auf die Idee, globale Variablen zu verwenden.

Re: For Schleife -> If zählen

Verfasst: Sonntag 8. Januar 2023, 09:57
von Namlus
sparrow hat geschrieben: Samstag 7. Januar 2023, 21:17 @Namlus: Bitte poste Code in Code-Tags. Code-Tags werden eingefügt, indem man den </>-Button im "vollständigen Editor" drückt. Zwischen die Tags gehört dein Code.
Es ist dir sicher schon aufgefallen, dass sonst die Einrückungen verloren gehen und dass der Code bei anderen, die hier posten, anders aussieht?

Du solltest ein Python-Tutorial durcharbeiten.
Ich weiß, dass du dich in dem anderen Thread dafür ausgesprochen hast, dass du "quick&dirty"-Lösungen willst, aber das wird nicht funktionieren.
In einem Tutorial wirst du grundlegende Dinge lernen. Etwa wie Funktionen funktionieren und was es für Datenstrukturen gibt und wie man mit ihnen arbeitet.

Und du wirst etwas über die Sichtbarkeit von Variablen lernen. Denn das, was du machen willst funktioniert durchaus. Aber jed Funktion hat einen eigenen Namensraum.
Für Funktionen gilt: Alles was eine Funktion braucht, bekommt sie als Parameter übergeben. Ihr ergebnis gibt sie mit return zurück.

Weiter gilt: Auf Modulebene (also ohne Einrückung) stehen ausschließlich die Importe, die Definition von Konstanten (die heißen so, weil sie sich _nie_ ändern, die Definition von Klassen und Funktionen und die berühmt Weiche um eine Funktion namens "main" aufzurufen. In "main" beginnt dein Programm:

Code: Alles auswählen

def main():
    # das Programm beginnt hier

if __name__ == "__main__":
    main()
Dann kommst du erst gar nicht auf die Idee, globale Variablen zu verwenden.
Vielen Dank.

Re: For Schleife -> If zählen

Verfasst: Sonntag 8. Januar 2023, 10:17
von Namlus
Habe es gerade ausprobiert und es funktioniert einwandfrei. Aber wieso versehe ich gerade nicht......

Also wenn "ausführung" den Wert "Fehler" enthält, dann wird "ergebnis + 1 gerechnet". Im return gebe ich "ergebnis" an. Mit Print lese ich aber "some_name = funktion("Fehler") aus. Warum kommt da dann die 1? Wie kommt die 1 dahin, die sollte doch in der variable "ergebnis" liegen oder?

Code: Alles auswählen

some_name = ergebnis
liefert keinen Wert. Die Logik bzw. das System dahinter will sich mir gerade nicht offenbaren....

Das heisst ja ich muss die Funktion 2x ausführen. 1x mit der Berechnung und 1x nur um auszugeben ob es bei der Berechnung einen Fehler gab, oder verstehe ich das komplett falsch?

Re: For Schleife -> If zählen

Verfasst: Sonntag 8. Januar 2023, 10:36
von Sirius3
Dann wiederhole ich sparrows Worte mal: Du solltest ein Python-Tutorial durcharbeiten.
Dir fehlen noch so viele Grundlagen, die wir hier im Forum nicht vermitteln können.

Re: For Schleife -> If zählen

Verfasst: Sonntag 8. Januar 2023, 10:39
von Namlus
Sirius3 hat geschrieben: Sonntag 8. Januar 2023, 10:36 Dann wiederhole ich sparrows Worte mal: Du solltest ein Python-Tutorial durcharbeiten.
Dir fehlen noch so viele Grundlagen, die wir hier im Forum nicht vermitteln können.
Dankeschön.