While-Schleife Durchläufe zählen?

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
Draike33
User
Beiträge: 5
Registriert: Freitag 1. September 2017, 18:17

Gibt es in Phyton eine Funktion, die die Anzahl Durchläufe, welche eine While-Schleife macht zählt? Ich will ein Programm schreiben, dass mit die grösste Collatz-folge von den Zahlen von 1-1000 ausrechnet.
Die Folgen ausrechnen kann ich nur die längste finde ich nicht heraus.
Danke für euere Antworten :)
__deets__
User
Beiträge: 14528
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nimm eine for-Schleife? Die ist notorisch gut im zählen.

Wenn du itertools.count nimmst, bekommst du auch eine gute Quelle zum hochzählen.
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Hi,

du kannst die Collatz-Folgen mit jedem Schleifen-Durchlauf einer Liste hinzufügen, und dir anschließend die Größte Folge ausgeben lassen:

Code: Alles auswählen

sequence = []

while (statement):
     - code logic - 
     sequence.append(result)
     
print(max(sequence))
When we say computer, we mean the electronic computer.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Draike33: es gibt zwei Möglichkeiten, entweder zählt man händisch und nimmt eine while-Schleife oder man läßt die for-Schleife zählen und beendet sie mit einem `if ...: break`:

Code: Alles auswählen

    length = 0
    while n > 1:
        n = ...
        length += 1
oder

Code: Alles auswählen

    for length in itertools.count():
        if n <= 1:
            break
        n = ...
ruedi_br
User
Beiträge: 13
Registriert: Montag 11. September 2017, 08:24

Hallo Draike33,
hattest Du so etwas gemeint:

Code: Alles auswählen

def collatz(z):
    if z%2==0:
        return z//2
    else:
        return 3*z+1

zahlen=[]
for zahl in range(2,1025):
    zaehler=0
    z=zahl
    while zahl!=1:
        zahl = collatz(zahl)
        zaehler += 1
    liste=(zaehler,z)
    zahlen.append(liste)

print(max(zahlen))
??
Gruß Ruedi
Antworten