Zahlen aussortieren

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
Ruust24
User
Beiträge: 3
Registriert: Sonntag 5. Dezember 2021, 17:15

Hi,
ich (noch Anfänger) versuche gerade ein aussortier Programm in Python zu schreiben,
welches zum Bsp: Zahlen von 0 bis X addiert/subtrahiert/dividiert... und dabei
bestimmte Bedingungen einhält.

Hier soll mein Programm jetzt alle zahlen von 0 bis 1000 addieren
und dabei Zahlen welches die Ziffer 7 enthält oder durch 7 teilbar sind,
nicht dazu addieren.
Zum Schluss soll da genau eine Zahl zurückgegeben werden.

Code: Alles auswählen

Wert = []
for x in range (1000)
    u = [int(z) for z in str(x)]
    if 7 in u:
        continue
    if x%7 == 0:
        continue
    Wert.append(x)
    print(sum(Wert))
Problem:

Spuckt mir mehr als nur eine Zahl raus und diese ist noch dazu falsch.
ich weiß nicht wo mein Fehler sitzt und hoffe das Ihr mir dabei helfen könnt.

MfG
Ruust24
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Namen (außer die von Klassen) schreibt man in Python klein_mit_unterstrich.

Ich würde mir auch nicht angwöhnen, "continue" zu verwende, weil das zu sehr unübersichtlichem Code führt. Hier ist das auch gar nicht nötig. Du hast ja bereits eine Bedingung. Wenn du die Bedingung umdresht und du die Zahl nur an die Liste hängst, wenn die Bedingungen erfüllt sind.

Die Einrückung ist in Python wichtig. Sie definiert, was in einer Schleife steht und was nicht. Möchtest du in jedem Schleifendurchlauf etwas auseben? Oder doch eigentlich erst, nachdem die Schleife durch ist?
Ruust24
User
Beiträge: 3
Registriert: Sonntag 5. Dezember 2021, 17:15

sparrow hat geschrieben: Sonntag 5. Dezember 2021, 18:54 Namen (außer die von Klassen) schreibt man in Python klein_mit_unterstrich.

Ich würde mir auch nicht angwöhnen, "continue" zu verwende, weil das zu sehr unübersichtlichem Code führt. Hier ist das auch gar nicht nötig. Du hast ja bereits eine Bedingung. Wenn du die Bedingung umdresht und du die Zahl nur an die Liste hängst, wenn die Bedingungen erfüllt sind.

Die Einrückung ist in Python wichtig. Sie definiert, was in einer Schleife steht und was nicht. Möchtest du in jedem Schleifendurchlauf etwas auseben? Oder doch eigentlich erst, nachdem die Schleife durch ist?
Erstmal danke für deine Antwort,

leider verstehe ich deine Aussage mitm umdrehen... nicht.
Könntest du mir ein Bsp dazu geben oder es an meinem Code zeigen?

Mitm Einrücken meinst du Zeilenabstände bzw Umbrüche miteinbauen oder?

Meine Schleife soll am Ende nur eine Zahl ausgeben die meine oben genannten Bedinungen erfüllt je nachdem welchen Wert X hat.
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Du brauchst meinen Beitrag nicht voll zitieren. Der steht doch bereits hier im Thread.

Zu dem Umdrehen der Bedingung:
Bisher gehst du hin und prüfst ob bestimmte Bedinungen erfüllt sind und springst dann in den nächsten Schleifendurchlauf. Also tust du dies:

Code: Alles auswählen

if not zahl_passt:
    continue
werte.add(zahl)
Was aber viel besser zu lesen ist und den Programmfluss besser erfassbar macht:

Code: Alles auswählen

if zahl_passt:
    werte.add(zahl)
Statt also zu prüfen, dass die Zahl NICHT passt und dann continue zu verwendne, prüfst du einfach ob die Zahl passt und fügst sie nur dann an die Liste an.


Zu der Einrückung: Woher weiß der Interpreter denn, was im Schleifenrumpf steht und was danach?
Ruust24
User
Beiträge: 3
Registriert: Sonntag 5. Dezember 2021, 17:15

Habs verstanden,
danke dir.
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Code: Alles auswählen

#!/usr/bin/env python3


def main():
    print(
        sum(
            value
            for value in range(1001)
            if value % 7 != 0 and "7" not in str(value)
        )
    )


if __name__ == "__main__":
    main()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten