python - Variable resetting upon end of def -
i started learning python few days ago decided test skills making simple x o game, , below code have written far. hopefully, doesn't require explanation. happens after 1 of functions ends , goes on other numbers reset, when player 1 inputs "1" , x placed in position 1 , player 2 inputs "2" , o placed in position 2, x player 1 inputted goes being "1". how fix this?
grid=" %s | %s | %s \n --+---+--\n %s | %s | %s\n --+---+--\n %s | %s | %s" 1 = "1" 2 = "2" 3 = "3" 4 = "4" 5 = "5" 6 = "6" 7 = "7" 8 = "8" 9 = "9" error = "\n error" print grid % (one, two, three, four, five, six, seven, eight, nine) def pleone(m, one, two, three, four, five, six, seven, eight, nine): if m == "1": 1 = "x" print grid % (one, two, three, four, five, six, seven, eight, nine) pltwo() elif m == "2": 2 = "x" print grid % (one, two, three, four, five, six, seven, eight, nine) pltwo() elif m == "3": 3 = "x" print grid % (one, two, three, four, five, six, seven, eight, nine) pltwo() elif m == "4": 4 = "x" print grid % (one, two, three, four, five, six, seven, eight, nine) pltwo() elif m == "5": 5 = "x" print grid % (one, two, three, four, five, six, seven, eight, nine) pltwo() elif m == "6": 6 = "x" print grid % (one, two, three, four, five, six, seven, eight, nine) pltwo() elif m == "7": 7 = "x" print grid % (one, two, three, four, five, six, seven, eight, nine) pltwo() elif m == "8": 8 = "x" print grid % (one, two, three, four, five, six, seven, eight, nine) pltwo() elif m == "9": 9 = "x" print grid % (one, two, three, four, five, six, seven, eight, nine) pltwo() else: print error def pletwo(k, one, two, three, four, five, six, seven, eight, nine): if k == "1": 1 = "o" print grid % (one, two, three, four, five, six, seven, eight, nine) plone() elif k == "2": 2 = "o" print grid % (one, two, three, four, five, six, seven, eight, nine) plone() elif k == "3": 3 = "o" print grid % (one, two, three, four, five, six, seven, eight, nine) plone() elif k == "4": 4 = "o" print grid % (one, two, three, four, five, six, seven, eight, nine) plone() elif k == "5": 5 = "o" print grid % (one, two, three, four, five, six, seven, eight, nine) plone() elif k == "6": 6 = "o" print grid % (one, two, three, four, five, six, seven, eight, nine) plone() elif k == "7": 7 = "o" print grid % (one, two, three, four, five, six, seven, eight, nine) plone() elif k == "8": 8 = "o" print grid % (one, two, three, four, five, six, seven, eight, nine) plone() elif k == "9": 9 = "o" print grid % (one, two, three, four, five, six, seven, eight, nine) plone() else: print error def plone(): m = raw_input("\n player 1 (x), position? ") pleone(m, one, two, three, four, five, six, seven, eight, nine) def pltwo(): k = raw_input("\n player 2 (o), position? ") pletwo(k, one, two, three, four, five, six, seven, eight, nine) plone()
i left code is, can beautify it.
the reason change '1' 'one' outside pleone , pletwo functions not same 'one' inside functions.
the outside 'one' has global scope, while 'one' inside functions have local scope, meaning valid inside function.
you need declare variable inside functions global able change it.
the following example shows how fix this:
g_var = '1' l_var = '1' print g_var, l_var # prints 1, 1, values of global variables def my_func(): global g_var # keyword global tells want change global variable g_var g_var = '2' l_var = '2' print g_var, l_var # prints 2, 2, first being value of global variable, second being local declared variable l_var. my_func() print g_var, l_var # prints 2, 1, again values of both global declared variables
Comments
Post a Comment