nach def mit = rechnen?

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
Evenid
User
Beiträge: 4
Registriert: Samstag 5. Januar 2019, 13:36

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!
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Python und nahezu jede Programmiersprache funktionieren nach dem Schema

ergebnis = Berechnung

Du musst deine Gleichungen also umdrehen.
Sirius3
User
Beiträge: 17788
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
Evenid
User
Beiträge: 4
Registriert: Samstag 5. Januar 2019, 13:36

__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...
Evenid
User
Beiträge: 4
Registriert: Samstag 5. Januar 2019, 13:36

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...
Evenid
User
Beiträge: 4
Registriert: Samstag 5. Januar 2019, 13:36

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
Sirius3
User
Beiträge: 17788
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
Benutzeravatar
__blackjack__
User
Beiträge: 13182
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Benutzeravatar
miracle173
User
Beiträge: 127
Registriert: Samstag 6. Februar 2016, 00:28

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

Code: Alles auswählen

        return c= a+b
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

Code: Alles auswählen

1 2 3 5 8 13 21 34 55 89
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/
Benutzeravatar
ThomasL
User
Beiträge: 1367
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

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
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
__blackjack__
User
Beiträge: 13182
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

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()
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Antworten