Suche einen Mittelwert Codeschnippsel !

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.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Leonidas hat geschrieben:
rotalever hat geschrieben:Eine andere Möglichkeit ist auch immer ans Ende des Programms folgendes zu schreiben
Und die Idee ist immer noch genauso blöd wie das letzte mal wo sie jemand vorgeschlagen hat.

Leute, bitte vergesst diese Möglichkeit - sie ist schlicht und einfach unbrauchbar. Wenn ihr unbedingt Konsolennutzer ärgern wollt, dann nutzt bitte diesen Code - der kommt wenigstens mit Exceptions zurecht, statt genau dann das Fenster zu schließen, wenn eine interessante Ausgabe kommt.
Solltest vielleicht irgendwo etwas anpinnen... mit irgendwas, was in's Auge springt. Oder in "VOR DEM POSTEN LESEN" diese Sachen zur Sprache bringen oder das Wiki zumindest erwähnen.

Zum Thema:
Ich versteh' nicht, wieso Informatiklehrer den Leuten immer zuerst raw_input beibringen. Sowas führt doch zwangsläufig zu solchen Fehlern. Erstmal beibringen, was 'ne Konsole is, was der Intepreter kann. Danach kann man den Leuten mal die Syntax näherbringen, am besten gleich in Kombination mit dem Intepreter. Aber nein, gleich Skripte mit raw_input anstatt Kommandozeilenparameter -_-

Eine Lösung mit Kommandozeilenparamtern und beliebig vielen Zahlen (Geht bestimmt noch 347923479mal eleganter und toller, aber das is jetzt schnell geschrieben...):

Code: Alles auswählen

#! /usr/bin/env python
# -*- coding: utf-8
import sys
if len(sys.argv) > 2:
    numbers = []
    for i in sys.argv[1:]:
		numbers.append(float(i))
	print "Durchschnittsumme: %.2f" % (sum(numbers)/len(numbers))
else:   
	print "Bitte geben sie 2 oder mehr Zahlen als Kommandozeilenargumente an!"
    print "Verwendung: python Durchschnittssumme.py 27 48.32 15.213"
Oder noch ein Beispiel mit einer Funktion (Oh Gott, ist mir langweilig oO'):

Code: Alles auswählen

#! /usr/bin/env python 
# -*- coding: utf-8
import sys

def average_sum(number_list):
    number_list = [float(x) for x in number_list]
    return (sum(number_list)/len(number_list))

if __name__ == "__main__":
    if len(sys.argv) > 2:
        print "Average sum: %.2f" % (average_sum(sys.argv[1:]))
    else:
        print "Please enter 2 or more numbers as a argument" 
        print "Example:: python AverageSum.py 27 48.32 15.213"
Einschließlich einer List Comprehensive oO!
Zuletzt geändert von BlackVivi am Dienstag 9. Oktober 2007, 08:56, insgesamt 2-mal geändert.
poker
User
Beiträge: 146
Registriert: Donnerstag 20. September 2007, 21:44

rotalever hat geschrieben:Ich habe es immer genutzt und alle Anwender waren zufrieden. Keine Beschwerden, kein gar nix.
Bis auf die Konsolen Nutzer. Hint: Pipes ;)
BlackJack hat geschrieben:Das Programm war *korrekt*!? Mutige letzte Worte… ;-)
Ist doch das normalste, dass Programmiere ausschließlich fehlerfreie Programme schreiben ;) *SCNR* und ist Ironisch zu verstehen.
BlackVivi hat geschrieben: Ich versteh' nicht, wieso Informatiklehrer den Leuten immer zuerst raw_input beibringen. Sowas führt doch zwangsläufig zu solchen Fehlern. Erstmal beibringen, was 'ne Konsole is, was der Intepreter kann. Danach kann man den Leuten mal die Syntax näherbringen, am besten gleich in Kombination mit dem Intepreter. Aber nein, gleich Skripte mit raw_input anstatt Kommandozeilenparameter -_-
Allerdings!! Aber man weiß ja im allgemeinen was man von "Informatiklehrern" zu halten hat (Ist nicht abwertend gemeint, aber der größte Teil der "Informatiklehrern" in Schulen hat doch wenig bis überhaupt keine Ahnung).

Dein Beispiel empfinde ich als am saubersten und Sinnvollsten. Das lässt sich schöne Pipen und richtet sich in erster Linie an die Konsolen Fraktion, die viel mit bash, awak, sed, etc. Automatisieren :)
Und der Rest kann sich immer noch ein Frontend in Tk oder sonst was progen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

rotalever hat geschrieben:Keine Beschwerden, kein gar nix. Natürlich war das Programm zu diesem Zeitpunkt schon korrekt :D
Klar, wenn das Fenster von selbst zu geht, sieht man keine Fehler,also ist das Programm auf irgend eine Weise schon "korrekt".
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
rotalever
User
Beiträge: 14
Registriert: Montag 8. Oktober 2007, 15:35

Leonidas hat geschrieben: Klar, wenn das Fenster von selbst zu geht, sieht man keine Fehler,also ist das Programm auf irgend eine Weise schon "korrekt".
Ja ok, ich gebs ja zu, die Lösung ist nicht optimal, aber man kann damit halt mal schnell so eine Sperre reinmachen, dass es nicht zugeht. Für kleinere Programme, die man jemand anders gibt, der sich mit Konsolen und so nicht auskennt, ist das eben die einfachste Lösung. Für komplexere Anwendungen ist es sowieso nicht wichtig das Fenster offen zu halten, da komplexere Anwendungen von Leuten mit mehr Erfahrung benutzt werden und die machen das dann eh auf der Konsole.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

So, nachdem ich Schritt 1 (Überlegung einer Grundstruktur) und Schritt 2 (Funktional nochmal darüber nachdenken oO) kam ich nun zu Schritt 3 (Erstellung einer GUI):

Für die Gui brauch man die beiden Dateien, genau so benannt...:

AverageSum.py (Wie aus Schritt 2)
AverageSumGui.pyw

(Zur meiner Verteidigung, bevor ihr den Code zerpflückt, muss ich sagen, dass ich jede dieser Schritte diesmal nur rund 5 Minuten Zeit gewidmet habe. Diese Quelltexte sind definitiv keine Referenz für gut programmiertes Python! Sondern einfach nur mal so'ne Schritt für Schritt Überlegung von mir. Natürlich bin ich offen für andere Ideen... Meine WX Kenntnisse sind übrigens miserabel, deswegen is's halt auch so furchtbar._.)

Jetzt hat'r auf jedenfall Codeschnipsel.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

rotalever hat geschrieben:Für kleinere Programme, die man jemand anders gibt, der sich mit Konsolen und so nicht auskennt, ist das eben die einfachste Lösung.
Falsch. Seitdem es meine Lösung gibt, ist diese die "einfachste Lösung" :P
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
rotalever
User
Beiträge: 14
Registriert: Montag 8. Oktober 2007, 15:35

Leonidas hat geschrieben:Falsch. Seitdem es meine Lösung gibt, ist diese die "einfachste Lösung" :P
Ja schon klar, die kannte ich halt noch nicht, als ich den code gepostet hatte.
Antworten