Frage zu einem Beispiel

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
Crystalix
User
Beiträge: 4
Registriert: Freitag 1. August 2008, 21:03

Hallo,

also ich habe vorgestern angefangen Python zu lernen, habe sonst garkeine Programmier Erfahrung. Und habe mein erstes Problem in einem Beispiel wird die while Schleife erklärt, durch dieses Programm kann man die Fakulität einer Zahl berechenen.
Nur leider verstehe ich die Anweisungen zur Berechnung der Fakulität nicht, soll heißen ich verstehe nicht warum die Fakulität mit den Anweisungen berechnet wird.

Code: Alles auswählen

while True: 
    zahl = input("Geben Sie eine Zahl ein: ") 
    ergebnis = 1 
    while zahl > 0: 
        ergebnis = ergebnis * zahl 
        zahl = zahl - 1 
    print "Ergebnis: ", ergebnis
Wäre nett wenn mir das jemand erklären kann.

Lg
Crystalix
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Wie man die Fakultaet einer Zahl berechnet, weisst du aber?

Die aeussere while-Schleife sorgt lediglich dafuer, dass du bis in alle Ewigkeit nach neuen Zahlen gefragt wirst, fuer die das Programm die Fakultaet berechnen soll.

Der Rest ist eigentlich nur noch die Umsetzung der Definition. Am Beispiel:

Code: Alles auswählen

5! =  5 * 4 * 3 * 2 * 1
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Aber das Beispiel ist schon ziemlich doof... input ist doof, nicht mit Funktionen arbeiten ist doof.... Fördert alles schon wieder einen Programmierstil, der nicht wirklich das Wahre ist.
Crystalix
User
Beiträge: 4
Registriert: Freitag 1. August 2008, 21:03

Wie man die Fakultaet einer Zahl berechnet, weisst du aber?
Ja klar, z.B. 3 da berechnet man die Fakultät indem man 1 * 2 * 3 rechnet.

Vielleicht hast du meine Frage falsch verstanden, ich weis das die äußere while Schleife dazu da ist das, dass Program unendliche lang nach neuen Zahlen fragt.
Ich wollte eher wissen was die 3,4,5 und 6 Zeile macht also durch welche Anweisung die Fakultät berechnet wird.

Lg
Crystalix
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Crystalix hat geschrieben:Ich wollte eher wissen was die 3,4,5 und 6 Zeile macht also durch welche Anweisung die Fakultät berechnet wird.
Dann geh doch die while-Schleife für eine Beispielzahl einmal Schritt für Schritt durch (in Gedanken meine ich, nicht auf dem Rechner laufen lassen) und notiere dir jeweils auf einem Zettel, welche Werte sich dabei nach und nach für ergebnis und zahl ergeben.

Das sollte dann eigentlich die Erleuchtung bringen ...
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Code: Alles auswählen

def fak(zahl):
    if zahl == 0:
        return 1
    else:
        return zahl * fak(zahl - 1)

while True:
    fak(int(raw_input("Geben Sie eine Zahl ein: ")))
Das finde ich schöner :)
Crystalix
User
Beiträge: 4
Registriert: Freitag 1. August 2008, 21:03

Ich hab jetzt mal als Beispiel 4 genommen dann müsste es ja heißen wenn man die Zahl einsetzt,

Code: Alles auswählen

        1 = 1 * 5
        5 = 5 - 1
beim nächsten Durchlauf dann,

Code: Alles auswählen

        1 = 1 * 4
        4 = 4 - 1
usw.

Ich versteh es irgentwie nicht so richtig.

Lg
Crystalix
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Du kannst das nicht direkt auf die Mathematik übertragen. Variablen sind in der Mathematik unveränderbar, in Python sind sie es.
Crystalix
User
Beiträge: 4
Registriert: Freitag 1. August 2008, 21:03

Also habs jetzt endlich verstanden, DasIch hat mir den Anstoß dazu gegeben. Danke nochmal an alle für die schnelle Hilfe.

Lg
Crystalix
Antworten