Hướng dẫn why is variable not defined python? - tại sao biến không được định nghĩa là python?

Lỗi nó trả về là:

NameError: name 'lives' is not defined

Tôi biết mã không hiệu quả nhất có thể, đây là một trong những dự án đầu tiên của tôi, tuy nhiên bất cứ điều gì tôi cố gắng làm lỗi này đều xuất hiện, tôi đã thử tạo ra một toàn cầu cho nó nhưng điều đó không giúp ích gì. Tôi thực sự sẽ đánh giá cao một số trợ giúp với điều này, cảm ơn!

import random
import time

def main():
 global guess,rand_num
 win = False
 rand_num = 45
 lives = 10
 while lives > 0 and win == False:
     guess = int(input("Guess a number!"))
     compare()
 print("Well done!")
 time.sleep(3)

def compare():
 global lives,win
 if guess == rand_num:
     print("You guessed correct!")
     win = True
 elif guess > rand_num:
     print ("Guess lower!")
     lives = lives - 1
 else:
     print ("Guess higher!")
     lives = lives - 1

def repeat():
 replay = input("would you like to play again? Y/N")
 if replay == "Y":
     print("enjoy!")
     main()
 elif replay == "N":
     "Goodbye then, hope you enjoyed!"
     time.sleep(3)
     os._exit
 else:
     print("please enter Y or N")
     repeat()

main()
repeat()

Chỉnh sửa: Đặt cuộc sống toàn cầu bên trong Main () trả về lỗi:

UnboundLocalError: local variable 'lives' referenced before assignment

Đã hỏi ngày 21 tháng 6 năm 2016 lúc 21:43Jun 21, 2016 at 21:43

Hướng dẫn why is variable not defined python? - tại sao biến không được định nghĩa là python?

KaoskaosKaos

691 Huy hiệu vàng1 Huy hiệu bạc7 Huy hiệu đồng1 gold badge1 silver badge7 bronze badges

10

Bạn cần xác định biến "cuộc sống" bên ngoài hàm chính, sau đó bất kỳ chức năng nào bạn muốn tham khảo biến toàn cầu mà bạn nói là "cuộc sống toàn cầu". Khi bạn ở trong một hàm và gán một giá trị cho một biến, nó giả định nó nằm trong phạm vi cục bộ. Sử dụng "cuộc sống toàn cầu" cho biết chức năng đó để xem xét phạm vi toàn cầu như là tài liệu tham khảo của cuộc sống.

import random
import time

lives = 10
win = False
guess = 0
rand_num = 45

def main():
    global guess, rand_num, lives, win
    win = False
    rand_num = 45
    lives = 10
    while lives > 0 and win == False:
        guess = int(input("Guess a number!"))
        compare()
    print("Well done!")
    time.sleep(3)

def compare():
    global guess, rand_num, lives, win
    if guess == rand_num:
        print("You guessed correct!")
        win = True
    elif guess > rand_num:
        print ("Guess lower!")
        lives = lives - 1
    else:
        print ("Guess higher!")
        lives = lives - 1

def repeat():
    replay = input("would you like to play again? Y/N")
    if replay == "Y":
        print("enjoy!")
        main()
    elif replay == "N":
        "Goodbye then, hope you enjoyed!"
        time.sleep(3)
        os._exit
    else:
        print("please enter Y or N")
        repeat()

main()
repeat()

Đã trả lời ngày 21 tháng 6 năm 2016 lúc 22:02Jun 21, 2016 at 22:02

Hướng dẫn why is variable not defined python? - tại sao biến không được định nghĩa là python?

Bạn đã không tuyên bố lives là toàn cầu bên trong main(), vì vậy nó là địa phương cho chức năng đó.

def main():
    global guess, rand_num, lives
    ...

Đã trả lời ngày 21 tháng 6 năm 2016 lúc 21:44Jun 21, 2016 at 21:44

Chepnerchepnerchepner

465K68 Huy hiệu vàng491 Huy hiệu bạc636 Huy hiệu Đồng68 gold badges491 silver badges636 bronze badges

Khi bạn khai báo nó bên trong hàm, chúng chỉ có sẵn trong phạm vi chức năng đó, vì vậy hãy khai báo các biến toàn cầu bên ngoài các hàm và mã sẽ hoạt động tốt.

import random
import time

guess = None
random_num = None
lives = 3
win = False


def main():
 global guess,rand_num
 win = False
 rand_num = 45
 lives = 10
 while lives > 0 and win == False:
     guess = int(input("Guess a number!"))
     compare()
 print("Well done!")
 time.sleep(3)

def compare():
 global lives,win
 if guess == rand_num:
     print("You guessed correct!")
     win = True
 elif guess > rand_num:
     print ("Guess lower!")
     lives = lives - 1
 else:
     print ("Guess higher!")
     lives = lives - 1

def repeat():
 replay = input("would you like to play again? Y/N")
 if replay == "Y":
     print("enjoy!")
     main()
 elif replay == "N":
     "Goodbye then, hope you enjoyed!"
     time.sleep(3)
     os._exit
 else:
     print("please enter Y or N")
     repeat()

main()
repeat()

Và bây giờ điều này hoạt động tốt. Để biết thêm thông tin về các biến gloval vs cục bộ bạn có thể đọc: http://www.python-course.eu/global_vs_local_variables.php

Đã trả lời ngày 21 tháng 6 năm 2016 lúc 21:48Jun 21, 2016 at 21:48

TeemoteemoTeemo

4396 Huy hiệu bạc21 Huy hiệu Đồng6 silver badges21 bronze badges

2

Tại sao nó nói rằng biến của tôi không được xác định?

Lỗi này có nguyên nhân và giải pháp sau: Bạn đã sử dụng một tuyên bố rõ ràng tùy chọn để yêu cầu khai báo rõ ràng các biến, nhưng bạn đã sử dụng một biến mà không cần khai báo. Tuyên bố rõ ràng biến hoặc thay đổi cách đánh vần của biến để khớp với biến dự định.You used an Option Explicit statement to require the explicit declaration of variables, but you used a variable without declaring it. Explicitly declare the variable, or change the spelling of the variable to match that of the intended variable.

Làm thế nào để bạn sửa chữa không được xác định Python?

Python "NameError: Function không được xác định" xảy ra khi chúng ta cố gắng gọi một hàm không được khai báo hoặc trước khi nó được khai báo.Để giải quyết lỗi, hãy đảm bảo bạn chưa viết sai tên của chức năng và gọi nó sau khi nó được khai báo.make sure you haven't misspelled the function's name and call it after it has been declared.

Làm cách nào để xác định một biến trong Python?

Python không có lệnh để khai báo một biến.Một biến được tạo ngay khi bạn chỉ định một giá trị cho nó.. A variable is created the moment you first assign a value to it.

Làm thế nào để bạn kiểm tra xem một biến được xác định là Python?

Python không có chức năng cụ thể để kiểm tra xem một biến có được xác định hay không, vì tất cả các biến dự kiến đã được xác định trước khi sử dụng, ngay cả khi ban đầu được gán cho đối tượng Không., since all variables are expected to have been defined before use, even if initially assigned the None object.