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.
Ich habe ein Problem, ich habe probiert ein Münzewerfen spiel zu programmieren, allerdings habe ich irgendwo ein fehler das sich der anfang immer wiederholt:
import random
import time
moeglichkeiten = ("Kopf", "Zahl")
player_money = int(1000)
player_einsatz = int(0)
player_choice = 0
random_choice = 0
print(f"Hallo spieler, hier kannst du Kopf oder Zahl spielen. Du hast momentan ${player_money}. ")
while player_money > 0:
player_choice = input("Auf was willst du wetten [K]opf oder [Z]ahl?: ")
player_einsatz = int(input(f"Wie viel willst du auf {player_choice} setzen, momentan hast du ${player_money}: "))
random_choice = random.choice(moeglichkeiten)
if player_choice == random_choice:
player_money + player_einsatz
print(f"Super, du hast gewonenn jetzt hast du ${player_money}!")
else:
player_money - player_einsatz
else:
print("Du hast kein geĺd mehr das nächste mal vlt.")
time.sleep(5)
exit()
das Ergebnis einer Rechnung sollte man auch wieder einer Variable zuweisen, wie Du es an 8 anderen Stellen auch tust.
Ein else-Block bei einer while-Schleife ohne break ist verwirrend. die vorletzten beiden Zeile sollten ausgerückt sein und die letzte gelöscht werden, weil sich das Programm sowieso am Ende beendet.
Na ja, du merkst dir das Ergebnis deiner Berechnungen nicht; die Bedingung ist immer erfüllt und dann läuft das Skript natürlich endlos weiter.
Die int() Aufrufe in Zeile 4 und 5 werden nicht benötigt, wie du in den beiden Zeilen darunter ja sehen kannst Weshalb sind die Variablen Namen teilweise Deutsch, teils gemischt? Nimm doch eine Sprache, bevorzugt Englisch. 'exit' wird nicht funktionieren, da du es nicht importierst. Du brauchst es dort aber eh nicht.
Also ich glaube ich habe jetzt die fehler behoben allerdings habe ich jetzt das problem das wenn ich prüfe ob die eingabe Zahl oder Kopf entspricht, ich immer gesagt bekomme das es keines vom beiden ist:
import random
import time
possibilities = ("Kopf", "Zahl")
player_money = 1000
player_bet = 0
player_choice = 0
random_choice = 0
print(f"Hallo spieler, hier kannst du Kopf oder Zahl spielen. Du hast momentan ${player_money}. ")
while player_money > 0:
player_choice = input("Auf was willst du wetten Kopf oder Zahl?: ")
if player_choice != "Zahl" or "Kopf":
print("Du kannst nicht auf etwas wetten was es nicht gibt!")
time.sleep(2.5)
exit()
player_bet = int(input(f"Wie viel willst du auf {player_choice} setzen, momentan hast du ${player_money}: "))
random_choice = random.choice(possibilities)
if player_bet > player_money:
print("Du kannst nicht mehr wetten als du hast!")
time.sleep(2.5)
exit()
else:
pass
if player_choice == random_choice:
player_money += player_bet
print(f"Super, du hast gewonenn jetzt hast du ${player_money}!")
else:
player_money -= player_bet
else:
print("Du hast kein geĺd mehr das nächste mal vlt.")
time.sleep(5)
Das liegt daran, dass deine Bedingung 'if player_choice != "Zahl" or "Kopf":' leider falsch formuliert ist. Du orientierst dich daran, wie man das in natürlicher Sprache formulieren würde, in Python funktioniert das so aber nicht. Es wird geprüft, ob die Variable player_choice ungleich dem Wert 'Zahl' ist oder auf den Wahrheitswert der Zeichenkette "Kopf'. Da der Wahrheitswert von allen Zeichenketten außer der leeren immer 'True' ist steht dort also 'if player_choice != "Zahl" or True', was immer 'True' ergibt. Statt dessen würde man eher so etwas schreiben:
if player_choice.lower() not in {'zahl', 'kopf'}:
....
Um aus einer Schleife auszubrechen, verwendet man 'break'. 'exit' braucht man in regulären Programmen eigentlich eher selten, und wenn, dann um einen bestimmten return-Code zu setzen.