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.
Mew
User
Beiträge: 8
Registriert: Freitag 31. August 2007, 18:41

Hallo Leute,

ich bin ein Anfänger und gerade dabei Python näher zuerkunden. Ich würde gerne einen Code programmieren, wo man zwei zahlen einginbt und python dnn dort de mittelwert berechnet. Gibt es sowas ? Geht sowas ?

Danke schonmal ^^ ich habe übrigens Python 2.4.4 :wink:

Edit (Leonidas): Verschoben.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo Mew, willkommen im Forum,

Ich habe mal den Thread verschoben, da dieses Forum zum Vorstellen von Codesnippets da ist und nicht zum suchen. Dafür sind "Allgemeine Fragen" da, und sowas heißt dann Hausaufgabe ;)

Welches Mittel hättest du denn gerne? Das arithmetische? Das geometrische? Gewichtet oder ungewichtet? ;)

Das einfachste arithmetische Mittel bekommst du ja ganz einfach: Du zählst die Werte zusammen und teilst sie durch die Länge. Dafür hast du in Python die Werkzeuge ``sum()``, ``len()`` und den Divisionsoperator. Nun ist es ganz einfach, viel Spaß beim selbstimplementieren :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Mew
User
Beiträge: 8
Registriert: Freitag 31. August 2007, 18:41

hmm also leider verstehe ich garnichts ^^^ :oops:
ich habe es so probiert (klappt aber nicht)

Code: Alles auswählen

print "Gib eine Zahl ein: "
a = include()
print "Gib eine zweite Zahl ein: "
b = include()
m = (a+b)/2.0
print "Der Mittelwert von %f und %f ist %f." %(a, b, m)
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Soweit alles richtig, bis auf das "include()". Wie bist du denn darauf gekommen?

Ersetze "include()" durch "raw_input()" oder besser "float(raw_input())" und es sollte gehen.

(Hinweis: Nutze nicht input; das ist eine Kurzform von eval(raw_input()) und bringt nur Probleme mit sich; input wird in Python3 deshalb auch verschwinden)

PS: Und schau mal ins Wiki, da gibt es Links zu guten Python Tutorials (A Byte Of Python und "Wie ein Informatiker denken lernen")
Mew
User
Beiträge: 8
Registriert: Freitag 31. August 2007, 18:41

ich hatte heute meine erste informatik stunde und das dort gemacht (dort hat es geklappt) und ich konnte mich nicht mehr so erinnern wie das geht, wollte das aber zuhause selber mal machen ^^ danke dir Joghurt

das klappt aber immer noch nicht:

Code: Alles auswählen

print "Gib eine Zahl ein: " 
a = float(raw_input()) 
print "Gib eine zweite Zahl ein: " 
b = float(raw_input()) 
m = (a+b)/2.0 
print "Der Mittelwert von %f und %f ist %f." %(a, b, m)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mew hat geschrieben:das klappt aber immer noch nicht:
Was heißt denn "es klappt nicht"? Bei mir klappt das schon.

Außerdem würde ich die ``print``-Statements gegen ``raw_input(text_der_vorher_beim_print_war)`` eintauschen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Mew
User
Beiträge: 8
Registriert: Freitag 31. August 2007, 18:41

naja, also ich gebe die zwei zahlen ein und dann passiert nix mehr, also es wird kein ergebnis gesagt.
BlackJack

Das reicht immer noch nicht als Information. Was passiert denn stattdessen? Hängt das Programm? Kommt einfach wieder der Shell-Prompt? Wie startest Du das Programm überhaupt?
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Eventuell wieder das Problem, das das Konsolen-Fenster einfach zugeht? Dann wird naemlich schon das richtige Ergebnis ausgegeben, nur dass du es so schnell nicht mehr lesen kannst. Rufe stattdessen erst die Konsole auf und starte das Programm in der Kommandozeile:

Code: Alles auswählen

python meinprogramm.py
Dann bleibt die Konsole hinterher offen und du kannst alles lesen.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Mew
User
Beiträge: 8
Registriert: Freitag 31. August 2007, 18:41

Rebecca hat geschrieben:Eventuell wieder das Problem, das das Konsolen-Fenster einfach zugeht? Dann wird naemlich schon das richtige Ergebnis ausgegeben, nur dass du es so schnell nicht mehr lesen kannst. Rufe stattdessen erst die Konsole auf und starte das Programm in der Kommandozeile:

Code: Alles auswählen

python meinprogramm.py
Dann bleibt die Konsole hinterher offen und du kannst alles lesen.
cool danke, genau das meinte ich ^^
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Mew hat geschrieben:cool danke, genau das meinte ich ^^
Dann schreib das bitte demnächst auch. Es ist ein Unterschied zwischen "es wird kein Ergebnis angezeigt" und "das Fenster schließt sich"
rotalever
User
Beiträge: 14
Registriert: Montag 8. Oktober 2007, 15:35

Eine andere Möglichkeit ist auch immer ans Ende des Programms folgendes zu schreiben:

Code: Alles auswählen

raw_input ("Return zum Beenden drücken. ")
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
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:Und die Idee ist immer noch genauso blöd wie das letzte mal wo sie jemand vorgeschlagen hat.
.
Mag sein mag sein. Ich habe es immer genutzt und alle Anwender waren zufrieden. Keine Beschwerden, kein gar nix. Natürlich war das Programm zu diesem Zeitpunkt schon korrekt :D
BlackJack

Das Programm war *korrekt*!? Mutige letzte Worte… ;-)
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.
Antworten