@Intrepid: Das Programm ist für Python 3 geschrieben. Mit Python 2 funktioniert es nicht, weil "input()" in Python 2 eine andere Bedeutung hat.
Was soll es bringen, alle Eingaben pauschal mit Ausnahmebehandlung zu versehen?
@bitssalad: Auf „Prüfvariablen“ wie "inp_check" würde ich verzichten, und eher eine Endlosschleife verwenden:
Code: Alles auswählen
while True:
response = input('choose rock, paper or scissors: ')
if response in items:
break
else:
print('wrong input!')
Gilt in gleicher Form auch für die äußere Schleife und "game_run".
Die endlose if…elif…else Kaskade zur Bestimmung des Gewinners ist unschön. Überlege Dir, wie Du das abkürzen könntest. Ein Weg wäre beispielsweise ein Wörterbuch, welches Paare von Eingaben auf Ergebnisse abbildet:
Code: Alles auswählen
results = {
('rock', 'paper'): 'computer wins',
('rock', 'scissors'): 'user wins'
# …
}
result = results[(user_inp, cp_input)]
Gewöhne Dir ab, Namen abzukürzen, Du stirbst nicht, wenn Du statt "cp_inp" "computer_input" schreibst, und erst recht nicht, wenn Du "usr_inp" mit "user_input" ersetzt. Dafür ist das Programm wesentlich leichter zu lesen.
In "input(str(…))" ist "str" überflüssig.