Python Konsole Leeren Funktioniert nicht!

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Xenotack
User
Beiträge: 10
Registriert: Mittwoch 21. September 2011, 14:24

Hallo ihr Pythoner! Ich habe einen Calculator unter Linux Xubuntu 11.10 Geschrieben, ich verwende Python 2.7 und habe folgenden Code:

Code: Alles auswählen

import os

print("Calculator\n")

print("1. Plus")
print("2. Minus")
print("3. Mal")
print("4. Geteilt\n")

def ClearScreen():
	try:
		os.system("cls")	#Windows
		os.system("clear")	#Linux
	except:
		print("Da ist was wohl etwas Schief Gelaufen!")

def plus():
	ClearScreen()
	p1 = float(raw_input("\n\nZahl 1: > "))
	p2 = float(raw_input("Zahl 2: > "))
	answer = p1 + p2
	print(answer)

def minus():
	ClearScreen()
	m1 = float(raw_input("\n\nZahl 1: > "))
	m2 = float(raw_input("Zahl 2: > "))
	answer = m1 - m2
	print(answer)

def times():
	ClearScreen()
	t1 = float(raw_input("\n\nZahl 1: > "))
	t2 = float(raw_input("Zahl 2: > "))
	answer = t1 * t2
	print(answer)	

def divide():
	ClearScreen()
	d1 = float(raw_input("\n\nZahl 1: > "))
	d2 = float(raw_input("Zahl 2: > "))
	answer = d1 / d2 
	print(answer)

eingabe = int(raw_input("> "))

if (eingabe == 1):
	plus()
elif(eingabe == 2):
	minus()
elif(eingabe == 3):
	times()
elif(eingabe == 4):
	divide()
else:
	print("Falsche Eingabe")

Was mache ich hier Falsch!?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Deine Fehlerbeschreibung ist doch etwas dürftig. Gibt es einen Fehler und wenn ja, wie lautet dieser und welchen Traceback erhälst du. Wenn nicht, was ist das Problem? Was für eine Eingabe machst du, was erwartest du für ein Ergebnis und was passiert tatsächlich?

Sebastian
Das Leben ist wie ein Tennisball.
Xenotack
User
Beiträge: 10
Registriert: Mittwoch 21. September 2011, 14:24

Ich erwarte nach dem ich 1, 2, 3 oder 4 gedrückt habe das sich der Konsolen Inhalt Löscht.
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Xenotack hat geschrieben:Ich erwarte nach dem ich 1, 2, 3 oder 4 gedrückt habe das sich der Konsolen Inhalt Löscht.
Und was passiert stattdessen?

Du hast übrigens ziemlich viel Code doppelt. Das Eingeben der Zahlen solltest du an einer einzigen Stelle sammeln.
Xenotack
User
Beiträge: 10
Registriert: Mittwoch 21. September 2011, 14:24

Es passiert Nichts!

Und... mag sein ich bin Anfänger^^ Kannst du mir den Code mal so anpassen damit ich mal seh wie das eigentlich aussehen könnte?^^
Xenotack
User
Beiträge: 10
Registriert: Mittwoch 21. September 2011, 14:24

...
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Xenotack hat geschrieben:Kannst du mir den Code mal so anpassen damit ich mal seh wie das eigentlich aussehen könnte?
Ein möglicher Ansatz

Code: Alles auswählen

def get_float(prompt):
    while True:
        try:
            number = float(raw_input(prompt))
            return number
        except ValueError:
            print('Bitte geben Sie eine Zahl ein.')


def get_numbers():
    return get_float('\n\nZahl 1: > '), get_float('Zahl 2: > ')


def print_menu(calculations):
    print("Calculator\n")
    for key in sorted(calculations.keys()):
        print('{}. {}'.format(key, calculations[key][0]))


def plus(p1, p2):
    return p1 + p2


def minus(m1, m2):
    return m1 - m2


def times(t1, t2):
    return t1 * t2


def divide(d1, d2):
    return d1 / d2


calculations = {
    1: ('Plus', plus),
    2: ('Minus', minus),
    3: ('Mal', times),
    4: ('Geteilt', divide)
}

print_menu(calculations)
eingabe = int(raw_input('> '))

if eingabe in calculations:
    number1, number2 = get_numbers()
    result = calculations[eingabe][1](number1, number2)
    print(result)
else:
    print("Falsche Eingabe")
Natürlich fehlen noch ein paar Dinge wie zum Beispiel das Abfangen eines möglichen ZeroDivisionError.

Man braucht auch die Berechnungen nicht selber definieren wenn man das operator-Modul verwendet. Das wollte ich jetzt allerdings nicht auch noch einbauen damit du deinen Code noch einigermaßen wiedererkennst.
Xenotack
User
Beiträge: 10
Registriert: Mittwoch 21. September 2011, 14:24

Könntest du Erklären was, was da macht? ... :oops:
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Wo hakt es denn genau beim Verständnis?
Antworten