Vergleich eines Int und Array Eintrags funktioniert nicht :(
Verfasst: Donnerstag 11. März 2010, 17:04
Hallo,
ich bin neu hier deswegen wollte ich kurz was zu mir sagen. Ich studiere Bioinformatik und werde es in naechster Zeit wohl oefters mit Python zutun bekommen. Aus diesem Grund habe ich mich ma eingelesen und angefangen zu programmieren.
Da ich eben die Regeln gelesen habe: Das ist KEINE HAUSAUFGABE ich bin an einer Uni nicht FH da bekommt man so nette Aufgabe leider NICHT als Hausaufgaben ich mach das aus eigenem Interesse!
Als kleines Projekt will ich einen DartWurf Zaehler implementieren, der fuer je zwei Spieler 3 Wuerfe einspeichert, addiert und am Schluss bekannt gibt wer gewonnen hat.
Im Moment bin ich an der Klasse und habe soweit alles nur laesst sich der Sieger noch nicht ermittlen! Und ich kann nicht nachvollziehen WARUM? Waere super wenn ihr mir da weiterhelfen koenntet!
Am Schluss will ich mit Tkinter das ganze noch grafisch aufpeppen aber das kommt ers spaeter.
Also zu meinem Problem:
Ich speichere alle drei Wuerfe in eine List (ist wohl das Pendant zu Array, wenn ich das richtig verstanden habe?) und die Summe der Wuerfe. So nun wollte ich bei jedem Wurf abgleichen, ob jemand den gegebenen Startwert zB von 501 erreicht hat, um die while Schleife daraufhin abzubrechen und den Sieger bekannt zu geben.
Leider kommt bei meiner if-Abfrage allerdings jedes mal ein false raus und ich kann nicht nachvollziehen warum?
Der Code ist verkuerzt auf die entscheidende Teile!
Selbst wenn ich als startValue = 0 setzte geht er nicht in die if Abfarge bzw. die Abfrage ist false und wird nicht ausgefuehert?
Hier mal die Ausgabe:
liegen!? Aber ich lass mir die beiden Werte ja extra ausgeben und sie stimmen ueberein aber in der if KLammer nicht!?
Hab es auch schon mit probiert? Aber nix
Danke fuer eure Hilfe =)
ich bin neu hier deswegen wollte ich kurz was zu mir sagen. Ich studiere Bioinformatik und werde es in naechster Zeit wohl oefters mit Python zutun bekommen. Aus diesem Grund habe ich mich ma eingelesen und angefangen zu programmieren.
Da ich eben die Regeln gelesen habe: Das ist KEINE HAUSAUFGABE ich bin an einer Uni nicht FH da bekommt man so nette Aufgabe leider NICHT als Hausaufgaben ich mach das aus eigenem Interesse!
Als kleines Projekt will ich einen DartWurf Zaehler implementieren, der fuer je zwei Spieler 3 Wuerfe einspeichert, addiert und am Schluss bekannt gibt wer gewonnen hat.
Im Moment bin ich an der Klasse und habe soweit alles nur laesst sich der Sieger noch nicht ermittlen! Und ich kann nicht nachvollziehen WARUM? Waere super wenn ihr mir da weiterhelfen koenntet!
Am Schluss will ich mit Tkinter das ganze noch grafisch aufpeppen aber das kommt ers spaeter.
Also zu meinem Problem:
Ich speichere alle drei Wuerfe in eine List (ist wohl das Pendant zu Array, wenn ich das richtig verstanden habe?) und die Summe der Wuerfe. So nun wollte ich bei jedem Wurf abgleichen, ob jemand den gegebenen Startwert zB von 501 erreicht hat, um die while Schleife daraufhin abzubrechen und den Sieger bekannt zu geben.
Leider kommt bei meiner if-Abfrage allerdings jedes mal ein false raus und ich kann nicht nachvollziehen warum?
Der Code ist verkuerzt auf die entscheidende Teile!
Code: Alles auswählen
actValue0 = [ ] #aktueller Wert Spieler 1
actValue1 = [ ] # aktueller Wert Spieler 2
actVaule0.append(0) # Anfangswert jeweils auf 0 setzen
actValue1.append(0)
# das es eine List ist hat bestimmte Gruende ;)
startValue = raw_input("Bitte Startwert eingeben: ") # Startwert
# Gibt STartwert zurueck
def getStartValue():
return startValue
# Gibt aktuelle Wert des Spieler zureuck
def getActValue(player):
if(player == 0):
return actValue0[0]
else:
return actValue1[0]
# Setzt aktuellen Wert des Spielers
def setActValue(player,value):
if(player == 0):
actValue0[0] = getActValue(0) +value
else:
actValue1[0] = getActValue(1) +value
# Spielt Methode
def start(player):
while(1):
print "neue Runde"
print "Wert getActValue(0): ", getActValue(0)
print "Wert getActValue(0): " , getActValue(1)
print "Wert getStartValue: " , getStartValue()
if(getActValue(0) == getStartValue()): #entscheidenen STELLE!
print "%s hat gewonnen!! =)" % name0
break
elif(getActValue(1) is getStartValue()): # auch immer FALSE
print "%s hat gewonnen!! =)" % name1
break
else:
#round = round+1
print "Runde: " , getRound()
saveShoot(player)
Hier mal die Ausgabe:
sowohl bei startValue = 50 als auch bei anderen (zB =0) ist die if Abfarge IMMER false? Wenn ich if(1); setze geht er rein also muss es am ausdruckImporting test modules ... Bitte Startwert eingeben: 50
Bitte Name Spieler 1 eingeben: Hans
Bitte Name Spieler 2 eingeben: Bert
Startwert: 50
Hans beginnt!
neue Runde
Wert getActValue(0): 0
Wert getActValue(1): 0
Wert getStartValue: 50
Runde: 0
Wurf1 Spieler1: 10
Wurf2 Spieler1: 20
Wurf3 Spieler1: 20
neue Runde
Wert getActValue(0): 50
Wert getActValue(1): 0
Wert getStartValue: 50
Runde: 0
Wurf1 Spieler2: 20
Wurf2 Spieler2: 20
Wurf3 Spieler2: 20
neue Runde
Wert getActValue(0): 50
Wert getActValue(1): 60
Wert getStartValue: 50
Runde: 0
Wurf1 Spieler1: #etc geht nich aus der while Schleife raus
Code: Alles auswählen
getActValue(0) == getStartValue()
Hab es auch schon mit
Code: Alles auswählen
getActValue(0) is getStartValue()
Danke fuer eure Hilfe =)