x y^^
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Oh maaan, das war IRONIE!
Das lasse ich mir nicht vorwerfen. Ich habe mich für dieses Jahr schon einmal geduscht!BlackJack hat geschrieben:Oha, ich glaube wir sind wieder mal kurz davor uns für's nicht-duschen rechtfertigen zu müssen.
Das Leben ist wie ein Tennisball.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Es ging um ein "b" in Zeile 30 oder so ... da finde ich aber nix
könnte man übersichtlicher so schreiben:
Wobei die Namen nicht PEP8konform sind! Das gilt aber für fast alles in Deinem Cde -> daran solltest Du arbeiten!
Für das Zusammenbauen von Pfaden sollte man os.path.join() verwenden.
Du hast da unheimliche viele gleichartige Dateioperationen drin. Evtl wäre es besser das in eine Funktion zu packen (Übergabeparameter: Dateiname, Rückgabe: Dateiinhalt) und die dann mit with oder try ... except abzusichern.
"Rechnungsnummer1()" ist mal kein guter Funktionsname. Was soll der aussagen?
In dieser Funktion bindest Du den Inhalt der Datei an eine Variable count. Das suggeriert, dass Du eigentlich irgend eine Größe (Anzahl Zeichen, Anzahl Zeilen, usw) haben möchtest! Das hast Du aber nicht!
Wieso verwendest Du global? Übergib den Funtkionen doch einfach die Werte als Parameter! Ist doch viel einfacher und um so viel besser bei der Strukturierung.
Die "Menüführung" ist ein wenig ... naja. Bei dem prompt "Anzahl Pflanzen" erwarte ich nicht, dass ein "Ende" (muss auch noch ausgeschrieben und case sensitiv sein!), das Programm beendet. wohl gemerkt "beendent", da danach ja noch irgend eine Dateimanipulation stattfindet. Ich würde das User Interface da besser kapseln und zugänglicher machen. Gegen TUIs ist ja nichts einzuwenden, aber man kann die auch komfortabler gestalten
Dazu kommt der Code auf Modulebene. Mach den weg und trenne den Ablauf mehr von der Eingabe, dann wirds auch irgend wie handlicher. (Und auch ggf. für Testfälle einfacher -> Funktion schreiben, die ohne Eingabe die einzelnen Schritte druchläuft!)
Generell wären ein paar mehr Infos nicht schlecht:
- Welches Problem genau löst dein Programm?
- Wie sehen die Dateien aus? (Format!)
- Ist das Dateiformat vorgegeben?
So könnte man Dir bessere Tipps hinsichtlich des Aufbaus und ggf. guter Libs geben!
Code: Alles auswählen
SchreibenP = AnzahlPflanzen
SchreibenP = AnzahlPflanzen + str(Pflanze)+"\n"
Code: Alles auswählen
SchreibenP = " ".join([AnzahlPflanzen, str(Pflanze), "\n"])
Für das Zusammenbauen von Pfaden sollte man os.path.join() verwenden.
Du hast da unheimliche viele gleichartige Dateioperationen drin. Evtl wäre es besser das in eine Funktion zu packen (Übergabeparameter: Dateiname, Rückgabe: Dateiinhalt) und die dann mit with oder try ... except abzusichern.
"Rechnungsnummer1()" ist mal kein guter Funktionsname. Was soll der aussagen?
In dieser Funktion bindest Du den Inhalt der Datei an eine Variable count. Das suggeriert, dass Du eigentlich irgend eine Größe (Anzahl Zeichen, Anzahl Zeilen, usw) haben möchtest! Das hast Du aber nicht!
Wieso verwendest Du global? Übergib den Funtkionen doch einfach die Werte als Parameter! Ist doch viel einfacher und um so viel besser bei der Strukturierung.
Die "Menüführung" ist ein wenig ... naja. Bei dem prompt "Anzahl Pflanzen" erwarte ich nicht, dass ein "Ende" (muss auch noch ausgeschrieben und case sensitiv sein!), das Programm beendet. wohl gemerkt "beendent", da danach ja noch irgend eine Dateimanipulation stattfindet. Ich würde das User Interface da besser kapseln und zugänglicher machen. Gegen TUIs ist ja nichts einzuwenden, aber man kann die auch komfortabler gestalten
Dazu kommt der Code auf Modulebene. Mach den weg und trenne den Ablauf mehr von der Eingabe, dann wirds auch irgend wie handlicher. (Und auch ggf. für Testfälle einfacher -> Funktion schreiben, die ohne Eingabe die einzelnen Schritte druchläuft!)
Generell wären ein paar mehr Infos nicht schlecht:
- Welches Problem genau löst dein Programm?
- Wie sehen die Dateien aus? (Format!)
- Ist das Dateiformat vorgegeben?
So könnte man Dir bessere Tipps hinsichtlich des Aufbaus und ggf. guter Libs geben!
das gilt natürlich nicht für alle die meisten hier haben warscheinlich abi studieren informatik und sind einfach nur hilfsbereit
und wenn der kommentar wäre
"Man sieht du bist ein Anfänger das kann man so und so auch flexibler machen" dann wäre alles okay aber "Wir werden alle Sterben" ist keine ironie allenfalls eine nicht witzige Srakastische anmerkung wobei ich was für schwarzen humor habe
Ich kriege jetzt demnächst eine original rechnung von ihm (Raed) dann weiß ich wie ich es aufbau
Mein ziel ist es ein programm zu schreiben was eine rechnung schreibt
mein Problem ist das der Rechnungsaufbau in etwa so aussehen soll
und ich es nur so hinkriege
und wenn der kommentar wäre
"Man sieht du bist ein Anfänger das kann man so und so auch flexibler machen" dann wäre alles okay aber "Wir werden alle Sterben" ist keine ironie allenfalls eine nicht witzige Srakastische anmerkung wobei ich was für schwarzen humor habe
Ich kriege jetzt demnächst eine original rechnung von ihm (Raed) dann weiß ich wie ich es aufbau
Mein ziel ist es ein programm zu schreiben was eine rechnung schreibt
mein Problem ist das der Rechnungsaufbau in etwa so aussehen soll
Code: Alles auswählen
Anzahl Blume Kosten
10 Tulpe 3.5€
3 Geranie 1.5€
Code: Alles auswählen
Anzahl Blume Kosten
10 Tulpe 3.5€
3 Geranie 1.5€
100000 Gänseblume 10000€
also das die abstände zwischen den einzelnen spalten sich nicht verändern
Ziel der Woch: ohne Hände und Füße kommunizieren
Wir wissen aber immer noch nicht, WIE die Daten denn ausgegeben werden. Du schreibst nur, dass du es nicht hinbekommst, aber WIE und WO gibst du die Daten aus? In der Konsole? Auf einem Fenster (wenn ja, welches Toolkit)?
Wenn's die Konsole ist:
http://www.python.org/doc/2.5.2/lib/module-pprint.html
Wenn's die Konsole ist:
http://www.python.org/doc/2.5.2/lib/module-pprint.html
Gruß!
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Also das bringt uns doch schon ein bisschen weiter!
Ich will Dir jetzt nicht die Laune verderben, aber diese Ausgabe sollte Dein kleinstes Problem sein
Grundsätzlich fehlt Dir doch eine grundlegende Datenstruktur! Wie speicherst Du einzelne Datensätze (also eine Zeile?) Woher nimmst Du den Preis für eine "Blume"? Wie kannst Du dann die Endwerte (Summe, MwSt und beides als Summe) berechnen?
Das sind imho die grundlegenden Fragen, die man sich stellen muss!
Danach kommt dann sicherlich die Frage, wie das ganze ausgegeben werden soll. Will man ein PDF oder doch eine besser manipulierbare Datei? Oder das ganze doch eher Datenbank basiert?
Ich würde bei so etwas sicherlich zu Datenbanken greifen. Das macht die Verwaltung der Daten relativ einfach und ermöglicht darüber hinaus auch noch später schöne Statistiken.
Als Ausgabe bietet sich imho OO.org an. Wenn man seine Rechnungen sowieso noch mit allem Piff und Paff wie Logo, Anschrift usw. nach DIN-Norm verpacken will, ist ja "nur" der eigentliche Rechnungs-Inhalt dynamisch. Diesen kann man dann sicherlich per Templating dann einsetzen - oder das ganze per CVS-Import realisieren.
Aber um auf deine Frage zurückzukommen:
http://docs.python.org/library/stdtypes ... operations
Ich will Dir jetzt nicht die Laune verderben, aber diese Ausgabe sollte Dein kleinstes Problem sein
Grundsätzlich fehlt Dir doch eine grundlegende Datenstruktur! Wie speicherst Du einzelne Datensätze (also eine Zeile?) Woher nimmst Du den Preis für eine "Blume"? Wie kannst Du dann die Endwerte (Summe, MwSt und beides als Summe) berechnen?
Das sind imho die grundlegenden Fragen, die man sich stellen muss!
Danach kommt dann sicherlich die Frage, wie das ganze ausgegeben werden soll. Will man ein PDF oder doch eine besser manipulierbare Datei? Oder das ganze doch eher Datenbank basiert?
Ich würde bei so etwas sicherlich zu Datenbanken greifen. Das macht die Verwaltung der Daten relativ einfach und ermöglicht darüber hinaus auch noch später schöne Statistiken.
Als Ausgabe bietet sich imho OO.org an. Wenn man seine Rechnungen sowieso noch mit allem Piff und Paff wie Logo, Anschrift usw. nach DIN-Norm verpacken will, ist ja "nur" der eigentliche Rechnungs-Inhalt dynamisch. Diesen kann man dann sicherlich per Templating dann einsetzen - oder das ganze per CVS-Import realisieren.
Aber um auf deine Frage zurückzukommen:
http://docs.python.org/library/stdtypes ... operations
Wenn ich das alles so lese, frage ich mich, wer ist eigentlich der Laie?Crackus hat geschrieben:ich schreibe aber wirklich für laien (also leute die mich weniger als 5 jahre kennen) ziemlich unverständlich aber ich arbeite dran^^
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich bin vermutlich noch von der alten Schule aber bei sowas fällt mir eher LaTeX als OOo ein Dort gibt es sicherlich auch schon fertige Rechnungsklassen, wo man einfach nur noch Text einsetzen muss.Hyperion hat geschrieben:Als Ausgabe bietet sich imho OO.org an. Wenn man seine Rechnungen sowieso noch mit allem Piff und Paff wie Logo, Anschrift usw. nach DIN-Norm verpacken will, ist ja "nur" der eigentliche Rechnungs-Inhalt dynamisch. Diesen kann man dann sicherlich per Templating dann einsetzen - oder das ganze per CVS-Import realisieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Japp - ist sicherlich auch eine schöne Lösung!Leonidas hat geschrieben: Ich bin vermutlich noch von der alten Schule aber bei sowas fällt mir eher LaTeX als OOo ein Dort gibt es sicherlich auch schon fertige Rechnungsklassen, wo man einfach nur noch Text einsetzen muss.
Hi,
ich glaube, was Crackus uns mit seinem Skript sagen wollte - und es hat verdammt lange gedauert, das herauszufinden - ist schlicht:
Nur kannte er leider keine Listen und keine Wertübergabe an und aus Funktionen (die hier im übrigen auch gar nicht gebraucht werden) .
Viele Grüße
ich glaube, was Crackus uns mit seinem Skript sagen wollte - und es hat verdammt lange gedauert, das herauszufinden - ist schlicht:
Code: Alles auswählen
#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-
PFAD = "/home/Crackus/Desktop/Raed/"
filehandle = open(PFAD + "RaedZahl.txt", "r")
count = filehandle.read()
filehandle.close()
count = count.rstrip("\n")
count = int(count)
rechnung = ["Anzahl | Pflanze | Preis \n",
"_________|__________________________________________________________|_______________________________________________ \n",
" | \n"]
print "Pflanzen"
while True:
AnzahlPflanzen = raw_input("Anzahl der Pflanze: ")
if AnzahlPflanzen == "Ende":
break
Pflanze = raw_input("Um welche Pflanze handelt es sich?: ")
rechnung.append(AnzahlPflanzen + " " + Pflanze + "\n")
# Euro = input("Wie viel Euro kostet diese Pflanze / Stück?: ")
filehandle = open(PFAD + "Rechnung" + str(count) + ".txt", "w")
filehandle.writelines(rechnung)
filehandle.close()
count += 1
filehandle = open(PFAD + "RaedZahl.txt", "w")
filehandle.write(str(count))
filehandle.close()
Viele Grüße
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
@problembär: Nein, das glaube ich nicht! Zeile 29 beherbergt ja immer noch das gleiche Problem.
Und wie schon so oft erwähnt wurde, sollten Pfade per os.path.join() zusammen gebaut werden!
Code auf Modulebene ist ebenfalls idR nicht wünschenswert.
Dateihandling ohne Fehlerbehandlung ist imho auch nicht zu empfehlen.
Wir kennen diese ominöse "RaedZahl.txt" nicht! Was soll da drin stehen? Ein Integerwert? Den so zu parsen ist imho auch eher unglücklich ... (und ebenfalls unsicher!)
Naja, alles in allem etwas kürzer, aber immer noch eine eher unschöne Implementation.
Aber solnage sich Crackus zu grundlegenden Fragen nicht äußert (s. mein 2. Posting vom Dienstag), kommen wir hier eh nicht weiter.
Und wie schon so oft erwähnt wurde, sollten Pfade per os.path.join() zusammen gebaut werden!
Code auf Modulebene ist ebenfalls idR nicht wünschenswert.
Dateihandling ohne Fehlerbehandlung ist imho auch nicht zu empfehlen.
Wir kennen diese ominöse "RaedZahl.txt" nicht! Was soll da drin stehen? Ein Integerwert? Den so zu parsen ist imho auch eher unglücklich ... (und ebenfalls unsicher!)
Naja, alles in allem etwas kürzer, aber immer noch eine eher unschöne Implementation.
Aber solnage sich Crackus zu grundlegenden Fragen nicht äußert (s. mein 2. Posting vom Dienstag), kommen wir hier eh nicht weiter.
Ist schon klar, daß die Implementation sch***e ist .
Ich wollte nur möglichst genau das machen, was Crackus gemacht hat, damit er es nachvollziehen kann.
Gruß
Ich wollte nur möglichst genau das machen, was Crackus gemacht hat, damit er es nachvollziehen kann.
Gruß
Das ich nicht lache, an wen, dem könnte ich auch noch ein paarCrackus hat geschrieben:[...] ich verkaufe das programm...[...]
Programme anbieten...
Glaubst du echt, dass du das verkaufen kannst ??!
Sorry, wenn das fies klingt, aber ich bin geschockt.
MfG Jonas
Crackus hat geschrieben:ich verkaufe das programm...
Na, an sich selbst:jonas hat geschrieben:Das ich nicht lache, an wen
Crackus hat geschrieben:ich brauche für mein (bezahltes) programm ...
Gruß
P.S.: Vielleicht noch etwas zu seinem Code:
1. Da er keine Listen kannte, hat er für jede Zeile seine Ausgabedatei mit "a" geöffnet, und dann die einzelne Zeile dort hineingeschrieben.
2. Da er nicht wußte, wie man Funktionen Werte übergibt, hat er versucht, globale Variablen zu verwenden.