2015-06-19 120 views
-2

我寫這個劇本在這裏:語法錯誤:名稱「變量」用來全局聲明之前

http://www.codeskulptor.org/#user40_OuVcoJ2Dj1_8.py

我的錯在於驗證碼:

if 'i' not in globals(): 
    global i 
    if 'j' in globals(): 
     i = j 
    else: 
     i = 0 

我要分配i到如果j存在於全局範圍內,則爲j。如果j不存在,則i從0開始,如果輸入正確,則j可能會在腳本的後面進行全局聲明。

通過按左上角的播放來運行腳本。

+0

這是爲什麼downvoted用了命令 – The6thSense

+0

請在你失望之前先看看它。我正在尋求代碼幫助,而不是你對問題的看法。如果你認爲它很容易,然後告訴我爲什麼我不能這樣做.. –

+0

該鏈接是合法的。它來自我們學校的python編程腳本網站。 –

回答

1

這不是全局變量在Python中的工作方式。如果我猜中你的意圖,你想這個代碼:

if 'i' not in globals(): 
    global i 

來解釋類似「如果當前有沒有命名i一個全局變量,然後創建一個使用該名稱的全局變量。」這不是代碼所說的(正如所寫的,它沒有任何意義)。該代碼的最接近的翻譯是這樣的:

如果沒有名爲i全局變量,當我嘗試在此範圍內使用可變i,我指的是全球i(不存在),而不是創建僅存在於當前範圍內的新變量i

global從來沒有創建什麼,它只告訴解釋器在哪裏尋找你指的是什麼。

一些可能有用的鏈接:

https://docs.python.org/2/faq/programming.html#what-are-the-rules-for-local-and-global-variables-in-python

https://infohost.nmt.edu/tcc/help/pubs/python/web/global-statement.html

+0

它不會讓你覺得因爲我不能發佈整個代碼,這就是爲什麼我發佈鏈接到我的腳本。 –

+0

由於您發佈的摘錄錯誤的原因完全相同,您的整個代碼都是錯誤的。 Python中的全局工作方式與您的代碼認爲它們的工作方式不同,在解決此問題之前,代碼已損壞。你讀過這些鏈接嗎?更好的是,考慮如何解決問題而不使用全局變量,以及爲什麼有經驗的開發人員更願意避免它們。 – bgporter

+0

類測試儀(): 高清I_(個體經營): 如果 '我' 不是在全局(): 全局I 如果在全局() 'J': 我= j的 其他: I = 0 其他: I + = 1 DEF J_(個體): 如果不是在全局() 'J': 全球Ĵ J = 0 否則: J + = 1 DEF接近(個體): 全局I 全球j del i del j A =測試者() A.i_() A.j_() A.j_() A.i_() 打印我 打印Ĵ a。關閉() –

0

能夠不將它們設置爲全局聲明,他們不會在globals()來電顯示。例如在你的程序的咆哮中,你可以聲明所有的全局變量,但是不要設置它們直到你想要的。

global test 
if 'test' in globals(): 
    print("test is in globals") 
else: 
    print ("test is not in globals") 

這將導致test is not in globals 但是如果你再這樣做,以後的值設置爲test它會在globals()

global test 
if 'test' in globals(): 
    print("test is in globals") 
    print(test) 
else: 
    print ("test is not in globals") 
    test=45 
if 'test' in globals(): 
    print("test is now in globals") 
    print(test) 
else: 
    print ("test is still not in globals") 

這將返回:

test is not in globals

test is now in globals

45

含義您可以聲明變量檢查的名稱以查看它是否在globals()中,然後設置它並檢查aga在。在你的代碼,你可以嘗試:

global i 
global j 
if 'i' not in globals(): 
    if 'j' in globals(): 
     i = j 
    else: 
     i = 0 
if 'j' not in globals(): 
    j = something 
else: 
    j =somethingElse 
0

這是一個失敗的腳本:

高清play_game(個體經營,猜測= 0):

if guess == 0: #This part is ment for playing without typing the value into the function. This is ment for interactive gameplaying 
     x = True #While x == True the game will continue to spinn 
     while x == True: 
      if 'i' not in globals(): 
       global i 
       if 'j' in globals(): 
        i = j 
       else: 
        i = 0 
      else: 
       i += 1 
      rem = remaining_tries - i-1 
      if i >= remaining_tries: 
       x = False # x become false when i grows to or beyond remaining_tries which is a global variable. 
       print ' You did not guess the right number' 
       print 'The secret number was: ' + str(secret_number) #If yo dont guess the right value its nice to see what it was 
      else: 
       cin = input('Guess the number') 
       if int(cin) == secret_number: 
        print 'Congratulatins!! You guessed the right number!' 
        print 'If you dont remember the secret number was:' + str(secret_number) 
        x = False 
       elif int(cin) > secret_number: 
        print 'Lower' 
        print 'remaining tries = ' +str(rem) 
       elif int(cin) < secret_number: 
        print 'Higher' 
        print 'remaining tries = ' +str(rem) 
       else: 
        print 'You must enter a real number' 
    else: 
     if 'j' not in globals(): 
      global j 
      j = 0 
     else: 
      j += 1 

     rem = remaining_tries - j 
     if int(guess) == secret_number: 
      print 'Congratulatins!! You guessed the right number!' 
      print 'If you dont remember the secret number was:' + str(secret_number) 
     elif int(guess) > secret_number: 
      print 'Lower' 
      print 'remaining tries = ' +str(rem) 
     elif int(guess) < secret_number: 
      print 'Higher' 
      print 'remaining tries = ' +str(rem) 
     else: 
      print 'You must enter a real number' 
def close(self): 
    global i 
    global j 
    del i 
    del j 
+0

這是一個班級 –