Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

21

14.10.2012, 22:26

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import subprocess

def clearScreen():
    if subprocess.call('cls', shell=True) > 0:
        subprocess.call('clear', shell=True)

def menu():
    print("(A)ddieren, (S)ubtrahieren, (M)ultiplizieren, (D)ividieren")
    print("")

    if type == "a" or "A":
        plus()

def plus():
    clearScreen()
    x = input("1: > ")
    y = input("2: > ")
    print("Das Ergebnis ist '" + str(x+y) + "'")
    
menu()



Ausserdem wird das menu Angezeigt aber keine Auswahl gegeben sondern direkt mit plus() angefangen

(Das mit dem import subprocess hab ich via Copy&Paste eingefügt.. ich kann das nicht ab wenn das so Unordentlich aussieht in der Konsole)


Zunächst einmal: input ist 'ne schlechte Wahl, da der eingebene Text als Python Code interpretiert wird. Nimm lieber raw_input.
Zweitens: hier gibt es keine main Methode, der Code wird von oben nach unten interpretiert. Möchtest du mit 'main' oder einer sonstigen Funktion anfangen, mach:

Quellcode

1
2
if __name__ == "__main__":
    main()


Und wie ich oben bereits beschrieben habe, bekommst du über (raw_)input strings. Du musst sie noch in gültige Integer umwandeln.
In etwa so:

Quellcode

1
2
3
4
zahl1 = int(raw_input("Geben sie die erste Zahl ein: "))
zahl2 = int(raw_input("Geben sie die zweite Zahl ein: "))

print(zahl1 + zahl2)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

22

14.10.2012, 22:29

Das mit raw_input geht ja Nicht mehr seit Python 3.x soweit ich weiß.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

23

14.10.2012, 22:32

Ah, bin wohl nicht mehr auf dem neusten Stand. Dann heißt raw_input nun wohl einfach input. Dann vergiss meine Aussage. :)
Aber das mit dem konvertieren bleibt.
Du bekommst einfache Zeichenketten, sogenannte strings zurück. Mit denen lässt sich nicht rechnen, man kann lediglich mit konkreten Zahlen rechnen, daher muss man sie mit 'int(...)' umwandeln. :)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

24

14.10.2012, 22:37

Okay, das Rechnen Funktioniert soweit, nur mit dem Rechentyp Auswählen komm ich nicht klar :s

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

25

14.10.2012, 23:01

Da wäre 'ne genauere Info gut. Wieso kommst du damit nicht klar?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

26

14.10.2012, 23:08

Okay habs nun hingekriegt :)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import subprocess

def clearScreen():
    if subprocess.call('cls', shell=True) > 0:
        subprocess.call('clear', shell=True)

def menu():
    print("(A)ddieren, (S)ubtrahieren, (M)ultiplizieren, (D)ividieren")
    print("")

    mAuswahl = input(":> ")
    
    if mAuswahl == "a" or "A":
        plus()

def plus():
    clearScreen()
    x = int(input("Geben sie die erste Zahl ein: "))
    y = int(input("Geben sie die zweite Zahl ein: "))
    ergebnis = str(x+y)
    print("Das Ergebnis ist: " + ergebnis)

    
menu()

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

27

14.10.2012, 23:20

Müsste es nicht

Quellcode

1
if mAuswahl == "a" or mAuswahl == "A":

anstatt

Quellcode

1
if mAuswahl == "a" or "A":

sein?
Bin mir für Python grad nicht 100% sicher, aber allgemein ist es so. Die Probleme die du grad hast sind ganz normal. Das gehört dazu. Lass dich davon nicht abschrecken. Sinnvoll wäre es wenn du dir ein vernünftiges Buch zum Thema besorgst. Im Internet hast du selten eine gut aufeinander aufbauende Tutorialreihe. Vor allem kann es schnell passieren, dass die einen Tutorials mit der einen Python Version und die anderen mit einer ganz anderen Arbeiten. Wenn du es gleich richtig lernen willst solltest du zu einem Buch greifen. Für Python kenne ich keine Einsteigerbücher, aber da gibts hier sicherlich einige die was dazu sagen können.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

28

14.10.2012, 23:36

Hast Recht, hab mich schon gewundert warum immer Plus gerechnet WURDE

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import subprocess
import sys

def clearScreen():
    if subprocess.call('cls', shell=True) > 0:
        subprocess.call('clear', shell=True)

def menu():
    clearScreen()
    print("(A)ddieren, (S)ubtrahieren, (M)ultiplizieren, (D)ividieren")
    print("")

    mAuswahl = input(":> ")
    
    if mAuswahl == "a" or mAuswahl == "A":
        plus()
    elif mAuswahl == "s" or mAuswahl == "S":
        minus()
    elif mAuswahl == "m" or mAuswahl == "M":
        multi()
    elif mAuswahl == "d" or mAuswahl == "D":
        divi()
    else:
        print("Falsche Eingabe")
        decide = input("Möchtest du es nochmal Versuchen? [Y/N]: ")
        if decide == "y" or "Y":
            menu()
        elif decide == "n" or "N":
            sys.exit(0)

def plus():
    clearScreen()
    x = int(input("Geben sie die erste Zahl ein: "))
    y = int(input("Geben sie die zweite Zahl ein: "))
    ergebnis = str(x + y)
    print("Das Ergebnis ist: " + ergebnis)

    decide = input("Noch eine Rechnung ausführen? [Y/N]: ")
    if decide == "y" or "Y":
        menu()
    elif decide == "n" or "N":
        sys.exit(0)

def minus():
    clearScreen()
    x = int(input("Geben sie die erste Zahl ein: "))
    y = int(input("Geben sie die zweite Zahl ein: "))
    ergebnis = str(x - y)
    print("Das Ergebnis ist: " + ergebnis)

    decide = input("Noch eine Rechnung ausführen? [Y/N]: ")
    if decide == "y" or "Y":
        menu()
    elif decide == "n" or "N":
        sys.exit(0)

def multi():
    clearScreen()
    x = int(input("Geben sie die erste Zahl ein: "))
    y = int(input("Geben sie die zweite Zahl ein: "))
    ergebnis = str(x * y)
    print("Das Ergebnis ist: " + ergebnis)

    decide = input("Noch eine Rechnung ausführen? [Y/N]: ")
    if decide == "y" or "Y":
        menu()
    elif decide == "n" or "N":
        sys.exit(0)

def divi():
    clearScreen()
    x = int(input("Geben sie die erste Zahl ein: "))
    y = int(input("Geben sie die zweite Zahl ein: "))
    ergebnis = str(x / y)
    print("Das Ergebnis ist: " + ergebnis)

    decide = input("Noch eine Rechnung ausführen? [Y/N]: ")
    if decide == "y" or "Y":
        menu()
    elif decide == "n" or "N":
        sys.exit(0)

    
menu()



Nächstes Problem das Programm beendet sich nach der Frage nicht :/ (Ja ich weiß das das viel Code ist)

Ja Bücher werd ich mir Später noch holen, aber erstmal schauen ob ich hiermit weitermache

29

15.10.2012, 00:28

Für alle Vorkommen von if decide == "y" or "Y": gilt das selbe wie für mAuswahl: if decide == "y" or decide == "Y":.
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

30

15.10.2012, 01:04

Danke, wieder n kleiner Fehler ^^

Werbeanzeige