wie mach ich ne wertetabelle?

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.
Gast

Donnerstag 8. September 2005, 20:23

ja mach tja nix, aber irgendwie kapier ich net was daran halt falsch is, wenn ich das eingeb
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 8. September 2005, 20:31

Poste doch nochmal deinen jetzigen Code... Ach und setzte den zwischen [python]BlaBlaBla[/python]

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Donnerstag 8. September 2005, 20:32

Code: Alles auswählen

def wertetabelle (-4.5,5.5,0.5):
      x=-4.5
      y=0,1xhoch4-0,1xhoch3-2,4xhoch2+0,4x+8
      while x<=5.5:
              print x,'   ',y
              x=-4.5 + 0.5
Das hast Du gepostet. Na gut, mal überlegen ... wozu schreibst Du bei def wertetabelle(-4.5, 5.5, 0.5), die Zahlen in die Klammer? Kannst Du eigentlich weglassen, Du schreibst ja nachher eh x = -4.5 ;) Der Witz an der Sache ist ja, dass Du diese Funktion auch mit anderen Werten verwenden können willst. Also verwenden wir Variablen:

Code: Alles auswählen

def wertetabelle(a, b, sw):
    x = a
    ...
Wie ich Dir vorhin gezeigt habe, rufst Du das ganze dann mit

Code: Alles auswählen

wertetabelle(-4.5, 5.5, 0.5)
auf. Dann ist x auch -4.5. Mit Deiner Version (ohne Werte in Klammern, die verursachen eh nur Fehlermeldungen ;)) kannst Du die Funktion nur mit diesen 3 Werten verwenden, was sehr unflexibel ist.
Gast

Donnerstag 8. September 2005, 20:40

:? irgendwie ist das alles zu hoch für mich :oops:

also meinst du jetzt ich soll das alles so eingeben

def wertetabelle ():
x=-4.5
y=0,1xhoch4-0,1xhoch3-2,4xhoch2+0,4x+8
while x<=5.5:
print x,' ',y
x=-4.5 + 0.5

oder was? also wenn ich das mache, und das dann halt mit

wertetabelle(-4.5, 5.5, 0.5)

aufrufe, dann kommt mal wieder eine fehermeldung... :cry:
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Donnerstag 8. September 2005, 20:54

:) Nein.

Code: Alles auswählen

def wertetabelle():
Das ist eine Funktion die keine Argumente haben will.

Code: Alles auswählen

wertetabelle(-4.5, 5.5, 0.5)
Hier rufst Du sie mit 3 Argumenten auf. Dass Python sich hier beschwert ist doch logisch, oder? ;)
Ich hab Dir ja schon gezeigt wie Du's machen sollst:

Code: Alles auswählen

def wertetabelle(a, b, sw):     # <- will 3 Argumente haben
    ...

wertetabelle(-4.5, 5.5, 0.5)    # <- wird mit 3 Argumenten gefüttert
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 8. September 2005, 20:56

Ist ja auch klar, weil deine Funktion keine Parameter erwartet...

Code: Alles auswählen

def test():
  print txt

test( "geht nicht" )
Funktioniert nicht, weil es so gehen muß:

Code: Alles auswählen

def test( txt ):
  print txt

test( "das geht" )
Schau dir mal das an: http://www.pythonwiki.de/PythonDeForum/ ... 9b4deb0f74

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
XT@ngel
User
Beiträge: 256
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Donnerstag 8. September 2005, 20:58

Hallo,
ich hab jetzt zwei Lösungen!
Einmal die mit deiner While Schleife natürlich ohne den Fehler (was immer das für ein fehler ist) und eine mit der xlrange() Funktion.

mawe hat dir verdammt viel geholfen und solangsam glaub ich, dass du im Unterrricht nicht aufgepasst hast? ;)
also meinst du jetzt ich soll das alles so eingeben
wo scheibst du das rein? In eine Datei?
dann kommt mal wieder eine fehermeldung
Und ich frage nochmal, was für einen Fehler teilt dir Python mit?
Sollen wir raten? Ist es ein SyntaxError?


MfG
Andreas
Gast

Donnerstag 8. September 2005, 21:04

ich hab da jetzt mal was eingegeben, so wie ich das jetzt verstanden hab.. und dann kam

-4.5 7.71875
-4.0 7.71875
-4.0 7.71875

und dann immer mir -4.0 weiter. und es hat erst aufgehört, als ich es angealten hab o.O tja, vielleicht hätte ich doch kein informatik wählen sollen :x naja...
also ich hab schon aufgepasst. ich hab wie gesagt, dass alles von der tafel abgschrieben, und dann meinte er, ja und dann könnt ihr jetzt ne wertetabelle damit ausrechnen.... *argh* und dann hat er mit dem nächsten thema weitergemacht... :?
toll... :-(
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 8. September 2005, 21:06

Da scheint wohl ein Fehler in der while-Schleife zu sein... Drum läuft's ewig... Prüfe einfach die Werte und achte darauf, ob while immer True ergibt...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

Donnerstag 8. September 2005, 21:10

also jetzt war es so, dass er halt alle zahlen von -4.5 bis 5.5 mit schrittweite 0.5 gemacht hat, aber dahinter hat er bei jeder zahl 7.71875 gemacht hat.
also:
-4.5 7.71875
-4.0 7.71875
-3.5 7.71875
usw.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Donnerstag 8. September 2005, 21:13

Ich kann Dir schon sagen warum das passiert. Du hast in der while Schleife sicher

Code: Alles auswählen

x = -4.5 + 0.5
geschrieben, stimmts? Naja, da kommt immer -4.0 raus! ;)
Weisst Du was ich nicht ganz verstehe? Dein Lehrer hat Euch das an die Tafel geschrieben:

Code: Alles auswählen

def wertetabelle(a, b, sw):
    x = a
    while  x <= b:
        y = die funktion
        print x, y
        x = x + sw
Und warum tippst Du's nicht ganz einfach so ein? Ok, die funktion muss man noch ersetzen, aber ansonsten ist das das fertige programm!
Zuletzt geändert von mawe am Donnerstag 8. September 2005, 21:13, insgesamt 1-mal geändert.
XT@ngel
User
Beiträge: 256
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Donnerstag 8. September 2005, 21:13

Also ich hab folgendes:

Code: Alles auswählen

x=-4.5 / y=50.11875
x=-4.0 / y=32.0
x=-3.5 / y=19.29375
x=-3.0 / y=10.8
x=-2.5 / y=5.46875
x=-2.0 / y=2.4
x=-1.5 / y=0.84375
x=-1.0 / y=0.2
x=-0.5 / y=0.01875
x=0.0 / y=0.0
x=0.5 / y=-0.00625
x=1.0 / y=0.0
x=1.5 / y=0.16875
x=2.0 / y=0.8
x=2.5 / y=2.34375
x=3.0 / y=5.4
x=3.5 / y=10.71875
x=4.0 / y=19.2
x=4.5 / y=31.89375
x=5.0 / y=50.0
x=5.5 / y=74.86875
müsste stimmen, wenn nicht :oops:
Gast

Donnerstag 8. September 2005, 21:23

nicht ganz mawe. er hat erst die funktion und dann while.
ich weiß ja nich ob das irgendwie relevant ist, aber.. naja.. also ich krieg irgendwie nie die lösung...also so wie du, XT@ngel :oops: :cry: :?
Gast

Donnerstag 8. September 2005, 21:27

Jo hab grad festgestellt das ich die Formel falsch hab....
hab die von mawe 1 zu 1 kopiert ohne dein post zu lesen :D
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Donnerstag 8. September 2005, 21:31

Ja, das ist schon relevant.

Code: Alles auswählen

def wertetabelle(a, b, sw):
    x = a
    y = die funktion
    while  x <= b:
        print x, y
        x = x + sw 
Hier wird y nur einmal berechnet, nämlich für den Startwert a.
Wenn Du's innerhalb der while Schleife schreibst, wird's für jeden x-Wert neu berechnet, und so solls ja sein ;)
So, und damit der Abend doch noch erfolgreich endet, hier die Lösung:

Code: Alles auswählen

def wertetabelle(a, b, sw):
    x = a
    while  x <= b:
        y = 0.1*x**4 - 0.1*x**3 - 2.4*x**2 + 0.4*x + 8
        print x, y
        x = x + sw 

wertetabelle(-4.5, 5.5, 0.5)
Antworten