Seite 3 von 4
Verfasst: Mittwoch 14. April 2010, 07:51
von BlackJack
So könnte man es in Io ausdrücken:
Code: Alles auswählen
#!/usr/bin/env io
toSubtract := Map clone
File clone openForReading("test2.txt") do(
foreachLine(line,
parts := line split
toSubtract atPut(parts first, parts last asNumber)
)
close
)
File clone openForReading("test.txt") do(
foreachLine(line,
(line findSeq("Figur:") == 0) ifTrue(
parts := line split
name := parts at(1)
value := parts at(2) asNumber
line = parts atPut(2, value - toSubtract at(name)) join(" ")
)
line println
)
close
)
Verfasst: Mittwoch 14. April 2010, 08:06
von Hyperion
shuang hat geschrieben:Von meinem Kumpel ist es vorgegeben, weil wir ein Spiel spielen und das Spiel programmieren wollen. Er wollte das so, also mach ich es so
Zum Programmieren gehört auch, dass man schlechte Entwürfe überdenkt und ggf. wegwirft! Nur weil Dein Kumpel keine Kenntniss von sinnvollen Standard Formaten hat, bedeutet das ja nicht, dass man sich an solchen Problemen festbeißen muss.
Wieso eigl, ist die Problematik so sehr komplex?
Ist sie nicht. Man kann das auch recht einfach so parsen - aber wozu?
Wie kann man die Aufgabe in 4Min lösen ??

So:
Script
Data File
Nutzt doch einfach ein Standard Format für alle ausgelagerten Flat File Daten. Dann spart Ihr Euch beim Parsen viel Arbeit!
Verfasst: Mittwoch 14. April 2010, 11:24
von shuang
Danke für die Hilfe bisher, doch die optimale Lösung habe ich immernoch nicht.

Könnt ihr mir bitte zeigen, wenn es eigl doch recht einfach ist dies in der Form zu parsen. Wie ich das durchzuführen habe.
Im ersten Text:
-----------------
Name: Peter
Figur: Bettler 4
Name: Guenther
Figur: Truil 10
Name: Clark
Figur: Brotlexa 38
Text2:
-------------------
Bettler 2
Truil 3
Brotlexa 8
------------------
die Werte aus Text 2 werden im Text1 subtrahiert.
Ergebnis
Name: Peter
Figur: Bettler 2
Name: Guenther
Figur: Truil 7
Name: Clark
Figur Brotlexa 30
Verfasst: Mittwoch 14. April 2010, 11:49
von Hyperion
shuang hat geschrieben:Danke für die Hilfe bisher, doch die optimale Lösung habe ich immernoch nicht.
Was stört Dich an meiner Lösung?
Verfasst: Mittwoch 14. April 2010, 12:11
von shuang
@ Hyperion. Das Problem ist einfach das ich die Werte nicht verändern kann. Oder mache ich da was falsch?
Verfasst: Mittwoch 14. April 2010, 12:23
von gkuhl
@Shuang: Zeige uns doch bitte deinen Code und sag uns dann wo genau es hängt. In diesem Forum wird dir keiner eine Komplettlösung posten. Sonst können wir auch gleich mit deinem Kumpel in Kontakt treten und mit ihm an seinem Spiel arbeiten. Du wärst dann natürlich raus aus dem Team.
Verfasst: Mittwoch 14. April 2010, 13:54
von shuang
Das Problem habe ich mehrmals geschildert
Datei 1
Datei 2
Date3 = Datei 1(werte) - Datei 2(werte)
Im Grunde ist das alles.

Verfasst: Mittwoch 14. April 2010, 15:28
von BlackJack
@shuang: Das zu generelle zu lösende Problem haben wir mittlerweile verstanden. Die Frage war nach den *konkreten* Problemen mit *Deinem* Quelltext und wie der aussieht.
Oder halt was Du gegen bessere Alternativen hast. Wenn das keine Hausaufgabe ist, dann steht auch das Datenformat zur Debatte.
Verfasst: Mittwoch 14. April 2010, 15:31
von jerch
shuang hat geschrieben:Das Problem habe ich mehrmals geschildert
Datei 1
Datei 2
Date3 = Datei 1(werte) - Datei 2(werte)
Im Grunde ist das alles.

Um das so umzusetzen, könntest Du Du die Klasse 'file' ableiten und `__sub__()` implementieren
Code: Alles auswählen
class MyFile(file):
def __sub__(self, other):
# hier passiert die Magie der "Dateisubtraktion"
return neues_dateiobjekt # Datei3
Warum ignorierst Du die Hinweise der anderen, das Datenformat zu ändern, wenn Du doch eigentlich dazu in der Lage wärst? (Hausaufgabe noch nicht fertig?

) Das empfiehlt Dir keiner, um Dich zu ärgern, sondern weil es gute Gründe dafür gibt.
Achtung, die obige Sache mit der Dateisubtraktion ist nur Spass
Verfasst: Mittwoch 14. April 2010, 18:49
von shuang
Im Grunde brauche ich den Code von Gkuhl , dass leider nur als Fortran Code existiert. Sein Ergebnis steht auf Seite 3.

Verfasst: Mittwoch 14. April 2010, 19:19
von BlackJack
@shuang: Im Grunde müsstest *Du* das dann einfach mal schreiben was Du brauchst. Es sieht nicht so aus als würde das jemand anderes für Dich machen. Zumindest nicht in Python.

Verfasst: Mittwoch 14. April 2010, 19:55
von shuang
*lol*
Alle antworten die ich erhalten habe, sagen aus, dass es so leicht sei

Doch keiner kann es so schnell lösen

.
Ich möchte sehen wie sich eie Wert aus einer Datei 1 durch das Wert in einer 2ten Datei verändert werden kann.
Verfasst: Mittwoch 14. April 2010, 20:42
von cofi
shuang hat geschrieben:*lol*
Alle antworten die ich erhalten habe, sagen aus, dass es so leicht sei

Doch keiner kann es so schnell lösen

.
Und wie kommst du darauf, dass wir dein Problem loesen muessten nur weil es leicht ist?
Verfasst: Mittwoch 14. April 2010, 21:19
von BlackJack
@shuang: Ich hab's schon längst gelöst. Bevor ich's in Io angegangen bin. War wirklich ganz leicht und schnell implementiert.
Verfasst: Mittwoch 14. April 2010, 21:45
von shuang
Versteh ich grad nicht? Wieso seh ich dann dein Lösungsweg nicht @ Blackjack

?
Verfasst: Mittwoch 14. April 2010, 21:54
von Leonidas
shuang hat geschrieben:Versteh ich grad nicht? Wieso seh ich dann dein Lösungsweg nicht @ Blackjack

?
Na weil das deine Aufgabe ist, nicht unsere. Netter Versuch eine fertige Lösung zu erbetteln, aber darauf fällt nach vier Seiten Thread keiner mehr rein.
Verfasst: Mittwoch 14. April 2010, 21:55
von jbs
weil du es selber versuchen sollst
verdammt zu spät
Verfasst: Mittwoch 14. April 2010, 22:07
von shuang
Wieso erbetteln?
Ich komm mit der Problematik nicht klar

Wenn ihr die Lösung verstecken wollt. Na Bitte. Viel Spass.
Ich kann eben nocht nicht so toll programmieren.
:K :K :K :K :K
Verfasst: Mittwoch 14. April 2010, 22:25
von Sr4l
Bisher hast du einfach nur das Problem code los beschriebene.
bla1.txt hat geschrieben:Name: Peter
Figur: Bettler 4
Name: Guenther
Figur: Truil 10
Name: Clark
Figur: Brotlexa 38
bla2.txt hat geschrieben:Bettler 2
Truil 3
Brotlexa 8
Code: Alles auswählen
with open("bla1.txt") as f:
for line in f:
if line.startswith("Figur:"):
figur1, zahl1 = line.split()[1:]
handle = open("bla2.txt")
for line2 in handle:
figur2, zahl2 = line2.split()
if figur1 == figur2:
zahl1 = int(zahl1) - int(zahl2)
handle.close()
print "Figur: {0} {1}".format(figur1, zahl1)
else:
name = line.split()[1]
print "Name: {0}".format(name)
Ich habe zwar keine Ahnung was das soll, und es gibt sicher 20bessere Lösungen für das Problem, aber du kannst es ja einfach übernehmen und gut ist, bei deiner nächsten Frage, zeigst du dann mehr Eigeninitiative ok?

Verfasst: Mittwoch 14. April 2010, 22:35
von BlackJack
@Sr4l: Davon träumst aber wohl nur dass das jetzt den OP zur Eigeninitiative motivieren wird.
@shuang: Es ist ja kein Problem nicht so toll programmieren zu können. Es zwingt Dich ja auch keiner dazu. Aber wenn Du es lernen möchtest, dann musst Du halt auch etwas dafür tun. Und immer wider stur die Aufgabenstellung wiederholen ist eben betteln nach einer fertigen Lösung.