Home > Mobile >  Why is the global variable not showing the correct value
Why is the global variable not showing the correct value

Time:11-09

The code is creating a random number from a low value and a high value supplied by the user. Why, when printing the value of the comp_num inside the function it returns the correct value but when printing it at the end of the sequence it is 0.

import random 

comp_num = 0

def generateNumber():
  comp_num = random.randint(low_number,high_number)
  print(comp_num)

low_number = int(input("Please select the minimum number"))
high_number = int(input("Please select the high number"))


generateNumber()
print(f"The comp_num is {comp_num}")

CodePudding user response:

You need to say inside the function that comp_num is a global variable:

import random 

comp_num = 0

def generateNumber():
    global comp_num
    comp_num = random.randint(low_number,high_number)
    print(comp_num)

low_number = int(input("Please select the minimum number"))
high_number = int(input("Please select the high number"))


generateNumber()
print(f"The comp_num is {comp_num}")

Output:

Please select the minimum number 2
Please select the high number 3
3
The comp_num is 3

CodePudding user response:

You can also design your function to return a result. Even better tell to the function which input arguments it takes.

Which is a clean approach when you code gets bigger. Furthermore when you look at the function declaration you know what it does.

import random 

def generateNumber(low: int, high: int) -> int:
  return random.randint(low,high)

low_number = int(input("Please select the minimum number"))
high_number = int(input("Please select the high number"))


comp_num = generateNumber(low_number, high_number)
print(f"The comp_num is {comp_num}")
  • Related