Seite 1 von 1

raw_input, int() und mehr

Verfasst: Dienstag 9. November 2010, 08:59
von menace
Hi leute,

ich bin neu hier und bin auf diese Seite gestossen, da ich auf keine angenehme lösung komme.
Ich möchte ein raw_input programm erstellen, was:

- mir eine unbestimmte Menge an Zahlen als raw_input eingeben lässt
- den raw_input in einen String packen
- aus dem string die Daten: minimum, maximum und durchschnitt rausliest

was ich bereits habe ist der Vorschlag von einer Dateneingabe für eine bestimmte Menge an Zahlen:

Code: Alles auswählen

a = int(raw_input('Bitte eine Zahl eingeben: '))
und die umwandlung einer bestimmten Menge in einen String:

Code: Alles auswählen

string=[a, b, c, d, e, ...]
min und max ist dann nur noch ein klacks und Durchschnitt habe ich so gelöst:

Code: Alles auswählen

mean = sum(string)%len(string)
print 'Durchschnitt: ', mean
Wo ich nicht weiterkomme:
Wie mache ich die Eingabe vom Raw_input damit ich nicht unzählige zeilen schreiben muss und wie kann ich verhindern, dass das Programm abstürzt wenn ich einen Blank anstatt einer Zahl eingebe?

Vielen Dank im Voraus,
Greez menace

Re: raw_input, int() und mehr

Verfasst: Dienstag 9. November 2010, 09:23
von Xynon1
1. du legst da kein String sondern eine Liste an.
2. nutze eine while-schleife mit raw_input anweisungen
3. mit try: ... except ValueError:.. kannst du eine falsche Umwandlung abfangen.

Re: raw_input, int() und mehr

Verfasst: Dienstag 9. November 2010, 09:45
von menace
wie genau sollte die while schleife aussehen?
bin noch ziemlich neu im ganzen python universum

Re: raw_input, int() und mehr

Verfasst: Dienstag 9. November 2010, 09:46
von Xynon1
So könnte das ganze zB aussehen

Code: Alles auswählen

if __name__ == "__main__":
    list_ = []
    while True:
        answer = raw_input("Zahl: ")
        if answer == "e":
            break
        
        try:
            list_.append(int(answer))
        except ValueError:
            print("Ung\xfcltige Eingabe!")

    result = sum(list_) / len(list_)
    print("Durschnitt: {0}".format(result))

Re: raw_input, int() und mehr

Verfasst: Dienstag 9. November 2010, 10:01
von menace
Funktioniert perfekt!
danke vielmals!

noch eine kleine Anschlussfrage:
gibt es noch eine andere möglichkeit das minimum und das maximum aus der liste zu lesen ausser dem offensichtlichem

Code: Alles auswählen

min = min(list_)
print 'Minimum: ', min

Re: raw_input, int() und mehr

Verfasst: Dienstag 9. November 2010, 10:04
von Xynon1
Sicher, aber wozu ?
zB könntest du jedes Element durchgehen und mit den anderen Vergleichen oder die Liste sortieren lassen und dann das erste oder letzte element ausgeben.

Aber das ist im Prinzip unfug, dafür gibt es ja schließlich diese build-in Funktion.

Re: raw_input, int() und mehr

Verfasst: Dienstag 9. November 2010, 10:25
von menace
ja das mit dem sortieren wäre ne gute möglichkeit. weil ich brauche eigentlich immer nur das 2. grösse element aus der gesamten liste.
wie könnt ich das machen mit dem sort?

list_.sort()

würds mir schonmal sortieren und ich bräucht ja die originale liste nicht mehr. wie lese ich da jedoch ein bestimmtes element raus? (das 2. höchste und das kleinste)

gruss menace

* EDIT: Hat sich erledigt mittels

Code: Alles auswählen

print list_[0]
print list_[-1]
Danke euch nochmal vielmals! Ich hoffe meine stumpfsinnige arbeit erleichtert sich so etwas :D

Re: raw_input, int() und mehr

Verfasst: Dienstag 9. November 2010, 10:29
von cofi

Code: Alles auswählen

list_.sort()
lowest, second_to_highest = list_[0], list_[-2]
$GRUNDLAGEN_GEFASEL