Seite 1 von 1
If-Bedingung wird ignoriert
Verfasst: Freitag 10. September 2021, 17:31
von KeozFPV
Hallo, ich habe das Problem das ich zwei if Anweisungen in meinem Code habe, die egal ob die Bedingungen stimmen (true) oder falsch (false) sind ausgeführt werden. Ich habe meinen Code mit dem von anderen verglichen und finde keinen Fehler den ich gemacht habe.
Außerdem wird meine Zuweisung einer Variable durch "... = input('...')" ignoriert.
Dies soll ein Tic Tac Toe spiel werden.
Code: Alles auswählen
global starting_player
starting_player = "null" #welcher spieler ist an der Reihe
global stopvar #whileloop
stopvar = 1
global playerinput
playerinput = 0
def menu ():
starting_player = input("Welcher spieler soll anfangen? X oder O:")
if starting_player == "X" or "O":
while stopvar == 1:
game()
if starting_player != "X" or "O":
print('Falsche Eingabe.')
menu()
def game ():
playerinput = input('Bitte gebe deine Wahl ein "' + starting_player + '":')
if playerinput == range(9):
print("hello")
menu()
Ich habe schon einiges probiert, weiß aber nicht weiter. Ich bin ein kompletter Anfänger, deswegen entschuldige ich mich.
Vielen dank im voraus, Gruß Jakob.
Re: If-Bedingung wird ignoriert
Verfasst: Freitag 10. September 2021, 17:52
von Dennis89
Hallo,
die 'if'-Abfrage sollte dann so aussehen:
Code: Alles auswählen
if starting_player == "X" or starting_player == starting_player == "O":
Bitte verwende von Anfang an kein 'global'. Du musst lernen wie du Argumente an Funktionen übergibst und wie Funktionen Rückgabewerte entgegen nehmen.
Schau dir am besten mal dieses Tutorial an:
https://docs.python.org/3/tutorial/
Grüße
Dennis
Re: If-Bedingung wird ignoriert
Verfasst: Freitag 10. September 2021, 18:11
von KeozFPV
Dankeschön.
Das mit dem
if starting_player == "X" or starting_player == "O":
macht sinn. Das ist mir aber nicht als Fehler aufgefallen. und ich verstehe aber immer noch nicht wieso er das dann als True gewertet hat.
Und bei den Rückgaben muss ich mich nochmal reinlesen.
Re: If-Bedingung wird ignoriert
Verfasst: Freitag 10. September 2021, 18:37
von Dennis89
Ein String ist immer True.
Sprich wenn du den ersten Teil der 'if'-Abfrage weglässt, dann steht da nur noch 'if 'O':' und das ist True. Python weis nicht ob du 'O' abfragen willst oder ob du das 'O' auch auf den 'starting_player' beziehst, wenn du es nicht direkt sagst.
Teste es einfach mal
Code: Alles auswählen
test_sring = 'O'
if O:
print('O ist immer True)
if test_string == 'X':
print('False')
'False' wird im Terminal nicht erscheinen, da die 'if'-Abfrage im Gegensatz zur ersten nicht immer True ist.
Grüße
Dennis
Re: If-Bedingung wird ignoriert
Verfasst: Freitag 10. September 2021, 18:52
von __blackjack__
Kleine Korrektur: Eine nicht-leere Zeichenkette ist immer ”wahr”. Eine leere Zeichenkette ist ”unwahr”:
Code: Alles auswählen
In [225]: bool("Hallo")
Out[225]: True
In [226]: bool("")
Out[226]: False
Re: If-Bedingung wird ignoriert
Verfasst: Samstag 11. September 2021, 13:28
von Sirius3
@KeozFPV: wenn man eine if-Bedingung hat, und danach gleich eine die das genaue Gegenteil des ersten if`s ist, dann benutzt man else.
Rekursion ist kein Ersatz für eine richtige Schleife.
In `game`: ein String kann niemals gleich einem Range-Objekt sein.
Eine Funktion, die `menu` heißt, sollte nicht gleich das ganze Spiel umfassen. Eine Funktion hat immer genau eine Aufgabe.
Code: Alles auswählen
def menu():
while True:
starting_player = input("Welcher spieler soll anfangen? X oder O:")
if starting_player in ["X", "O"]:
break
print('Falsche Eingabe.')
return starting_player
def play_round(player)
playerinput = int(input(f'Bitte gebe deine Wahl ein {player}:'))
if 1 <= playerinput <= 9:
print("hello")
def game():
starting_player == menu()
while True:
play_round(starting_player)
if __name__ == "__main__":
game()
Re: If-Bedingung wird ignoriert
Verfasst: Sonntag 19. September 2021, 22:37
von KeozFPV
Dennis89 hat geschrieben: Freitag 10. September 2021, 18:37
Oh ok. Das macht Sinn. Wie schon geschrieben bin Anfänger und muss erst mal richtig in die Materie kommen. Danke für deine Mühe das mir zu erklären.

Re: If-Bedingung wird ignoriert
Verfasst: Sonntag 19. September 2021, 22:41
von KeozFPV
@Sirius3
Ok, danke.
Hab auch schon einiges verbessert. Bin jetzt mit meinem "Projekt" fertig. Müsste alles behoben sein. ;D
Danke für deine Mühe!
Re: If-Bedingung wird ignoriert
Verfasst: Montag 20. September 2021, 06:48
von Sirius3
@KeozFPV: bist Du ja offensichtlich nicht, da Du bei Deinem "Projekt" das hier beschriebene gar nicht umgesetzt hast.