Seite 1 von 1

Problem mit if-Funktion

Verfasst: Samstag 9. August 2008, 11:58
von VitroN
Hallo zusammen,
hab ein (kleines) Problem mit einer if-Funktion in meinem Programm:

Code: Alles auswählen

if anzahlBiologie < 6 and text.find('Biologie') == -1:
                    anzahlBiologie = anzahlBiologie + 1
                    text = text.replace('\n', ', Klasse 8: Biologie\n')
                    self.klassenliste[zeile] = text
Also, das Programm soll einem Schüler ein Fach zuweisen, wobei es nur einer bestimmten Anzahl (hier 6) zugewiesen werden soll. Wie vielen Schülern es bereits zugewiesen wurde wird in "anzahlBiologie" gespeichert. Der zweite Teil der if-Funktion dient dazu, sicher zu stellen, dass keinem Schüler ein Fach mehrfach zugewiesen wird.

Jetzt soll der Benutzer des Programm jedoch selbst die Anzahl für ein Fach festlegen, ohne den Quellcode zu verändern. Hab schon folgende beiden Varianten probiert, aber beidemale ignoriert das Programm einfach die Anzahl für jedes Fach.

Code: Alles auswählen

self.zuvergebenBiologie = self.EBiologie.get()
if self.anzahlBiologie < self.zuvergebenBiologie and self.text.find('Biologie') == -1:
                    self.anzahlBiologie = self.anzahlBiologie + 1
                    self.text = self.text.replace('\n', ', Klasse 8: Biologie\n')
                    self.klassenliste[self.zeile] = self.text
Hier wird die Zahl aus einem Entry ausgelesen und in einer Variablen gespeichert. Das funktioniert auch! (hab die Variable geprinted)

Code: Alles auswählen

if self.anzahlBiologie < self.EBiologie.get() and self.text.find('Biologie') == -1:
                    self.anzahlBiologie = self.anzahlBiologie + 1
                    self.text = self.text.replace('\n', ', Klasse 8: Biologie\n')
                    self.klassenliste[self.zeile] = self.text

Ich weiss einfach nicht warum der Programm die erste if-Bedingung ignoriert. Hab auch schon versuch der self. mal weg zu lassen, ohne Erfolg.
Hoffentlich könnt ihr mir weiterhelfen.

Gruss und Dank
VitroN

Verfasst: Samstag 9. August 2008, 12:13
von numerix
So wie ich das sehe, vergleichst du Äpfel mit Birnen:

Code: Alles auswählen

>>> 7 < "6"
True
Beim Auslesen des Entry-Feldes erhältst du eine Zeichenkette, anzahlBioloige enthält einen Integerwert.
Das kannst du zwar vergleichen, aber es kommt - in deinem Fall - nicht das dabei heraus, was du wolltest.

Wie du das lösen kannst, fällt dir bestimmt selbst ein ... :wink:

Verfasst: Samstag 9. August 2008, 12:50
von VitroN
*wand hol und gegen Kopf schlag*

ich glaub, dass war zu banal. Hab ich einfach nicht dran gedacht

Danke

Re: Problem mit if-Funktion

Verfasst: Samstag 9. August 2008, 14:04
von Hyperion
VitroN hat geschrieben:Hallo zusammen,
hab ein (kleines) Problem mit einer if-Funktion in meinem Programm:
"if-Funktion" solltest Du schnell aus Deinem Hirn streichen - grauselige Terminilogie ;-)
if ist eine Bedingung, keine Funktion.

Verfasst: Samstag 9. August 2008, 15:52
von EyDu
Also in Smalltalk ist if eine Funktion 8)

Verfasst: Samstag 9. August 2008, 16:34
von BlackVivi
Einigen wir uns einfach darauf, dass ``if`` in Python ein Statement ist, in Ordnung?...

Verfasst: Samstag 9. August 2008, 17:07
von lunar
Mit Betonung auf Python. Funktionale Sprachen wie lisp oder scheme sehen das ganz anders ;)

Verfasst: Samstag 9. August 2008, 18:33
von BlackJack
In Io ist `if` eine Methode. :-)

Verfasst: Sonntag 10. August 2008, 09:19
von sma
EyDu hat geschrieben:Also in Smalltalk ist if eine Funktion 8)
Also streng genommen sind `ifTrue:` und `ifFalse:` Methoden von `True`und `False` und keine Funktionen ;) In Scheme oder Lisp übrigens auch nicht, da sind `if` und `cond` special forms, quasi eingebaute Makros, die nur wie Funktionen aussehen. In Io ist es streng genommen genauso, allerdings ist in die Sprache das gewöhnungsbedürfte Feature eingebaut, dass Argumente, für die es keinen Parameter mit "call by name" statt "call by value" sind.

Stefan