Seite 1 von 1
Goldenen Schnitt berechnen
Verfasst: Freitag 2. Oktober 2009, 21:37
von Jatch
N'Abend,
ich habe mir heute vorgenommen, mich mal in Python einzuarbeiten.
Erstmal wollte ich kleine Programme zum Berechnen irgendwelcher Dinge schreiben.
Habe auch schon ein paar simple zum laufen gebracht.
Nun wollte ich ein Skript schreiben, mit dem man den Goldenen Schnitt berechnen kann.
Hier mein Code:
Code: Alles auswählen
#! /usr/bin/python
import sys
N = int(sys.argv[1])
fib1,fib2=1, 1
for step in range ( N):
w=float(fib2//fib1)
fib1,fib2= fib2, fib1+fib2
print w
Es werden allerdings nicht die richtigen Werte ausgegeben:
1.0,2.0,1.0,1.0 usw.
Wäre nett, wenn mir jmd auf die Sprünge helfen könnte

[/code]
Verfasst: Freitag 2. Oktober 2009, 21:52
von BlackJack
Jatch: Vielleicht hilft es ja schon, wenn Du statt des Operators für die Ganzzahldivision ``//`` den normalen Divisionsoperator ``/`` verwendest.

Verfasst: Freitag 2. Oktober 2009, 21:56
von Jatch
Hi,
das hatte ich bereits ausprobiert,mit dem gleichen Ergebnis

Verfasst: Freitag 2. Oktober 2009, 22:47
von BlackJack
@Jatch: Okay, ich hatte nur kurz draufgeschaut. Es sollte mindestens eine der beteiligten Zahlen eine Fliesskommazahl sein. Es nützt nicht so viel das ganzzahlige Ergebnis hinterher in eine Fliesskommazahl umzuwandeln.
Verfasst: Freitag 2. Oktober 2009, 22:58
von Jatch
Du bist mein Held
es klappt jetzt wunderbar, vielen Dank
Verfasst: Freitag 2. Oktober 2009, 22:58
von Dauerbaustelle
Code: Alles auswählen
import sys
N = int(sys.argv[1])
fib1, fib2 = 1.0, 1.0
for step in range(N):
w = float(fib2/fib1)
fib1, fib2 = fib2, fib1+fib2
print w
Verfasst: Samstag 3. Oktober 2009, 07:41
von BlackJack
@Dauerbaustelle: Der `float()`-Aufruf ist da jetzt überflüssig.
Re: Goldenen Schnitt berechnen
Verfasst: Samstag 3. Oktober 2009, 09:01
von numerix
Jatch hat geschrieben:Nun wollte ich ein Skript schreiben, mit dem man den Goldenen Schnitt berechnen kann.
Verfasst: Samstag 3. Oktober 2009, 11:14
von b.esser-wisser
Jetzt fehlt noch der Hinweis auf die Division in Python 3 bzw. bei "from __future__ import division":
Code: Alles auswählen
>>> 4 / 2
2
>>> 4 / 3
1
>>> 4.0 / 3
1.3333333333
>>> 4.0 // 3.0
1.0
>>> from __future__ import division
>>> 4 // 2
2
>>> 4 / 2
2.0
>>> 4 / 3
1.3333333333
hth, Jörg
warum nicht so?
Verfasst: Samstag 10. Oktober 2009, 20:54
von pillmuncher
Re: warum nicht so?
Verfasst: Samstag 10. Oktober 2009, 22:37
von numerix
pillmuncher hat geschrieben:
Da gefällt mir meine Variante (s.o.) aber besser:
oder, noch ästhetischer:
Re: warum nicht so?
Verfasst: Sonntag 11. Oktober 2009, 20:11
von pillmuncher
numerix hat geschrieben:pillmuncher hat geschrieben:
+1
Schade aber, dass die 5 nur viermal vorkommt...
Gruß,
Mick.