ich habe mir vor diesem Post die Regeln und die Warnung für Studenten durchgelesen... Leider muss ich dieses Thema eröffnen, da ihr unsere einzige Hoffnung seid.
Wir sind Maschinenbauer im 3. Semester und schreiben morgen Einführung in die Informatik. Unser Prof hat uns eine Probeklausur gegeben die wir lösen sollen. ( Ich bitte die Administratoren dieses Thema bitte zu lassen vl kann uns jemand helfen...)
Hier die erste Aufgabe:
In einem vollständigen Python-Programm ist folgende Messreihenauswertung zu programmieren:
- Es ist eine Funktion zu schreiben, an die eine Liste reeller Messwerte zu übergeben ist. In der Funktion ist aus den Messwerten z; i=0, ... , n-1; die in der Mathematischen Statistik wesentliche Kennzahl
hm = sqrt 1/n*(z[0]hoch 2 + z[1]hoch2 + ... + z[n-1]hoch2)
(der ganze Ausdruck ist unter einer Wurzel!)
zu ermitteln. Benutzen Sie für die Quadratwurzel die im Modul math enthaltene Funktion sqrt(x), wobei sowohl das Funktionsresultat als auch das Argument x vom Typ float sind.
Das ermittelte Resultat hm ist an das aufrufende Programm zurückzugeben. In der Funktion ist nicht mit globalen, sondern nur mit lokalen Variablen zu arbeiten.
- In einem Testrahmen (als Hauptprogramm) ist zunächst eine Liste reeller Werte einzulesen. Dabei sei die Anzahl der Messwerte dem Nutzer bekannt und kann zuerst eingelesen werden (Bedingung: 3 <=
Anzahl <= 300). Die Eingabe der Anzahl ist zu wiederholen, solange diese Bedingung verletzt wird (mehrfache Fehleingaben sind nicht auszuschließen). Danach sind die reellen Messwerte mit
Eingabedialog und ohne Eingabefehlerprüfung einzulesen.
Im Testrahmen ist außerdem zu ermitteln, wie viele der eingelesenen Messwerte in das offene Intervall (1, 34.5) fallen, und das Resultat auszugeben.
Schließlich ist die oben erklärte Funktion aufzurufen. Nach der Rückkehr aus dieser Funktion ist das dort ermittelte Resultat hm mit genau 4 Stellen nach dem Dezimalpunkt auszugeben.
Unser Lösung:
Code: Alles auswählen
if__name__==`__main__`
n=input("Anzahl der reellen Werte (0<=n<=300):")
while n<3 or n> 300:
n=input ("Fehler: Noch einmal:")
z[]
anz=0
for i in range (n):
print "z[%i]=" %(1+i),
z.append(input())
if z[i] > 1 and z[i]< 34.5:
anz=anz+1
print "In das Intervall fallen", anz "Werte"
res=func(z)
print "hm=%.4f" %res
def func(z):
import math
hm = 0
n=len(z)
for i in range (n):
hm=hm+z[i]*z[i]
hm=math.sqrt(1.0/n*hm)
return hm
- Es ist eine Funktion zu schreiben, an die eine Liste reeller Messwerte zu übergeben ist. In der Funktion ist die Anzahl der positiven Werte (>0) in der übergebenen Liste zu ermitteln. Außerdem ist aus
den Messwerten y[k]; k=0, ... , m-1; der Funktionswert
f= 2/m * Σ (y[k]hoch3 - y[k])
Summe von k=0 bis m-1
zu bestimmen. Nutzen Sie für die Potenz a hoch b die im Modul math enthaltene Funktion pow(a ,b), wobei a, b und die Potenz vom Typ float sind.
Die ermittelte Anzahl und das Resultat f sind an das aufrufende Programm zurückzugeben. In der Funktion ist nicht mit globalen, sondern nur mit lokalen Variablen zu arbeiten.
- In einem Testrahmen (als Hauptprogramm) ist zunächst eine Liste reeller Werte einzulesen. Dabei sei die Anzahl der Messwerte dem Nutzer nicht bekannt. Als Endeerkennungszeichen ist der Wert 5000.0
zu verwenden (es kann vorausgesetzt werden, dass aus physikalischen Gründen alle Listenwerte kleiner als 5000.0 sind). Die Messwerte sind mit Eingabedialog und ohne Eingabefehlerprüfung einzulesen.
Schließlich ist die oben erklärte Funktion aufzurufen. Nach der Rückkehr aus dieser Funktion sind die beiden zurückgegebenen Resultate auszugeben, der Funktionswert f dabei mit genau 2 Stellen nach
dem Dezimalpunkt.
Aber mit dieser Aufgabe kommen wir nicht weiter da wir weder in der Übung noch in der Vorlesung eine Aufgabe mit Enderkennungszeichen hatten!
Es wäre echt super wenn uns jemand eine Python Funktion für diese Aufgabe posten könnte!
MFG
Christopher