Print Befehl ohne Zeilenumbruc < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Hallo,
weiß jemand, wie ich in Mathematica einen Print Befehl ausführe, ohne dass dabei eine neue Zeile am Ende erzeugt wird?
Beispiel:
For[i = 1, i < 5, i++,
{
Print[i,","];
}]
Ausgabe:
1,
2,
3,
4,
Gewollt:
1,2,3,4,
Das letzte Zeichen Löschen durch [mm] \b [/mm] wird von Mathematica nicht unterstützt. Oder kennt jemand eine andere Methode, um Printbefehle in Schleifen zu umgehen? Also erst in einer Schleife alles berechnen lassen und anschließend mit einem Print das Ergebnis anzeigen lassen?
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Vielen Dank schonmal
|
|
|
|
Moin,
warum genau benoetigst du denn eine For-Schleife?
Table[i, {i, 5}]
erstellt dir doch deine Liste von Zahlen und gibt sie dir auch noch aus.
Cheers
Patrick
|
|
|
|
|
Ja klar, so geht das auch. Aber wenn ich einen Table printe, dann habe ich außen rum immer die geschweiften Klammern. Ausserdem wüsste ich auf Anhieb nicht, wie ich einen Table erstelle, sodass ich beliebigen Text zwischen den einzelnen Zahlen habe (beispielsweise Text, was für eine Gleichung ich gerade ausgerechnet habe). Mit einem Print einzelner Ergebnisse in einer For Schleife lässt sich dies wesentlich einfacher realisieren.
|
|
|
|
|
Moin,
wie siehts denn mit
Print @@ Table[ToString[i] <> " ", {i, 5}]
oder
StringJoin @@ Table[ToString[i] <> " ", {i, 5}]
oder wenn du nur was ausgeben willst mit
Table[ Print @@ {"Die ", i, "te Quadratzahl ist ", i^2}, {i, 5}];
oder wenn du das Ergebnis auch brauchst mit
erg = Table[ Print @@ {"Die ", i, "te Quadratzahl ist ", i^2}; {i, i^2}, {i, 5}]
aus?
Cheers
Patrick
|
|
|
|
|
Hallo,
vielen Dank, so passt es fast. Aber kann man die Lösung
Table[ Print @@ {"Die ", i, "te Quadratzahl ist ", [mm] i^2}, [/mm] {i, 5}];
so modifizieren, dass das Table innerhalb des Prints steht? So entsteht wieder eine neue Zeile. So wie ich Print und Table vertauscht habe, kommt keine gescheite Ausgabe heraus (was eigentlich auch nicht verwunderlich ist).
Print @@ Table[{"Die ", i, "te Quadratzahl ist ", [mm] i^2}, [/mm] {i, 5}];
Ausgabe:
{Die ,1,te Quadratzahl ist ,1}{Die ,2,te Quadratzahl ist ,4}{Die ,3,te Quadratzahl ist ,9}{Die ,4,te Quadratzahl ist ,16}{Die ,5,te Quadratzahl ist ,25}
Gibt es eine Möglichkeit, die , und {} beim Table zu entfernen? @@@ liefert wieder eine Ausgabe, bei der zwar die überflüssigen Zeichen verschwinden, jeder Text aber auch einer neuen Zeile beginnt.
Warum gibt es nicht einfach eine Option bei Print, keinen Zeilenumbruch zu erzeugen?...
|
|
|
|
|
Moin,
machen wir es mal Schritt fuer Schritt.
Table[{"Die ", i, "te Quadratzahl ist ", i^2, " --- "}, {i, 5}] liefert dir eine Liste in der jedes Element wieder eine Liste ist. Darin hast du jetzt unterschiedliche Datentypen. Zum einen ist "Die " ein String, i ist eine Zahl, usw.
Richtigerweise muesstest du dir aus diesem Misch einen zusammenhaengenden String machen, den du dann ausgeben kannst. Das gute an Print ist aber, dass es bei einem Aufruf Print["blub",4,"bla"] zum einen alle Werte in Strings umwandelt, die noch keine sind. Zum anderen printet es alle Sachen nebeneinander und macht dann einen unumgaenglichen Zeilenumbruch.
Mit diesem Wissen haettest du dein Problem schon loesen koennen. Dein Problem ist, dass deine Liste wieder Listen enthaelt. Das kann man ganz einfach weg machen, indem die verschachtelte Liste mit Flatten flachklopft.
Print @@ Flatten[ Table[{"Die ", i, "te Quadratzahl ist ", i^2, " --- "}, {i, 5}]]
erzeugt demzufolge das, was du willst.
Cheers
Patrick
|
|
|
|
|
Ok, vielen Dank! Der Befehl Flatten war mir noch nicht bekannt. Klappt alles, danke für dein Bemühen!
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:12 Mi 21.04.2010 | Autor: | Peter_Pein |
1: | For[i = 1, i < 5, i++,
| 2: | WriteString[$Output, i, ","]
| 3: | ] |
war keine Option?
Gruß,
Peter
|
|
|
|
|
Für das nächste Mal ist sie eine :D Dankeschön.
Ich habe leider noch nicht lange genug mit Mathematica Erfahrungen sammeln können. Viele Befehle sind mir noch unbekannt.
|
|
|
|