Python запускает функцию без моего вызова
если вы сделали простую игру в блэкджек на python смотрите здесь:
import random deckOfCards = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] playerHand = [] computerHand = [] def testWin(): if sum(playerHand) == sum(computerHand): print("Draw") elif sum(playerHand) == 21: print("Blackjack! You win") elif sum(computerHand) == 21: print("Computer has blackjack you lose") if sum(playerHand) > 21: if sum(computerHand) < 21: print("You lost") elif sum(computerHand) > 21: print("Draw") elif sum(computerHand) > 21: if sum(playerHand) < 21: print("You win") elif sum(playerHand) > 21: print("Draw") elif sum(playerHand) < 21: if sum(computerHand) > 21: print("You win!") elif sum(computerHand) < 21 and sum(computerHand) < sum(playerHand): print("You win") elif sum(computerHand) < 21 and sum(computerHand) > sum(computerHand): print("You lose") def drawPlayerCard(): playerHand.append(deckOfCards[random.randint(0, 9)]) print("Your Cards are:", playerHand) print("total:", sum(playerHand), "\n") if len(playerHand) < 2: drawPlayerCard() drawComputerHand() def drawComputerHand(): if sum(computerHand) <= 17: computerHand.append(deckOfCards[random.randint(0, 9)]) print("the computer has:", computerHand) print("total:", sum(computerHand), "\n") if len(computerHand) < 2: drawComputerHand() hit_stand() else: print("the computer stands with a total of:", sum(computerHand)) hit_stand() def hit_stand(): option = input("do you want to hit or stand? [h/s]") if option.lower() == "h": drawPlayerCard() elif option.lower() == "s": testWin() else: print("please say if you want to hit or stand!") hit_stand() def start(): start_gaming = input("Do you want to play Blackjack? [y/n]") if start_gaming == "y": drawPlayerCard() elif start_gaming == "n": pass else: print("please state if you want to start the game") start() start()
и все работает так, как задумано, пока я не встану, чем он ведет себя действительно странно. я не знаю, как я мог бы это объяснить, так что это просто покажет это:
Цитата:Хотите поиграть в блэкджек? [y/n]y
Ваши карты таковы: [9]
итого: 9
Ваши карты: [9, 6]
итого: 15
компьютер имеет: [8]
итого: 8
компьютер имеет: [8, 10]
итого: 18
вы хотите ударить или стоять? [h/s]h
Ваши карты: [9, 6, 9]
итого: 24
компьютер стоит в общей сложности: 18
вы хотите ударить или стоять? [h/s]s
Ты проиграл
вы хотите ударить или стоять? [h/s]s
Ты проиграл
компьютер стоит в общей сложности: 18
вы хотите ударить или стоять? [h/s]s
Ты проиграл
похоже, что python вызывает функцию drawComputerHand и функцию hit_stand 3 раза, но я не вижу, откуда она берется и как ее исправить.
поэтому если кто то видит проблему не могли бы вы объяснить ее и предложить способ исправить
извините за возможно плохой и неэффективный код но я новичок и все еще пытаюсь учиться
<pre lang="Python"><pre lang="Python"><pre lang="Python">
Что я уже пробовал:
я смотрел на свой код в течение 2 часов, я искал в google, были ли у людей те же проблемы и исправления, я опубликовал проблему на stackoverflow, но я не мог получить ответ, и теперь я пытаюсь здесь