Seite 1 von 1
Zahlen aussortieren
Verfasst: Sonntag 5. Dezember 2021, 17:57
von Ruust24
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
Re: Zahlen aussortieren
Verfasst: Sonntag 5. Dezember 2021, 18:54
von sparrow
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?
Re: Zahlen aussortieren
Verfasst: Sonntag 5. Dezember 2021, 19:21
von Ruust24
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.
Re: Zahlen aussortieren
Verfasst: Sonntag 5. Dezember 2021, 19:33
von sparrow
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:
Was aber viel besser zu lesen ist und den Programmfluss besser erfassbar macht:
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?
Re: Zahlen aussortieren
Verfasst: Sonntag 5. Dezember 2021, 20:19
von Ruust24
Habs verstanden,
danke dir.
Re: Zahlen aussortieren
Verfasst: Montag 6. Dezember 2021, 00:26
von __blackjack__
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()