Seite 1 von 1

While-Schleife Durchläufe zählen?

Verfasst: Montag 18. September 2017, 20:32
von Draike33
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 :)

Re: While-Schleife Durchläufe zählen?

Verfasst: Montag 18. September 2017, 20:47
von __deets__
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.

Re: While-Schleife Durchläufe zählen?

Verfasst: Montag 18. September 2017, 20:51
von sls
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))

Re: While-Schleife Durchläufe zählen?

Verfasst: Dienstag 19. September 2017, 07:24
von Sirius3
@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 = ...

Re: While-Schleife Durchläufe zählen?

Verfasst: Mittwoch 20. September 2017, 10:33
von ruedi_br
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