Problem mit Schere Stein Papier

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
xK3v
User
Beiträge: 1
Registriert: Montag 30. März 2015, 22:50

Probiere mich gerade an einem Schere Stein Papier, hab aber jetzt ein Problem, auf das ich einfach nicht draufkomme...
Hier mal mein Code:

Code: Alles auswählen

#Rock, Paper, Scissors
import random

userchoice = raw_input("Choose Rock paper or Scissors: ")
print userchoice
uch = 0
cch = 0
cont = 0
winner = 4

cch = random.randint(1,3)

if userchoice == "rock":
	uch = 1
	cont = 1
elif userchoice == "paper":
	uch = 2
	cont = 1
elif userchoice == "scissors":
	uch = 3
	cont = 1
else:
	print "Ungueltige Eingabe"

	
print uch
print cch
#if cont == 1:
	
if   uch == 1 & cch == 1:
	winner = 0
elif uch == 1 & cch == 2:
	winner = 2
elif uch == 1 & cch == 3:
	winner = 1
elif uch == 2 & cch == 1:
	winner = 1
elif uch == 2 & cch == 2:
	winner = 0
elif uch == 2 & cch == 3:
	winner = 2
elif uch == 3 & cch == 1:
	winner = 2
elif uch == 3 & cch == 2:
	winner = 1
elif uch == 3 & cch == 3:
	winner = 0
else:
	print "Error"


if winner == 0:
	print "Unentschieden"
elif winner == 1:
	print "Du gewinnst!"
elif winner == 2:
	print "Der Computer gewinnt!"
elif winner == 4:
	print "Error2"

Bei der Auswahl des Gewinners passt irgendwas nicht und es wird entweder garkeiner ausgewählt oder es wird fälschlicherweise auf Unentschieden entschieden...
Danke schonmal für die Hilfe!
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Ungetestet: and statt &.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@xK3v: Parallelposts auf Stackoverflow sollte man zumindest angeben, damit sich niemand die Mühe macht, eine bereits beantwortete Frage zu beantworten. Gerade die Antworten auf Stackoverflow sind für Anfänger oft zu kurz.

nachdem die Frage beantwortet ist, noch ein paar weitere Fragen:
Was ist der Sinn, alle Variablen am Anfang mit Phantasiewerten zu belegen? Das macht Debugging unnötig schwierig, weil man sich immer daran erinnern muß, dass eine Variable ja ihren Wert gar nicht von einer gewünschten Operation bekommen hat, sondern einfach nur vorbelegt war.
Welche Funktion hat cont? Für die Steuerung des Programmflusses im Fehlerfall gibt es viele Möglichkeiten, z.B. Exceptions. Um es einfach zu halten, könnte man hier 'uch = None' setzen.
Der Unterschied zwischen logischem und Bedingungs-UND wurde ja schon auf Stackoverflow ausgiebig diskutiert.
Als Tipp: gewöhn Dir gleich an, immer 4 Leerzeichen zum Einrücken zu benutzen.
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Sirius3 hat geschrieben:@xK3v: Parallelposts auf Stackoverflow sollte man zumindest angeben, damit sich niemand die Mühe macht, eine bereits beantwortete Frage zu beantworten. Gerade die Antworten auf Stackoverflow sind für Anfänger oft zu kurz.
Die Gleichheit ist mir auch nicht aufgefallen, aber bei dem Code war ich bei Stackoverflow auch nicht gerade zur Antwort motiviert.
Antworten