Frage von hahoi, 24

Was mache ich bei dieser Pythonprogrammierung falsch?

Ich soll mittels des Moduls matplotlib die Bahnkurve einer Kugel anzeigen: (bitte verzeiht dass der Text nicht formatiert ist) zn= 2.45 #Anfangshöhe vn= 14.0 #Anfangsgeschwindigkeit g= 9.81 #Fallbeschleunigungskonstante alpha=math.asin(vn/(math.sqrt(2(vnvn+gzn)))) #Abwurfwinkel x=[] ; z=[] for i in range (1000): x.append(int(i/24)) z.append((-gxx(1+(math.tan(alpha)math.tan(alpha))))/(2vnvn)+xmath.tan(alpha)+zn)

plt.title("Bahnkurve der Kugel") plt.xlim(0, 25) plt.ylim(0, 15) plt.xlabel ("Weite x") plt.ylabel ("Höhe z") plt.plot(z,x) plt.show()

aber wenn ich es ausführe kommt immer:

File "C:/Users/matth/Downloads/bahnkurve.py", line 16, in z.append((-gxx(1+(math.tan(alpha)math.tan(alpha))))/(2vnvn)+x*math.tan(alpha)+zn)

TypeError: can't multiply sequence by non-int of type 'float' ich hab schon die Potenzen ausgeschrieben weil vorher was kam dass die es nicht potenzieren kann.

Antwort
von Lumpi101, 9

Erstmal als ersen: ss fehlen sämtliche Multiplikationszeichen (in Python: *) in den Formeln (vllt. ist das auch nur durch das Kopieren passiert...)

Die for-Schleife würde ich folgendermaßen umbauen:

for i in range(0.0, 25.0, 0.01):

    x.append(i)

    z.append([Formel])

[Formel] ist dabei die gleiche Formel wie bei dir ABER statt die x's in der Formel muss i (also die Laufvariable der Schleife) eingesetzt werden!!

Versuch es dann nochmal. Ich erhebe keinen Anspruch darauf, alle Fehler im Quelltext gefunden zu haben ;)

Kommentar von ralphdieter ,

ss fehlen sämtliche Multiplikationszeichen

Beim Verfassen der Frage läuft noch der alte Editor. Dort wird mit *text* kursiv formatiert. Das lässt sich kaum verhindern, wenn man diese Formatierung nicht kennt :-(

Antwort
von ralphdieter, 4
- g*x*x*(1+tan(alpha)*tan(alpha)) / (2vn*vn)
+ x*tan(alpha)+zn

TypeError: can't multiply sequence by non-int of type 'float'

x ist eine Liste. Du kannst sie nur mit einem Integer multiplizieren: [1, 2, 3] * 2 --> [1, 2, 3, 1, 2, 3]

Wahrscheinlich meinst Du den Vorgängerwert x[-1]. Allerdings darfst Du dann nicht mit leeren Listen anfangen. Versuch's mal mit:

 x=[0.], z=[zn]
Antwort
von gilgamesch4711, 11

 Von dieser gefic kten Sprache habe ich noch nie gehört - " für Was " soll DIE denn gut sein?

   Mal ganz blöd gefragt; ===> Fortran ist ja ===> Generic . du bekommst immer

   " Integer * Float = float "

  ( Floating Point ist quasi " dominant " )  Und zwar gilt das für AUSDRÜCKE , nicht nur für Variablen.

   Nun ist mir nicht gänzlich neu, dass es Sprachen gibt wie Pascal und C , die das grade nicht können. Gestatte die Frage: Wo treten in einer Wurfparabel denn Integers auf? Vielleicht ließe sich das ja vermeiden.

   Das viel geschmähte Fortran kennt etwas Weiteres, was keine Sprache einschließlich Basic anerkennt: die IMPLICIT Anweisung; ich kann ihm sagen REAL O - R ; COMPLEX S - Z  . Auch so ein Ding; keine Sprache kann komplex ...

Kommentar von Lumpi101 ,

Python kann komplex

Keine passende Antwort gefunden?

Fragen Sie die Community