
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!
Bạn Đang Xem: Hướng dẫn variable not defined python function – biến không được xác định hàm python
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
KaoskaosKaos
691 Huy hiệu vàng1 Huy hiệu bạc7 Huy hiệu đồng1 gold badge1 silver badge7 bronze badges
10
Xem Thêm : 6 lên đồ cho airi tốt nhất, đừng bỏ lỡ
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
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
462K67 Huy hiệu vàng485 Huy hiệu bạc628 Huy hiệu Đồng67 gold badges485 silver badges628 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
Xem Thêm : Tác dụng phụ của cây trinh nữ hoàng cung
Đã 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
Xem Tắt
Làm cách nào để khắc phục biến không được xác định trong Python?
Python “NameError: Tên không được xác định” xảy ra khi chúng ta cố gắng truy cập một biến hoặc hàm không được xác định hoặc trước khi nó được xác định. Để giải quyết lỗi, hãy đảm bảo bạn chưa viết sai tên của biến và truy cập nó sau khi nó được khai báo.make sure you haven’t misspelled the variable’s name and access it after it has been declared.
Tại sao Python nói rằng chức năng của tôi không được xác định?
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.occurs when we try to call a function that is not declared or before it is declared. To solve the error, make sure you haven’t misspelled the function’s name and call it after it has been declared.
Làm thế nào để bạn kiểm tra xem một biến không được xác định trong Python?
Kiểm tra xem một biến được xác định trong Python.. Sử dụng hàm locals ().Để kiểm tra xem biến có được xác định trong phạm vi cục bộ hay không, bạn có thể sử dụng hàm locals (), trả về từ điển đại diện cho bảng ký hiệu cục bộ hiện tại….. Sử dụng hàm vars ()….. Sử dụng hàm Dir ()….. Sử dụng hàm globals () ..
Bạn có thể xác định một biến trong một chức năng Python?
Kết quả thực tế của điều này là các biến có thể được xác định và sử dụng trong hàm Python ngay cả khi chúng có cùng tên với các biến được xác định trong các chức năng khác hoặc trong chương trình chính.variables can be defined and used within a Python function even if they have the same name as variables defined in other functions or in the main program.
Nguồn: https://quatangtiny.com
Danh mục: Blog