PYTHON ANSÄTZE !!!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
blackmamba28
User
Beiträge: 26
Registriert: Freitag 14. September 2007, 09:58
Wohnort: bonn

Code: Alles auswählen

# -*- coding: cp1252 -*-
# Chartsvoting
from Tkinter import Tk
import tkFileDialog
import pickle

def laden():
    try:
        fenster=Tk()
        datei=tkFileDialog.askopenfile()
        charts=pickle.load(datei)
        datei.close()
    except:
        charts=[]
        print "Datei nicht vorhanden. Erzeuge leere Datei!"
    return charts
    fenster.destroy()
   
def ausgabe(charts):
    print "Aktuelle Rangfolge"
                                  # absteigend sortieren
                                  #
                                  # Ausgabeanweisungen
                                  # der formatierten Ausgabe
                                  # - in Tabellenform (s. Screenshot)
                                  # - Platznummer, Stimmenzahl, Titel, Interpret
                                  # - GanzZahlen rechtsbündig
                                  # - Zeichenketten linksbündig


                                  
def speichern (charts):
    fenster=Tk()
    datei=tkFileDialog.asksaveasfile()
    if datei:
        pickle.dump(charts,datei)
        datei.close()
        print "Geänderte Datei gespeichert"
    else:
        print "Keine Datei angegeben. Keine Speicherung"
    fenster.destroy()

def voting (charts):
    if charts ==[]:
        print"Keine Wahl möglich. Chartsliste leer!"
    else:
        ausgabe(charts)
        print ""
        platznummer=input("Platznummer eingeben: ")
        while platznummer > 0:                           # das muss noch besser werden
            charts[platznummer - 1][0] =                 # da fehlt noch: Erhöhung des Inhalts
#                                                          dieser Stelle um 1
            platznummer=input("Platznummer eingeben: ")
            


charts = laden ()
voting(charts)
speichern(charts)
ausgabe(charts)


SOOOOOO ICH HAB VIELES NACHGEHOLT ICH HAB NOCH EIN PAAR PROBLEME DAS FERTIG ZU PROGRAMMIEREN
MEINE LEHRERIN HAT MIR EIN PAAR TIPPS GEGEBEN WAS NOCH REIN KOMMT ; WELCHES NEBEN DEN CODE GESCHRIEBEN HABE
KÖNNT IHR MIR BITTE HELFEN ??
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

SOOOOOO ICH HAB VIELES NACHGEHOLT
NEIN HAST DU NICHT!!!!111!!einsElf11!!!!
denn...
ICH HAB NOCH EIN PAAR PROBLEME DAS FERTIG ZU PROGRAMMIEREN
MEINE LEHRERIN HAT MIR EIN PAAR TIPPS GEGEBEN WAS NOCH REIN KOMMT
...wenn es denn wirklich so ist, hättest du uns hier nur die Aufgabe und die erbettelten Tipps deiner Lehrerin gepostet, und möchtest mal wieder nur alles fertig geliefert bekommen.

Wobei ich meine ursprüngliche Theorie, dass es sich bei dir um einen Troll handelt, der sich mangels Ego daran freut, andere zu nerven, für plausibler halte.
blackmamba28
User
Beiträge: 26
Registriert: Freitag 14. September 2007, 09:58
Wohnort: bonn

HALLO ??
ICH HAB GESCHRIEBEN WIE DIE TIPPS HEISSEN ??
KANNST DU NICHT LESEN ??
GUCK MAL UITER PRINT "AKTUELLE RANGFOLGE"
MAN WENN DU MIR NCIHT HELFEN WILLST
DANN LASS ES DOCH SEIN HIER DEINE IRRATIONALE KOMMENTE ABZUGEBEN
WENN ICH JEMANDEN HIER AUF DIE NERVEN GEHEN DAN SOLLEN DIE NICHT MEIN EBEITRÄGE LESEN ODER SICH UNMITTELBAR VON DIESEN FORUM ABMELDEN !!

ALSO KANN MIR JETZT JEMAND HELFEN
?!!
BITTE
blackmamba28
User
Beiträge: 26
Registriert: Freitag 14. September 2007, 09:58
Wohnort: bonn

ich bitte noch zum letzten mal
das ist hier mein letzte bitte
ich werde dann auch niee wieder um was bitten
DANKE!!!
BlackJack

Deine Caps-Lock-Taste scheint zu klemmen.

``except`` sollte man nie ohne eine konkrete Ausnahme verwenden, ansonsten kann das Fehler verdecken, die dann schwer zu finden sind, weil die entsprechende Meldung mit den Hinweisen unterdrückt wird.

Probiere mal folgenden Code aus und überlege Dir was ``return`` für den Programmfluss bedeutet:

Code: Alles auswählen

def test():
    print "Vor dem ``return``"
    return 42
    print "Nach dem ``return``"

print "Vor dem Aufruf"
test()
print "Nach dem Aufruf"
Sortieren der Chartliste geht mit der `sort()`-Methode auf Listen. Da am besten die Dokumentation zu den optionalen Argumenten mal durchlesen, mit denen man die Sortierung beeinflussen kann.

Für das Formatieren der Ausgabe kann man den ``%``-Operator und die entsprechenden Platzhalter mit den Angaben der Breite und Bündigkeit in der Zeichenkette verwenden.

Statt `input()` sollte man `raw_input()` verwenden und die Zeichenkette dann in den entsprechenden Typ umwandeln, in diesem Fall wohl `int`. Die Funktion `input` führt nämlich beliebigen Python-Code aus, den der Benutzer eingibt.

Die Eingabe der Platznummer ist zweimal im Quelltext vorhanden. Solche Wiederholungen möchte man vermeiden, weil es unter anderem bedeutet, dass man bei Änderungen immer daran denken muss *alle* Stellen zu verändern. So etwas schreibt man in Python idiomatisch als "Endlosschleife" und lässt sich typischerweise so umformen:

Code: Alles auswählen

x = f()
while condition(f):
    g(x)
    x = f()

# =>

while True:
    x = f()
    if not condition(x):
        break
    g(x)
Stilistisches: Leerzeichen vor und nach Zuweisungen und binären Operatoren und nach Kommata machen Qeulltext etwas leichter lesbar.

Und das Hauptprogramm würde ich noch in eine `main()`-Funktion stecken und am Ende den üblichen Startcode dafür schreiben:

Code: Alles auswählen

if __name__ == '__main__':
    main()
Jetzt kann man das Skript als Modul importieren ohne dass es ausgeführt wird und die einzelnen Funktionen testen/ausprobieren.
Jona
User
Beiträge: 94
Registriert: Sonntag 23. September 2007, 23:25

ich glaub es nicht ... :?
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

blackmamba28 hat geschrieben:HALLO ??
ICH HAB GESCHRIEBEN WIE DIE TIPPS HEISSEN ??
KANNST DU NICHT LESEN ??
Doch, sogar dein Geschreibesel. Und ich habe geantwortet. Du kannst lediglich nicht verstehen.
WENN ICH JEMANDEN HIER AUF DIE NERVEN GEHEN DAN SOLLEN DIE NICHT MEIN EBEITRÄGE LESEN ODER SICH UNMITTELBAR VON DIESEN FORUM ABMELDEN !!
ja natürlich. Man sollte sich besser abmelden, wenn man irrationalerweise annimmt, dass es in einem Pythonforum hauptsächlich um Python, und nicht um trolle/absolut lernunfähige kleinkinder geht.
ALSO KANN MIR JETZT JEMAND HELFEN
Alles, was dir hilft, wäre strafbar, befürchte ich.

Aber du könntest uns helfen, indem du dein Versprechen wahr machst, auch wenn es hier dann vermutlich nicht mehr so viel zu lachen gibt:
das ist hier mein letzte bitte
ich werde dann auch niee wieder um was bitten
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

blackmamba28 hat geschrieben:KANNST DU NICHT LESEN ??
All Caps zu lesen ist ja auch schwer, ich weiß nicht warum du uns das zumutest.
blackmamba28 hat geschrieben:WENN ICH JEMANDEN HIER AUF DIE NERVEN GEHEN DAN SOLLEN DIE NICHT MEIN EBEITRÄGE LESEN ODER SICH UNMITTELBAR VON DIESEN FORUM ABMELDEN !!
Planst du unsere normalen User zu verscheuchen? Kann ich irgendwie nicht gutheißen... :roll:
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Sorry, eigentlich wollte ich mich nicht melden. Aber...

(zitate aus http://www.python-forum.de/topic-12565,30.html)
Leonidas hat geschrieben:
Andy hat geschrieben: Aber langsam sollten wir wirklich den Thread nicht weiter füttern.
Right. Alle die wollten haben ihre Argumente geschrieben und zu etwas Konstruktivem kommt man hier nicht mehr. Daher mache ich den Thread zu.
Ich sehe durchaus bedarf dafür.


MfG EnTeQuAk
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

EnTeQuAk hat geschrieben:
Leonidas hat geschrieben:Right. Alle die wollten haben ihre Argumente geschrieben und zu etwas Konstruktivem kommt man hier nicht mehr. Daher mache ich den Thread zu.
Ich sehe durchaus bedarf dafür.
Hallo EnTeQuAk!

Das wäre wie das Verbieten von Meinungsfreiheit. So lange keine gesetzeswidrigen Aussagen getätigt werden, sollte man einen Thread nicht schließen. Ein Board reguliert sich von selbst. Man kann jemanden auch mit "Ignoranz" strafen. Aber auf das scheinen ein paar hier nicht zu kommen.

Willst du jemanden niederprügeln, nur weil er etwas sagt, was du für Blödsinn hälst? Wenn ja, dann bist du nicht wirklich tolerant, stimts?

Was macht jemand, der einem Anderen nicht mehr zuhören kann oder will? Er geht!

Man kann Andere ja auf die Lernresistenz und auf das Verhalten eines Anderen aufmerksam machen. Aber nicht einfach den Mund knebeln.

Es gibt Gründe, einen Thread zu sperren -- aber nur weil jemand wiederholt Blödsinn quatsch -- ist keiner.

hrrrrrrrrrrrrrrrrrrraaaaaaaaaaaaaaaaaaaa!!!!!!!!!! :roll:
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Okay, da muss ich dir voll Recht geben Gerold. Es war etwas voreilig von mir. Jedoch muss ich bekennen, das blackmamba nicht wiederholt Blödsinn quatscht. Das habe ich nicht gesagt. Er missachtet einfach unsere Hinweise und verstößt in fast jedem seiner Beiträge gegen Punkt c der kleinen Verhaltensregeln in diesem Forum.


Aber ich werde wohl
Gerold hat geschrieben: Man kann jemanden auch mit "Ignoranz" strafen. Aber auf das scheinen ein Paar hier nicht zu kommen.
öfters beachten, denke ich.


Doch auf eines muss ich eingehen:
Gerold hat geschrieben: Willst du jemanden niederprügeln, nur weil er etwas sagt, was du für Blödsinn hälst? Wenn ja, dann bist du nicht wirklich tolerant, stimts?
Das unterschreibe ich so nicht. (dem Rest stimme ich einfach stillschweigend zu)
Ich bin ein sehr tolleranter Mensch und sehe sehr oft über viele Dinge hinweg. Ich mache jemanden auf gewisse Dinge Aufmerksam, ohne mich aufzuregen. Doch Tolleranz hat irgentwo gewisse Grenzen, bei uns allen. Und wenn man konsequent Tollerant bei allem im Leben ist, finde ich, kommt man nicht viel weiter. Man muss gewisse Dinge einfach akzeptieren, aber nicht alles. Und gefallen lassen muss ich mir gar nichts.

Das sei nur mal am Rande erwähnt.


MfG EnTeQuAk
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

EnTeQuAk hat geschrieben:Man muss gewisse Dinge einfach akzeptieren, aber nicht alles. Und gefallen lassen muss ich mir gar nichts.
Hallo EnTeQuAk!

Ich will dich damit jetzt nur zum Denken anregen und mir keine Feinde schaffen:

Du regst dich über Beiträge hier im "virtuellen" Python-Forum auf, die dich nicht einmal persönlich angreifen.

lg
Gerold
:-)

PS:
EnTeQuAk hat geschrieben:Jedoch muss ich bekennen, das blackmamba nicht wiederholt Blödsinn quatscht. Das habe ich nicht gesagt.
Nein, das habe ich gesagt. :twisted:
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Könnten wir auf das Thema zurückkommen?

...

Achja, wir haben kein Thema. Nun gut, dann gebe ich einen Tipp. Zum "erhöhen des Inhaltes" gibt es den += Operator (ich weiß, dass da ein Bindestrich dazu soll, aber +=-Operator sieht seltsam aus). Blackmamba, gug doch mal, was man damit anstellen kann und wie du ihn verwerten kannst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
blackmamba28
User
Beiträge: 26
Registriert: Freitag 14. September 2007, 09:58
Wohnort: bonn

booah vielen dank an blackjack
du hast mir so derbe geholfen
ich weiss jetzt irgendswie wie das aussehen könnte

nur das mit den operatoren kapiere ich nciht ganz
wie das gehen soll
und zu return komm ich auch nciht weiter
kannst du mir das bitte erklären ??

ich hab mal in wiki geguckt, aber ich hab null ahnung wie ich das darein bringen soll

Code: Alles auswählen

int fakultaet(int x)
{
    if (x > 1)
        return x * fakultaet(x-1);
    else
        return 1;
}

DANKE AN ALLE DIE MIR HIER HELFEN ICH WEISS DAS WIRKLICH ZU SCHÄTZEN !!!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Das ist nicht dein Ernst, oder? Die Funktion kannst du doch 1:1 in Python schreiben, wenn du ein paar geschweifte Klammern weg lässt, ein paar Semikolons weglässt, die Typendeklarationen weglässt und ein paar Doppelpunkte dazu tust.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Über welche Sprache reden wir nun? *scnr*
BlackJack

Also in OCaml sähe es so aus:

Code: Alles auswählen

let rec fakultaet x = if x > 1 then x * fakultaet (x - 1) else 1 ;;
Wobei ich mich jetzt natürlich frage was die Fakultätsfunktion in einer Hitparadenverwaltung zu suchen hat!?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:Also in OCaml sähe es so aus
In Scheme hingegen eher so:

Code: Alles auswählen

(define (fakultaet x)
  (if (< x 1)
      1
      (* x (fakultaet (- x 1)))))
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Hmmm..

Code: Alles auswählen

fac n | n <=1     = 1
      | otherwise = n * fac (n-1)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
BlackJack

Oder in x86-Assembler (NASM-Syntax, von C aufrufbar):

Code: Alles auswählen

section .text
global fac
; extern int fac(int x);
fac:
        mov eax, [esp+4]
        mov ecx, 1
rfac:
        cmp eax, ecx
        jg .rec_branch
        mov eax, ecx
        ret
.rec_branch:
        push eax
        dec eax
        call rfac
        pop edx
        mul edx
        ret
Gesperrt