Seite 1 von 1
nach def mit = rechnen?
Verfasst: Samstag 5. Januar 2019, 13:49
von Evenid
Hallo, ich hab ein kleines Problem, aber trotzdem keine Ahnung, wie das anders geht...
Code: Alles auswählen
def fibonacci(a,b):
return a+b=c
b+c=d
c+d=e
d+e=f
e+f=g
f+g=h
g+h=i
h+i=j
i+j=k
print(a,b,c,d,e,f,g,h,i,j,k)
a= input()
b= input()
Das ist mein Programm, beim ausführen kommt immer "Error: invalid Syntax" und das = gleich am Anfang bei a+b=c wird wegen IDLE rot markiert...
Wie kann man das so machen, dass es klappt?
wie kann man nach def mit einem = rechnen?
Hilfe bitte, danke!
Re: nach def mit = rechnen?
Verfasst: Samstag 5. Januar 2019, 13:54
von __deets__
Python und nahezu jede Programmiersprache funktionieren nach dem Schema
ergebnis = Berechnung
Du musst deine Gleichungen also umdrehen.
Re: nach def mit = rechnen?
Verfasst: Samstag 5. Januar 2019, 14:01
von Sirius3
@Evenid: wo hast Du das gelernt? Weder das `return` in der ersten Zeile, noch alle Anweisungen danach sind korrekt. Die Zuweisungen müssen umgedreht werden und ein `return` braucht eine Anweisung, keine Zuweisung. Nach dem return endet auch die Abarbeitung der Funktion.
Zum Schluß: die Funktion muß man auch aufrufen.
Re: nach def mit = rechnen?
Verfasst: Samstag 5. Januar 2019, 15:01
von Evenid
__deets__ hat geschrieben: Samstag 5. Januar 2019, 13:54
Python und nahezu jede Programmiersprache funktionieren nach dem Schema
ergebnis = Berechnung
Du musst deine Gleichungen also umdrehen.
Das hatte ich schon ausprobiert, es passiert aber das selbe...
Re: nach def mit = rechnen?
Verfasst: Samstag 5. Januar 2019, 15:03
von Evenid
Sirius3 hat geschrieben: Samstag 5. Januar 2019, 14:01
@Evenid: wo hast Du das gelernt? Weder das `return` in der ersten Zeile, noch alle Anweisungen danach sind korrekt. Die Zuweisungen müssen umgedreht werden und ein `return` braucht eine Anweisung, keine Zuweisung. Nach dem return endet auch die Abarbeitung der Funktion.
Zum Schluß: die Funktion muß man auch aufrufen.
Danke, aber wie macht man eine Zuweisung? Wie ruft man eine Funktion auf? Einfach den Namen hinschreiben? Ich weiß nicht ob das klappt, ich bekomme ja immer noch die Fehlermeldung am Anfang...
Re: nach def mit = rechnen?
Verfasst: Samstag 5. Januar 2019, 15:10
von Evenid
Code: Alles auswählen
def fibonacci(a,b):
return c= a+b
d=b+c
e=c+d
f=d+e
g=e+f
h=f+g
i=g+h
j=h+i
print(a,b,c,d,e,f,g,h,i,j)
a= input()
b= input()
fibonacci(a,b)
def test(a,b)
3. Fibonacci.fibonacci(a,b)
a+b+c+d+e+f+g+h+i+j= z
if z == 11*g:
print("Der Test war erfolgreich.")
else:
print("Der Test war nicht erfolgreich.")
Im Moment siehts so aus, das ganze d=…. und so kann ich nicht so hinschieben dass es unter dem return steht
Re: nach def mit = rechnen?
Verfasst: Samstag 5. Januar 2019, 15:22
von Sirius3
@Evenid: wie schon geschrieben, ein return braucht einen Ausdruck, keine Zuweisung; Ausdruck ist z.B. der Teil `a+b`. Aber an der Stelle macht ein return keinen Sinn, Die Funktion macht nur ohne `return` Sinn.
Re: nach def mit = rechnen?
Verfasst: Samstag 5. Januar 2019, 15:40
von __blackjack__
@Evenid: Wie Zuweisungen aussehen und wie man Funktionen aufruft kann und sollte man nicht versuchen zu erraten, sondern einfach mal ein Grundlagentutorial durcharbeiten, wo einem so etwas gezeigt/beigebracht wird. In der Python-Dokumentation gibt es beispielsweise so ein Tutorial.
Re: nach def mit = rechnen?
Verfasst: Sonntag 6. Januar 2019, 10:53
von miracle173
Evenid hat geschrieben: Samstag 5. Januar 2019, 15:10
Code: Alles auswählen
def fibonacci(a,b):
return c= a+b
d=b+c
e=c+d
f=d+e
g=e+f
h=f+g
i=g+h
j=h+i
print(a,b,c,d,e,f,g,h,i,j)
a= input()
b= input()
fibonacci(a,b)
def test(a,b)
3. Fibonacci.fibonacci(a,b)
a+b+c+d+e+f+g+h+i+j= z
if z == 11*g:
print("Der Test war erfolgreich.")
else:
print("Der Test war nicht erfolgreich.")
Im Moment siehts so aus, das ganze d=…. und so kann ich nicht so hinschieben dass es unter dem return steht
Befassen wir uns nur mit dem folgenden code:
Code: Alles auswählen
def fibonacci(a,b):
return c= a+b
d=b+c
e=c+d
f=d+e
g=e+f
h=f+g
i=g+h
j=h+i
print(a,b,c,d,e,f,g,h,i,j)
Was willst du mit der Zeile
erreichen?
Du willst vermutlich folgendes durchführen:
Code: Alles auswählen
def fibonacci(a,b):
c=a+b
d=b+c
e=c+d
f=d+e
g=e+f
h=f+g
i=g+h
j=h+i
print(a,b,c,d,e,f,g,h,i,j)
return
Das 'return' am Ende des Codes der Funktion 'fibonacci' ist überflüssig, da Python hier automatisch ein 'return' durchführen würde.
Code: Alles auswählen
def fibonacci(a,b):
c=a+b
d=b+c
e=c+d
f=d+e
g=e+f
h=f+g
i=g+h
j=h+i
print(a,b,c,d,e,f,g,h,i,j)
fibonacci(1,2)
würde dann
ausgeben.
Hier das Python Tutorial:
https://docs.python.org/3/tutorial/
Es gibt auch deusche Versionen davon:
https://py-tutorial-de.readthedocs.io/de/python-3.3/
Re: nach def mit = rechnen?
Verfasst: Sonntag 6. Januar 2019, 12:15
von ThomasL
Und das ist die unsinnigste fibonacci Funktion die ich je gesehen habe
Wieso muss man 2 Werte eingeben? Damit das funktioniert müssen a und b entsprechend fib(n) und fib(n+1) sein.
Auf die Schnelle codet man fibonacci() so:
Code: Alles auswählen
def fibonacci(n):
if n < 0:
raise ValueError('fibonacci(n): n must be >= 0')
if n < 2:
return n
a, b = 0, 1
while n > 1:
a, b = b, a+b
n -= 1
return b
Re: nach def mit = rechnen?
Verfasst: Sonntag 6. Januar 2019, 12:50
von __blackjack__
Der OP will ja 10 aufeinanderfolgende Fibonaccizahlen addieren. Für solche Fälle bietet sich eine Generatorfunktion an. Die ist sogar kürzer. Mit `more_itertools.windowed()` kann man sich dann ein gleitendes Fenster von 10 Elementen über die Fibonaccizahlen erstellen und die Eigenschaft, die vom OP anscheinend getestet werden soll, für diese Fenster ganz einfach prüfen:
Code: Alles auswählen
#!/usr/bin/env python3
from itertools import islice
from more_itertools import windowed
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
def main():
for xs in islice(windowed(fibonacci(), 10), 20):
print(sum(xs) == xs[6] * 11, xs)
if __name__ == '__main__':
main()