Как обновить переменную в нескольких функциях: игра Powerball - PullRequest
0 голосов
/ 18 апреля 2019

плохо знаком с Python, но учусь на своих способностях и стараюсь делать хорошие практики. Надеясь, что кто-то может указать мне правильное направление для моей программы на питоне: пауэрбол. Это между компьютером и пользователем, где каждый выбирает 3 уникальных (не повторяющихся) числа в диапазоне от 1 до 9 и число в пауэрболе от 1 до 3. Я хотел добавить денежную переменную, которая будет разделена между функцией main () (которая сообщает «добро пожаловать» и «ваши текущие деньги: (деньги)»), а также разделена между функцией сравнения_winnings (), которая сравнивает мои два списка и добавляет сумму к переменной (money).

Я провел некоторые исследования через Google и SO и обнаружил, что размещение моей денежной переменной вне каждой функции превращает ее в «глобальную переменную», что кажется полезным, поскольку она будет использоваться в 2 функциях. Я также узнал, что использование синтаксиса «глобальный» - плохая практика. Тем не менее, код работает нормально, и внутри функции compare_winnings () деньги обновляются. Когда игра запрашивает вас, хотите ли вы играть снова (другая функция), она начинается снова, и деньги возвращаются к своей первоначальной стоимости. (начинается с 20).

def main():
  print("Each ticket costs $1. Your winnings will be totaled. Current money is",money, "dollars." )
  start = input("\n Are you ready? [y/n]: ")

  if start == "y" or start == "yes":      
    #erased variables for legibility; gathers numbers from computer and user
    compare_winnings(actual, chosen,cpb, comp_cpb,money)
  else: 
    play_again()
def compare_winnings(actual, chosen, cpb, comp_cpb,money):
  counter = 0
  print("You chose: ", chosen) #user-inputted
  print("Ticket was actually: ", actual) #random (actual)

  same_values = set(actual) & set(chosen)
  #print ("These are the values that are the same",same_values)
  if len(same_values) > 0:
    counter += len(same_values)
    print("Numbers correct was : ",counter)

    if counter == 1 and cpb != comp_cpb :
      print("You won $1")
      money += 1
      print("total money is:", money)
      play_again()
def play_again():
  play = input("Do you want to play again? ")
  if play == "y" or play == "yes":
    main()
  else: 
    print("Program will exit. Thanks for playing.")

Я ожидаю, что переменная money будет обновлена ​​(и сохранена), пока они не решат прекратить играть в игру. Однако, кажется, он перезапускается, когда они решают играть снова или в main ().

...