Python 运行一个函数后不会改变一个布尔值
Python will not change a boolean value after it runs through a function
from random import randrange
on = ''
max_number = 0
random_number = 0
def start():
max_number = int(input('Enter max generated number: '))
random_number = randrange(max_number)
print(random_number)
on = True
start()
print(on) # returns false??
为了学校项目,我需要制作一个猜数字游戏。这是我的开始代码。我在开始函数之前声明了“on”,但该函数不会将布尔值更改为 true
现在,on
是一个“局部”变量,只能在函数范围内看到和使用。要更改函数内外的任何变量的值,您需要键入命令 global {variable}
,通常在函数的顶部。在您的情况下,将其添加到您的函数中:
def start():
global on <-- Right Here
max_number = int(input('Enter max generated number: '))
您可以在线研究有关 global
和 nonlocal
变量的更多信息。
承认@Samwise 的评论,全局变量和非局部变量并不总是最好的选择,但我认为最好还是学习它(你知道的越多!)。他是对的,你可能甚至不需要 on
变量,而且使用 return
语句是最好的选择。
from random import randrange
on = ''
max_number = 0
random_number = 0
def start():
max_number = int(input('Enter max generated number: '))
random_number = randrange(max_number)
print(random_number)
on = True
start()
print(on) # returns false??
为了学校项目,我需要制作一个猜数字游戏。这是我的开始代码。我在开始函数之前声明了“on”,但该函数不会将布尔值更改为 true
现在,on
是一个“局部”变量,只能在函数范围内看到和使用。要更改函数内外的任何变量的值,您需要键入命令 global {variable}
,通常在函数的顶部。在您的情况下,将其添加到您的函数中:
def start():
global on <-- Right Here
max_number = int(input('Enter max generated number: '))
您可以在线研究有关 global
和 nonlocal
变量的更多信息。
承认@Samwise 的评论,全局变量和非局部变量并不总是最好的选择,但我认为最好还是学习它(你知道的越多!)。他是对的,你可能甚至不需要 on
变量,而且使用 return
语句是最好的选择。