亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試在任何地方定義全局變量時,我得到“無效語法”

嘗試在任何地方定義全局變量時,我得到“無效語法”

森林海 2021-09-14 20:59:08
我目前正在嘗試制作一個劊子手游戲。我已經在任何函數之外定義了變量“lives”,但是當嘗試在 start_game 函數中使用它時,編輯器說該變量已定義但從未使用過。但是,當我嘗試將它聲明為全局時,無論它是在函數內部還是外部,它都會給我一個“無效語法”錯誤——特別是在賦值運算符“=”處。import randomwords = "dog cat log hog etc"     # <-- just a huge string of a bunch of wordswords = words.split()word = random.choice(words)# Difficulties: Easy:12 Medium:9 Hard:6lives = 0current = "_" * len(word)def gameLoop():  while current != word and lives > 0:    print("Guess a letter. If you wish to exit the game, enter 'exit'")    input("")    print(lives)def start_game():  while True:    print("Welcome to Hangman! What game mode would you like to play? Easy, medium, or hard?")    game_mode = str.lower(input(""))   if game_mode == "easy":      lives = 12      gameLoop()      break    elif game_mode == "medium":      lives = 9      gameLoop()      break    elif game_mode == "hard":      lives = 6      gameLoop()      breakstart_game()
查看完整描述

2 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

在我寫這個問題的時候,我意識到我做錯了什么,所以我決定繼續自己回答這個問題。

當您將變量定義為全局變量時,您不想像這樣為變量分配一個變量:

global lives = 0

那會給你一個錯誤。為什么?當你想將一個變量定義為全局變量時,你是在告訴計算機,“嘿,這里的這個變量是全局使用的,而不是本地使用的?!?nbsp;上面這行代碼的問題在于,您還為變量分配了一個值,而此時您應該做的就是告訴計算機該變量是全局的。如果你想給變量賦值(無論是第一次還是重新賦值),那么你需要在不同的代碼行上賦值。

當我查找這個時,我沒有發現任何明確的說法,所以我希望這有助于任何使用 python 編碼的新人或者像我一樣忘記它是如何工作的人。


查看完整回答
反對 回復 2021-09-14
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

首先,global語句是聲明,而不是可執行語句。它只是告訴解釋器查看模塊命名空間而不是函數調用命名空間。它只需要在函數內部使用。


在外面,本地和全局命名空間是同一個東西(模塊命名空間),所以該global語句什么都不做。


該語句必須是關鍵字,global后跟要被視為全局名稱的逗號分隔列表。如果要為任何名稱賦值,無論是否為全局名稱,都必須在單獨的賦值語句中進行。


您可能想要更像下面的代碼的東西,它會按照您的需要“工作”(我意識到這只是開發中的部分程序)。我修復了縮進以符合 PEP 8,因為我的老眼睛發現否則很難閱讀代碼!


import random


words = "tom dick harry".split()

word = random.choice(words)



# Difficulties: Easy:12 Medium:9 Hard:6

lives = 0


current = "_" * len(word)



def gameLoop():

    global lives

    while current != word and lives > 0:

        print("Guess a letter. If you wish to exit the game, enter 'exit'")

        input("")

        print(lives)



def start_game():

    global lives

    while True:

        print(

            "Welcome to Hangman! What game mode would you like to play? Easy, medium, or hard?"

        )

        game_mode = str.lower(input(""))


        if game_mode == "easy":

            lives = 12

            gameLoop()

            break

        elif game_mode == "medium":

            lives = 9

            gameLoop()

            break

        elif game_mode == "hard":

            lives = 6

            gameLoop()

            break



start_game()



查看完整回答
反對 回復 2021-09-14
  • 2 回答
  • 0 關注
  • 226 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號