Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » Python: Werterückgabe aus Funktion
Druckversion
Druckversion
Autor
Schule J Python: Werterückgabe aus Funktion
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2082
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2020-08-15


Hallo,

habe eine Funktion, die kuckt nach, ob 2 zahlen Prim sind oder nicht, funktioniert auch!
Dann stellt sie 3 Werte her:
Python
  1. def zzbrückenzähler(halbeLänge):
  2. gembrücke=0
  3. pzbrücke=0
  4. zzbrücke=0
  5. for b in range(halbeLänge,0,-10):
  6. zahl1=b
  7. zahl2=2*halbeLänge-b
  8. print(zahl1,zahl2,zahl1+zahl2)
  9. if isprime(zahl1) and isprime(zahl2):
  10. pzbrücke=pzbrücke+1
  11. else:
  12. pass
  13. if isprime(zahl1) and not isprime(zahl2):
  14. gembrücke=gembrücke+1
  15. else:
  16. pass
  17. if isprime(zahl2) and not isprime(zahl1):
  18. gembrücke=gembrücke+1
  19. else:
  20. pass
  21. if not isprime(zahl2) and not isprime(zahl1):
  22. zzbrücke=zzbrücke+1
  23. else:
  24. pass
  25. #return(pzbrücke,gembrücke,zzbrücke)
  26. return(zzbrücke)

Dann rufe ich im Hauptteil die Funktion so auf:
Python
  1. zzb=zzbrückenzähler(i)
  2. print("Nr.",nr,"i=",i,"Lä",Länge,"oben:",pzoben,"unten",pzunten, int(i/2), Hälfte,zzb)

Ich will aber eigentlich alle 3 Werte zurückhaben, gebe aber nur einen, nämlich i, hoch. Wie mache ich das? ich kann doch nicht schreiben:
Python
  1. pzb=zzbrückenzähler(i)






-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
gonz
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 16.02.2013
Mitteilungen: 3630
Aus: Harz
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2020-08-15


Du kannst eine kommagetrennte Liste von Werten zurückgeben, und auf eine Liste aus kommagetrennten Variablen zuweisen,

oder die Rückgabewerte als Liste zurückgeben
und diese auf eine Variable zuweisen

(mal so ins unreine gesprochen)
python
def funktion_eins(irgendwas):
    eins = irgendwas*2
    zwei = irgendwas+3*eins
    drei = irgendwas+4*zwei+5*eins
    return eins,zwei,drei
 
meinEins,meinZwei,meinDrei = funktion_eins(7)
print(meinEins,meinZwei,meinDrei)
 
 
def funktion_zwei(irgendwas):
    eins = irgendwas*2
    zwei = irgendwas+3*eins
    drei = irgendwas+4*zwei+5*eins
    return [eins,zwei,drei]
 
meineZwei = funktion_zwei(7)
print(meineZwei[0],meineZwei[1],meineZwei[2])



-----------------
Heute: Keine Signatur.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2082
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2020-08-15


Danke Gonz!


-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2082
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, vom Themenstarter, eingetragen 2020-08-15


Wieder dasselbe Problem, das andere hatte ich gelöst, indem ich einfach 3 Funktionen geschrieben habe. Habe diese Funktion:
Python
  1. def zzbrückenermittler(oben,unten,länge):
  2. pzo=oben
  3. pzu=unten
  4. zzo=länge-pzo
  5. zzu=länge-pzu
  6. pzopro=pzo/länge*100
  7. pzupro=pzu/länge*100
  8. zzopro=zzo/länge*100
  9. zzupro=zzu/länge*100
  10. #print(pzopro,pzupro,zzopro,zzupro)
  11. #Prozentmischer
  12. neupzopro=pzupro/100*pzopro
  13. neuzzopro=pzupro/100*zzopro
  14. neupzupro=zzupro/100*pzupro
  15. neuzzupro=zzupro/100*zzupro
  16. #print(neupzopro,neupzupro,neuzzopro,neuzzupro)
  17. #wichter
  18. ergpzbr=länge/100*neupzopro
  19. ergzzopzubr=länge/100*neuzzopro
  20. ergzzupzobr=länge/100*neupzupro
  21. ergzzbr=länge/100*neuzzupro
  22. print(int(ergpzbr),int(ergzzopzubr),int(ergzzupzobr),int(ergzzbr))
  23. return(int(ergzzbr))

abgerufen wird die so:
Python
  1. y5.append(zzbrückenermittler(pzoben,pzunten,Länge))

Er sagt nun: "Division bey zero", was heißt, es kommt die Länge oben nicht an.

Was tun?



-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
gonz
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 16.02.2013
Mitteilungen: 3630
Aus: Harz
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, eingetragen 2020-08-15


wo kommt denn der Wert Länge (großgeschrieben) den du mitgibst her? vielleicht ist er ja beim Aufruf tatsächlich gleich Null?


-----------------
Heute: Keine Signatur.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2082
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, vom Themenstarter, eingetragen 2020-08-15


2020-08-15 17:35 - gonz in Beitrag No. 4 schreibt:
wo kommt denn der Wert Länge (großgeschrieben) den du mitgibst her? vielleicht ist er ja beim Aufruf tatsächlich gleich Null?

da ist als erster Wert 6//20 drin ... das ist doch nicht Null

ich habs damit gelöst:
Python
  1. if i < 20:
  2. Länge=1
  3. else:
  4. Länge=i//20

Jetzt läuft das Programm, aber was y5 betrifft entspricht der Graph nicht meinen Erwartungen!



-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
gonz
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 16.02.2013
Mitteilungen: 3630
Aus: Harz
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, eingetragen 2020-08-15


2020-08-15 17:45 - Bekell in Beitrag No. 5 schreibt:
da ist als erster Wert 6//20 drin ... das ist doch nicht Null

Doch, da 6//20 eine integer zurückgibt und 6 durch 20 gleich 0 Rest 6 ist :)


-----------------
Heute: Keine Signatur.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2082
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, vom Themenstarter, eingetragen 2020-08-15


Ich bekomme jetzt den Ausdruck:


seltsamerweise kommt ne Parabel raus, obwohl ich auch so einen struppigen Trend erwarte, nur etwas versetzt????

Fehler gefunden ...




-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell hat die Antworten auf ihre/seine Frage gesehen.
Bekell hat selbst das Ok-Häkchen gesetzt.
Bekell wird per Mail über neue Antworten informiert.
Neues Thema [Neues Thema]  Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2020 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]