在python中使用全局变量处理默认值

在python中使用全局变量处理默认值,python,Python,我正在尝试以下代码: import simplegui import random import math def new_game(): global secret_number global low global high global n print "New game. Range is from" ,low ,"-",high secret_number=random.randrange(low,high) n=math.ceil(math.l

我正在尝试以下代码:

import simplegui
import random
import math
def new_game():
   global secret_number
   global low
   global high
   global n
   print "New game. Range is from" ,low ,"-",high
   secret_number=random.randrange(low,high)
   n=math.ceil(math.log((high-low+1),2))
   print "no of guesses",n
   print " "

def new_game1():
   global secret_number
   print "New game. Range is from 0-100"
   print " "
   secret_number=random.randrange(0,100)    


# define event handlers for control panel
def range100():
    global low,high
    low=0
    high=100
    new_game()

def range1000():
    global low
    global high
    low=0
    high=1000
    new_game()


def input_guess(guess):
    global secret_number
    global n
    g=int(guess)
    print "Guess was",g
    --n
    print "no of guesses left",n
    if(g>secret_number):
        print "Lower"
    elif(g<secret_number):
        print "Higher"
    else:
        print "Equal"


frame = simplegui.create_frame('Testing', 200, 200)
button1 = frame.add_button('Range is(0,100)', range100,200)
button2 = frame.add_button('Range is(0,1000)', range1000,200)
inp = frame.add_input('Enter a guess', input_guess,200)
frame.start()
new_game1() 
导入simplegui
随机输入
输入数学
def新游戏():
全局密码
全球低点
全球高点
全球n
打印“新游戏。范围从”,低,“-”,高
secret_number=random.randrange(低、高)
n=math.ceil(math.log((高-低+1),2))
打印“无猜测”,n
打印“”
def new_game1():
全局密码
打印“新游戏。范围为0-100”
打印“”
秘密号码=随机。随机范围(0100)
#定义控制面板的事件处理程序
def range100():
全球低,高
低=0
高=100
新游戏()
def range1000():
全球低点
全球高点
低=0
高=1000
新游戏()
def输入_猜测(猜测):
全局密码
全球n
g=int(猜测)
打印“猜测是”,g
--n
打印“剩余猜测数”,n
如果(g>机密编号):
打印“下”

elif(g您可以将限制作为函数参数发送,而不是作为全局变量。您可以将默认值设置为某个值,并根据需要覆盖它们。
new\u game()
可能会变成:

def new_game( low = 0, high = 100 ):
    global secret_number, n    # Maybe these can be function arguments as well?
    print "New game. Range is from" ,low ,"-",high
    secret_number=random.randrange(low,high)
    n=math.ceil(math.log((high-low+1),2))
    print "no of guesses",n
    print " "
您的
范围
功能将变为:

def range100():
    new_game() # high & low take default values of 0,100

def range1000():
    new_game(high = 1000) # high is now 1000

# My own function
def rangeMinus1000():
    new_game(low = -100, high = 1000) # low is -100 & high is 1000

为什么所有变量都必须是全局变量?您可以将它们设置为局部变量,并使用默认参数来省去一些麻烦。我如何为newgame()保存low=0和high=100实际上,问题是希望新游戏是一个没有参数的函数,不幸的是这是不可能的。您可能希望在
new\u game()
之后调用类似
resetRange()
的函数来重置为默认值。