Seite 1 von 1

Listeninhalte mit Funktion erzeugen (Anfängerfrage)

Verfasst: Sonntag 10. Februar 2008, 15:14
von maxfoxim
Hi Leute, ich bin seit kurzem dabei mir Python beizubringen. Habe auch schon so halbwegs ein Programmchen geschrieben. Nun zu meiner Frage: ich würde gerne in der folgenden Funktion die Werte in einer Liste speichern. Wie geht das? habe mich auch schon rumgeklickt, aber leider nichts hilfreiches gefunden

Code: Alles auswählen

def zahl (x):
    
    
    while x != 1:
        if x % 2 == 0:
           x=x/2
        else: x = x*3+1
        print x

Re: Listeninhalte mit Funktion erzeugen (Anfängerfrage)

Verfasst: Sonntag 10. Februar 2008, 15:22
von Craven
maxfoxim hat geschrieben:Nun zu meiner Frage: ich würde gerne in der folgenden Funktion die Werte in einer Liste speichern.
Welche Werte würdest du gerne speichern? Die bei if oder else oder x nach jedem Durchlauf von while?

Edit:
Mit append kannst du einen Wert an eine Liste anhängen.

Code: Alles auswählen

a = []
b = 2
a.append(b)

Verfasst: Sonntag 10. Februar 2008, 17:01
von maxfoxim
die Zahlen die bei der Funktion herauskommen, könntest mir aber auch generell zeigen wie das geht, das wäre nett von dir
danke schon mal im voraus

Verfasst: Sonntag 10. Februar 2008, 17:05
von Hyperion
na das hat er doch!

In Deinem Fall wohl so:

Code: Alles auswählen

ergebnis = []
for i in range(10):
    ergebnis.append(zahl(i))
print ergebnis

Verfasst: Sonntag 10. Februar 2008, 17:19
von EyDu
Da wäre dann wohl vielleicht mal ein kleiner Hinweis auf das offizielle Python Tutorial angebracht.

Re: Listeninhalte mit Funktion erzeugen (Anfängerfrage)

Verfasst: Sonntag 10. Februar 2008, 19:17
von Gnushi
Hi!
Ah, es geht im Jahr der Mathematik um die Collatz-Folge ;-)
maxfoxim hat geschrieben:ich würde gerne in der folgenden Funktion die Werte in einer Liste speichern. Wie geht das?

Folgender Vorschlag mit Generatoren:

Code: Alles auswählen

def Collatz(a):
    while a != 1:
        if a % 2 == 0: 
            a = a // 2
        else:
            a = 3 * a + 1
        yield(a)

Li = [a for a in Collatz(10)]
print Li
Gruß

Gnushi

Re: Listeninhalte mit Funktion erzeugen (Anfängerfrage)

Verfasst: Sonntag 10. Februar 2008, 19:30
von veers
Gnushi hat geschrieben:

Code: Alles auswählen

Li = [a for a in Collatz(10)]
Warum schwierig wenn es auch einfach geht:

Code: Alles auswählen

li = list(Collatz(10))
PS: Sieht dir mal PEP 8 an :)