Python (sparse-)Vektoren < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Halli hallo,
ich soll in Python ein Programm schreiben, bei dem mit sparse-Vektoren gerechnet wird. Erst mal vorweg: mein Problem ist, dass ich Python nicht gelernt habe, nur ein wenig Java (nur Grundkenntnisse, Strings ausgeben usw.) und mir deshalb alles irgendwie aus dem Internet/ aus Büchern zusammensuchen muss.
Wie schon geschrieben, soll ich eine Klasse implementieren, deren Objekte sparse-Vektoren sind, die Werte der Vektoren sollen Gleitkommazahlen sein. Vom Nutzer sollen zwei Vektoren und ein Skalar eingelesen werden, damit soll dann gerechnet werden (+, -, Skalarprodukt, zwei versch. Normen und skalare Multiplikation) und zum Schluss sollen die Ergebnisse und die eingelesenen Vektoren ausgegeben werden. Die Vektoren einmal komplett, also mit Nullen, und einmal als sparse-Vektor, also ohne Nullen.
Das Paket scipy.sparse dürfen wir NICHT benutzen.
Ich habe jetzt direkt Probleme dabei, die Vektoren einzulesen. Der Eingabebefehl wäre doch raw_input("bla bla") !? Kann ich den Befehl auch für Vektoren nutzen? In welcher Form müsste ich die dann eingeben? Mit Leerzeichen, Kommas, Klammern,...??
Brauche dringend Hilfe, bin schon seit Tagen mit dem Programm am verzweifeln. Ich hoffe hier gibt es ein paar Python-Spezialisten.
Danke schon mal.
Grüße Kasperkopf
|
|
|
|
Hallo!
Eigentlich hat Python zumindest einen geeigenten Datentypen schon eingebaut. In C++ nennt man das Pair, in Python Map oder Mapping.
Da kann man dann einfach
a[5]=3.141
a[12]=2.2728
etc.
einfach hin schreiben. Allerdings fehlen noch die gewünschten Rechenoperationen. Aber damit hast du zumindest schonmal das Konstrukt, um den Vektor abzulegen.
Zu deiner eigentlichen Frage: raw_input() ist vergleichbar mit getline in C. Das heißt, python wartet, daß du ENTER drückst, und gibt alles andere, was du zuvor eingetippt hast, als String zurück. Warum probierst du es nicht ganz simpel aus:
x=raw_input()
print x
|
|
|
|
|
Hallo,
erst mal danke für deine Antwort. Aber ich glaube du hast mein(e) Aufgabe/Problem nicht richtig verstanden. Ich kann die Werte wie
> a[5]=3.141
> a[12]=2.2728
eben nicht einfach hinschreiben. Wenn jemand das Programm benutzt, dann soll derjenige zwei beliebige Vektoren und ein Skalar eingeben können, die ihm gerade gefallen und mit denen er rechnen möchte. Also ich kann die Werte nicht vorher festlegen. Deshalb war meine Frage, ob ich die Vektoren auch mit raw_input() einlesen lassen kann oder dafür etwas anderes benutze muss, bzw. wenn es mit raw_input funktioniert wie muss man es dort eingeben??
Zum Beispiel:
Skalar eingeben:
raw_input("Bitte ein Skalar eingeben") ... Fenster öffnet sich, Eingabe: 7
Vektor eingeben: keine Ahnung, wie das funktioniert!!!!
raw_input("Bitte Vektor v eingeben") ... Fenster öffnet sich, Eingabe: ??? (1,2,3) oder 1 2 3 oder [1 2 3] oder ???
Also:
Kann ich einen Vektor mit raw_input einlesen und wenn ja in welcher Form muss ich den in das geöffnete Eingabefenster eingeben??? Wenn nein, wie kann ich den dann einlesen???
Ich hoffe mein Problem ist jetzt etwas klarer und dass mir jemand helfen kann.
Danke schon mal.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:34 So 04.05.2014 | Autor: | felixf |
Moin,
> Kann ich einen Vektor mit raw_input einlesen und wenn ja
> in welcher Form muss ich den in das geöffnete
> Eingabefenster eingeben??? Wenn nein, wie kann ich den dann
> einlesen???
du kannst mit raw_input nur Strings einlesen. Aber man findet im Internet schnell viele Hinweise, wie man z.B. Listen aus Strings herauslesen kann, siehe z.B. hier. Bei der akzeptierten Loesung musst du einfach int durch float ersetzen, und schon hast du eine Moeglichkeit den Benutzer bequem Listen mit Fliesskommaeintraegen eingeben zu lassen.
LG Felix
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:28 Mo 05.05.2014 | Autor: | Kasperkopf |
Hallo Felix,
danke für den Link. Ich hatte immer nur Sachen gefunden, wie Vektoren implementiert werden, bei denen die Werte vorgegeben sind. Ich werd die Sachen von da mal ausprobieren.
Grüße
|
|
|
|