Seite 1 von 1

Python Basic Fŕage

Verfasst: Montag 18. März 2019, 20:48
von texaycode
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:

Code: Alles auswählen

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()

Re: Python Basic Fŕage

Verfasst: Montag 18. März 2019, 21:02
von Sirius3
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.

Re: Python Basic Fŕage

Verfasst: Montag 18. März 2019, 21:05
von nezzcarth
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.

Re: Python Basic Fŕage

Verfasst: Montag 18. März 2019, 21:27
von texaycode
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:

Code: Alles auswählen

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)



Re: Python Basic Fŕage

Verfasst: Montag 18. März 2019, 21:45
von nezzcarth
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:

Code: Alles auswählen

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.