Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How would I avoid using a global variable here?

I know that using global variable is a bad habit so I am trying to remake my black jack program with out them. Currently this code prints out the player’s hand (pH) but does not print the worth of the player hand (pHnum). Sorry I know this is a lot of code the place where the problem is happening is the "await ctx.send(pHnum)" its no sending the value I want it to. I know how I would fix this using a global var but is there any other way??? Code below.


  # lists
  pH = []
  dH = []

  # Hand Values 
  pHnum = 0
  dHnum = 0
  
   
  
  # The starting player hand 
  async def playerHand():
    addCardP(pHnum, pH); 
    addCardP(pHnum, pH);
    await ctx.send(pH)
    await ctx.send(pHnum)

    
  # Adding a card to the player hand 
  def addCardP(pHnum, pH):
    # Creating a Card
    Card = randint(2,14)
    # Creating a Suit
    suit = randint(1,4)
    if (suit == 1):
      suit = '♤'
    elif (suit == 2):
      suit = '♡'
    elif (suit == 3):
      suit = '♢'
    elif (suit == 4):
      suit = 'â™§'
    # For if the card is less then 10; 2-10
    if (Card <= 10): 
      pHnum = pHnum + Card
      Card = str(Card)
      cardS = Card + suit
      pH.append(cardS)
    # If the card is greater then 10; 11-14
    else: 
      if (Card == 14):
        Card = 'A'
        cardS = Card + suit
        pH.append(cardS)
      else: 
        pHnum =+ 10
        if (Card == 11):
          Card = 'J'
          cardS = Card + suit
          pH.append(cardS)
        elif (Card == 12):
          Card = 'Q'
          cardS = Card + suit
          pH.append(cardS)
        elif (Card == 13):
          Card = 'K'
          cardS = Card + suit
          pH.append(cardS)
    return pH, pHnum

I would like to find out a way to not use global vars. So sorry if this is a dumb question I am new to coding as a whole. Thanks so much for the help in advance. Hope you have a great rest of your day!!

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

You need to assign the result back to the variables.

async def playerHand():
    pH = []
    phNum = 0
    pH, pHnum = addCardP(phnum, pH)
    pH, pHnum = addCardP(phnum, pH)
    await ctx.send(pH)
    await ctx.send(pHnum)
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading