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

1

08.03.2012, 13:44

Python Rechnen Funktioniert nicht.

Hallihalo wie die meisten bemerkt haben, hab ich mit dem GameMaker Angefangen der unter Linux nicht so ganz will! Nach dem Ich Überlegt habe, wollte ich doch Zurück zu Python. Ich hab mir meinen Größten Feind in Python Angeschaut und Verstanden ;) Jetzt Behersche ich Module :) Allerdings nicht so wie ich es will xD Hier mal der Code:

Calculator.py(Main):

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from Operators import Operatoren
OP = Operatoren()

print("1. Addieren")
print("2. Subtrahieren")
print("3. Multiplizieren")
print("4. Dividieren")

wahl = 0

wahl = int(raw_input("> "))

if wahl == 1:
    x = int(raw_input("1: > "))
    y = int(raw_input("2: > "))
    OP.add(x, y)
elif wahl == 2:
    x = int(raw_input("1: > "))
    y = int(raw_input("2: > "))
    OP.sub(x, y)


Und Hier die Operators.py(Modul):

Quellcode

1
2
3
4
5
6
7
8
9
class Operatoren():
    def add(self, z1, z2):
        return z1 + z2
    def sub(self, z1, z2):
        return z1 + z2
    def times(self, z1, z2):
        return z1 * z2
    def div(self, z1, z2):
        return z1 / z2


Das Problem liegt darin, das wenn ich in der Calculator.py die Zahlen Manuell Eingeben Möchte über die Konsole das auch Prima Funktioniert, allerdings bekomm ich das Ergebnis nicht zu sehen :huh: Woran Liegt das?

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

2

08.03.2012, 14:01

du musst das Ergebnis mit print ausgeben... :rolleyes:
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

3

08.03.2012, 14:19

Aber das Regelt doch das Modul?

Quellcode

1
2
def add(self, z1, z2):
        return z1 + z2

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

4

08.03.2012, 14:25

return ist nicht print. Wenn du etwas ausgeben moechtest musst du auch print benutzen

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

5

08.03.2012, 14:27

mit dem Quelltextauszug definierst du eine Methode
diese Methode erwartet 3 Parameter (der 1. wird immer implizit übergeben und stellt die in anderen Sprachen bekannte Eigenreferenz dar)
die beiden Parameter werden in dem Fall zusammengerechnet und zurück gegeben
das heißt an jeder Stelle, an der du

Quellcode

1
OP.add(2, 3)
stehen hast, kannst du dir ein

Quellcode

1
2 + 3
denken
ein Beispiel wäre:

Quellcode

1
2
print(OP.add(2, 3))
print(2+3)

es würde 2 Mal die 5 ausgegeben werden
bedenke aber, dass man mit Methoden mehr machen kann, als mit einem einfachen Ausdruck, weshalb man den Methodenaufruf nicht immer ohne weiteres durch den Methodeninhalt ersetzen kann ;)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

6

08.03.2012, 17:53

Warum erstellst du diese komplett nutzlose Operatoren-Klasse? Python ist nicht Java. Du darfst in einem Modul durchaus freie Funktionen definieren. Die if-elif-Kaskaden (switch-Ersatz) löst man pythonisch in der Regel mit dictionaries.

Und, es gibt das operators-Modul bereits in der Standardbibliothek ;)

Das ganze könnte ich heute Abend etwas aufbohren. (Siehe unten)

Grüße ... Heiko

Nachtrag
Hier die entsprechenden Dateien etwas pythonischer gestaltet: ops.py, rechner.py (Python 2.7)

Viel Spaß und Erfolg beim Nachvollziehen :thumbup:

Zitat

Ich bin nicht der Messias.
Ich sage, du bist es, Herr. Und ich muss es wissen, denn ich bin schon einigen gefolgt.

https://bitbucket.org/bwbg

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »bwbg« (08.03.2012, 22:02)


Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

7

08.03.2012, 22:32

Warum erstellst du diese komplett nutzlose Operatoren-Klasse?

ich denke, weil es eine Übung war, die er gemacht hat

Die if-elif-Kaskaden (switch-Ersatz) löst man pythonisch in der Regel mit dictionaries.

und nun solltest du ihm auch erklären, wie man es mit den Dictionarys anstellen kann ;)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Werbeanzeige