Seite 1 von 3

PYTHON ANSÄTZE !!!

Verfasst: Dienstag 27. November 2007, 10:24
von blackmamba28

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 ??

Re: PYTHON ANSÄTZE !!!

Verfasst: Dienstag 27. November 2007, 10:33
von keppla
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.

Verfasst: Dienstag 27. November 2007, 10:44
von blackmamba28
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

Verfasst: Dienstag 27. November 2007, 10:52
von blackmamba28
ich bitte noch zum letzten mal
das ist hier mein letzte bitte
ich werde dann auch niee wieder um was bitten
DANKE!!!

Verfasst: Dienstag 27. November 2007, 10:54
von 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.

Verfasst: Dienstag 27. November 2007, 11:59
von Jona
ich glaub es nicht ... :?

Verfasst: Dienstag 27. November 2007, 13:17
von keppla
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

Verfasst: Dienstag 27. November 2007, 13:29
von Leonidas
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:

Verfasst: Dienstag 27. November 2007, 13:38
von EnTeQuAk
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

Verfasst: Dienstag 27. November 2007, 14:38
von gerold
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:

Verfasst: Dienstag 27. November 2007, 14:57
von EnTeQuAk
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

Verfasst: Dienstag 27. November 2007, 15:38
von gerold
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:

Verfasst: Dienstag 27. November 2007, 15:53
von Leonidas
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.

Verfasst: Donnerstag 29. November 2007, 20:41
von blackmamba28
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 !!!

Verfasst: Donnerstag 29. November 2007, 21:01
von Leonidas
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.

Verfasst: Donnerstag 29. November 2007, 21:04
von apollo13
Über welche Sprache reden wir nun? *scnr*

Verfasst: Donnerstag 29. November 2007, 21:55
von 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!?

Verfasst: Donnerstag 29. November 2007, 22:14
von Leonidas
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)))))

Verfasst: Donnerstag 29. November 2007, 22:29
von birkenfeld
Hmmm..

Code: Alles auswählen

fac n | n <=1     = 1
      | otherwise = n * fac (n-1)

Verfasst: Freitag 30. November 2007, 02:12
von 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