@Trapper511: Einrückungen sind in Python ein wichtige syntaktisches Element. Nach einem while muß eine Block folgen, der durch seine einheitliche Einrückung definiert wird. Der fehlt bei Dir.
Eine while-Schleife, die nur startet, wenn man einer Variable einen Dummy-Wert zuweist, ist umständlich. Dafür schreibt man eine while-True-Schleife, deren Abbruchbedingung innerhalb der Schleife steht.
Schere, Stein, Papier, Spock und Echse kommem insgesamt jeweils drei mal vor, sollten aber am besten nur einmal vorkommen. Dann verhindert man Fehler durch falsche Reihenfolge, o.ä.
Alles auf oberster Ebene sollte in Funktionen gepackt werden, auch Abschnitte, wie die Eingabe stehen am besten in eigenen Funktionen. Pro Zeile steht eine Anweisung, vergiss also dass es ; überhaupt gibt.
`angriff` ist eigentlich keine Variable, sondern eine Konstante, und das Tuple ist eigentlich eine Liste, weil es eine Aufzählung von gleichartigen Dingen ist.
Code: Alles auswählen
ANGRIFF = ["Schere", "Stein", "Papier", "Echse", "Spock"]
def angriff_auswaehlen():
while True:
auswahl = " ".join(f"[{i}] {n}" for i, n in enumerate(ANGRIFF, 1))
angriffauswahl = int(input(f"{auswahl}\n"))
if 1 <= angriffauswahl <= len(ANGRIFF):
break
return angriffauswahl - 1
def main():
title = '|'.join(ANGRIFF)
print("*"* (len(title) + 2))
print(f"*{title}*")
print("*"* (len(title) + 2))
print()
print()
while True:
#Angriff auswählen
angriffauswahl = angriff_auswaehlen()
spielerangriff = ANGRIFF[angriffauswahl]
if __name__ == '__main__':
main()
So ist mit einer kleinen Änderung das Spiel auf Schere-Stein-Papier umstellen.