2014-11-23 50 views
0
困惑
initial_p = input("Enter the initial point") 

def game(): 
    x = 1 
    guess = input("Guess value") 
    if guess == 1: 
     initial_p += 2 
    else: 
     initial_p -= 2 

game() 

replay = raw_input("Do you want to try it again? Y/N") 
if replay == 'Y': 
    game() 

每場比賽需要2分Python2.7 /與變量

我做了很簡單只是爲了解釋這個東西很容易

所以打每一場比賽,它需要你有至少2分,否則如果你猜對了,就變成遊戲 ,如果沒有,你就賺取2分 ,你就輸了2分。

與結果(點),你可以再次播放或退出

如果你再玩一次,你付出兩點

但是,當你第二次或更多的玩,該行

initial_p += 2initial_p -= 2仍然有您在輸入點一開始

我現在很困惑我甚至無法解釋的權利

但是,如果你能理解我的解釋,請幫我

謝謝

+0

請正確格式化您的文章。除此之外,我認爲你對變量的理解範圍有問題,而不是他們的名字。 'initial_p'目前似乎是一個全局變量,但是訪問不正確。 – 2014-11-23 06:43:16

+0

可能的重複或與[在創建它們的函數之外的函數中使用全局變量](http://stackoverflow.com/q/423379/2823755)相關。另一個可能的答案 - http://stackoverflow.com/a/370363/2823755。和http://stackoverflow.com/a/146365/2823755 – wwii 2014-11-23 06:46:25

+0

http://stackoverflow.com/a/292502/2823755。最後從文檔中的教程https://docs.python.org/3/tutorial/classes.html#python-scopes-and-namespaces – wwii 2014-11-23 06:53:13

回答

0

的快速和骯髒的反應是更改到以下。

def game(initial_p): 
    #Your Code 
    return initial_p 


initial_p = game(initial_p) 

基本上,您將全局變量放置爲局部變量並重新分配全局。

這也應該發生在最底部。

此外,你可以只是要求在函數內部的輸入,並有一個默認參數initial_p

例如,

def game(first_time=True) 
    #Ask for input with if first_time: 
    return initial_p 

和修改返回一些全局點值什麼的。

對不起,如果這是馬虎,寫在我的手機上。