Ý nghĩa không được xác định Python

Vì vậy, tôi đang làm một trò chơi tic-tac-toe và tôi nghĩ tôi sắp hoàn thành. tôi đang cố gắng làm cho trò chơi có thể chơi nhiều hơn một lần trước khi kết thúc. Vì vậy, tôi đã đặt nó vào một hàm def[]… nhưng khi chạy nó thì kết quả là NameError: name 'turn' is not defined. Bất kỳ ý tưởng tại sao và làm thế nào để khắc phục điều này?


def game[]:
  blanksheet = "|1|2|3|\n|4|5|6|\n|7|8|9|"
  sheet = blanksheet
  print[sheet]

  gone = []
  turn = 0
  def play[XO,player,listXO]:
    global turn
    global sheet
    global listx
    global listo
    while True:
      num = input[player+" enter an available number where you want to put an "+XO+".\n > "]

      try:
        num = int[num]

      except ValueError:
        print["Not a valid number, try again."]
        continue
      
      if num < 1 or num > 9:
        print["Number not in correct range, try again."]
        continue
    
      if num in gone:
        print["Number already used, try again."]
        continue

      gone.append[num]
      listXO.append[num]
      turn += 1   #the "problem is here"
      sheet = sheet.replace[str[num],XO]
      print[sheet]
      break

  win = "h"
  listx = []
  listo = []
  def checkstatus[listXO, playerwin]:
    if len[listXO] >= 3:
      if 1 in listXO and 2 in listXO and 3 in listXO:
        winspeak[playerwin] #vertical
      elif 4 in listXO and 5 in listXO and 6 in listXO:
        winspeak[playerwin] #vertical
      elif 7 in listXO and 8 in listXO and 9 in listXO:
        winspeak[playerwin] #vertical
      elif 1 in listXO and 4 in listXO and 7 in listXO:
        winspeak[playerwin] #horizontal
      elif 2 in listXO and 5 in listXO and 8 in listXO:
        winspeak[playerwin] #horizontal
      elif 3 in listXO and 6 in listXO and 9 in listXO:
        winspeak[playerwin] #horizontal
      elif 1 in listXO and 5 in listXO and 9 in listXO:
        winspeak[playerwin] #diagonal
      elif 3 in listXO and 5 in listXO and 7 in listXO:
        winspeak[playerwin] #diagonal
      if [len[listx] + len[listo]] == 9:
        print["\n Neither player wins, thats a tie!"]
        exit[]

  def winspeak[player]:
    print["\n"+player+" wins!"]
    exit[]

  def checkplay[]:
    while win != "Xwin" or win != "Owin":
      if turn % 2 == 0:
        play["X","Player 1",listx]
        checkstatus[listx,"Player 1"]
      else:
        play["O","Player 2",listo]
        checkstatus[listo,"Player 2"]

  checkplay[]

game[]

Chào Drew,

Hãy nhớ rằng Python sử dụng thụt đầu dòng để cho biết nội dung bên trong hàm
và những gì bên ngoài nó. Bạn nên xác định các chức năng của mình ở đầu
bạn tập tin. Mỗi chức năng nên bắt đầu ở cấp 1 [không được thụt lề] như thế này


def game[]:
    # block is indented


# don't indent the function signature
def play[XO, player, listXO]:
    # block is indented


# Finally at the end:
game[]  # not indented

Không thụt lề các chức năng bên trong các chức năng khác

Để lại một khoảng cách đẹp [hai dòng] giữa các chức năng để dễ dàng hơn
phát hiện khi một kết thúc và tiếp theo bắt đầu. Điều đó không tạo ra sự khác biệt nào đối với
Trình thông dịch Python, nhưng nó giúp người đọc [bạn] phát hiện ra một
chức năng kết thúc và tiếp theo bắt đầu

Các hằng số không bao giờ thay đổi nên được xác định ở đầu
chương trình, trước các chức năng. Đó là quy ước để viết chúng trong
tất cả chữ hoa để người đọc biết rằng họ không bao giờ nên thay đổi

BLANKSHEET = "|1|2|3|\n|4|5|6|\n|7|8|9|\n"

Các biến toàn cục của bạn phải được xác định trong hàm game[]

def game[]:
    global turn, sheet, listx, listo
    turn = 0
    sheet = BLANKSHEET
    print[sheet]
    ...

Có thể có những cải tiến và nhận xét khác cần thiết sau đó

Hãy vui vẻ với lập trình của bạn

Bước đầu tiên trong việc sửa lỗi viết mã là hiểu lỗi. Mặc dù một số thông báo lỗi có vẻ khó hiểu nhưng hầu hết chúng sẽ giúp bạn khắc phục lỗi

Trong bài viết này, chúng ta sẽ nói về một lỗi thuộc danh mục NameError trong Python

Bạn sẽ thấy NameError là gì, một số ví dụ về mã để cho biết cách thức/tại sao xảy ra lỗi và cách khắc phục chúng

NameError trong Python là gì?

Trong Python, NameError xảy ra khi bạn cố gắng sử dụng một biến, hàm hoặc mô-đun không tồn tại hoặc không được sử dụng theo cách hợp lệ

Một số lỗi phổ biến gây ra lỗi này là

  • Sử dụng tên biến hoặc hàm chưa được xác định
  • Viết sai tên biến/hàm khi gọi biến/hàm
  • Sử dụng mô-đun Python mà không cần nhập mô-đun, v.v.

Cách khắc phục "NameError. Tên không được xác định" trong Python

Trong phần này, bạn sẽ thấy cách sửa lỗi "NameError. Tên không được xác định" lỗi trong Python

Tôi đã chia phần này thành các phần con để hiển thị lỗi ở trên khi sử dụng biến, hàm và mô-đun

Chúng ta sẽ bắt đầu với các khối mã gây ra lỗi và sau đó xem cách khắc phục chúng

Ví dụ #1 - Tên biến không được xác định trong Python

name = "John"

print[age]
# NameError: name 'age' is not defined

Trong đoạn mã trên, chúng ta đã định nghĩa một biến name nhưng đã cố in ra biến

name = "John"
age = 12

print[age]
# 12
0 mà vẫn chưa được xác định

Chúng tôi gặp lỗi cho biết.

name = "John"
age = 12

print[age]
# 12
1 để chỉ ra rằng biến
name = "John"
age = 12

print[age]
# 12
0 không tồn tại

Để khắc phục điều này, chúng ta có thể tạo biến và mã của chúng ta sẽ chạy tốt. Đây là cách

name = "John"
age = 12

print[age]
# 12

Bây giờ giá trị của

name = "John"
age = 12

print[age]
# 12
0 được in ra

Tương tự, lỗi tương tự có thể xảy ra khi chúng ta viết sai tên biến. Đây là một ví dụ

name = "John"

print[nam]
# NameError: name 'nam' is not defined

Trong đoạn mã trên, chúng tôi viết

name = "John"
age = 12

print[age]
# 12
4 thay vì ________ 29 ______. Để sửa lỗi như thế này, bạn chỉ cần đánh vần đúng tên biến

Ví dụ #2 - Tên hàm không được xác định trong Python

def sayHello[]:
    print["Hello World!"]
    
sayHelloo[]
# NameError: name 'sayHelloo' is not defined

Trong ví dụ trên, chúng ta đã thêm một chữ o trong khi gọi hàm —

name = "John"
age = 12

print[age]
# 12
6 thay vì
name = "John"
age = 12

print[age]
# 12
7

Chúng tôi đã nhận lỗi.

name = "John"
age = 12

print[age]
# 12
8. Lỗi chính tả như thế này rất dễ bỏ sót. Thông báo lỗi thường giúp sửa lỗi này

Đây là cách đúng để gọi chức năng

def sayHello[]:
    print["Hello World!"]
    
sayHello[]
# Hello World!

Giống như chúng ta đã thấy trong phần trước, việc gọi một biến chưa được xác định sẽ gây ra lỗi. Điều tương tự áp dụng cho các chức năng

Đây là một ví dụ

def sayHello[]:
    print["Hello World!"]
    
sayHello[]
# Hello World!

addTWoNumbers[]
# NameError: name 'addTWoNumbers' is not defined

Trong đoạn mã trên, chúng ta đã gọi một hàm –

name = "John"
age = 12

print[age]
# 12
9 – chưa được định nghĩa trong chương trình. Để khắc phục điều này, bạn có thể tạo chức năng nếu bạn cần hoặc chỉ cần loại bỏ chức năng nếu nó không liên quan

Lưu ý rằng việc gọi một hàm trước khi tạo nó sẽ gây ra lỗi tương tự theo cách của bạn. Đó là

sayHello[]

def sayHello[]:
    print["Hello World!"]
    
# NameError: name 'sayHello' is not defined

Vì vậy, bạn phải luôn xác định chức năng của mình trước khi gọi chúng

Ví dụ #3 - Sử dụng Mô-đun mà không nhập Lỗi Mô-đun trong Python

x = 5.5

print[math.ceil[x]]
# NameError: name 'math' is not defined

Trong ví dụ trên, chúng ta đang sử dụng phương thức

name = "John"

print[nam]
# NameError: name 'nam' is not defined
0 của Python mà không cần nhập mô-đun
name = "John"

print[nam]
# NameError: name 'nam' is not defined
1

Lỗi kết quả là thế này.

name = "John"

print[nam]
# NameError: name 'nam' is not defined
2. Điều này xảy ra vì thông dịch viên không nhận ra từ khóa
name = "John"

print[nam]
# NameError: name 'nam' is not defined
1

Cùng với các phương thức toán học khác trong Python, trước tiên chúng ta phải nhập mô-đun

name = "John"

print[nam]
# NameError: name 'nam' is not defined
1 để sử dụng nó

Đây là một sửa chữa

import math

x = 5.5

print[math.ceil[x]]
# 6

Trong dòng đầu tiên của mã, chúng tôi đã nhập mô-đun

name = "John"

print[nam]
# NameError: name 'nam' is not defined
1. Bây giờ, khi bạn chạy đoạn mã trên, bạn sẽ nhận được 6

Tóm lược

Trong bài viết này, chúng tôi đã nói về lỗi "NameError. Tên không được xác định" lỗi trong Python

Đầu tiên chúng tôi định nghĩa NameError là gì trong Python

Sau đó, chúng tôi đã xem một số ví dụ có thể gây ra NameError khi làm việc với các biến, hàm và mô-đun trong Python. Mỗi ví dụ, được chia thành các phần, cho thấy cách sửa lỗi

Mã hóa vui vẻ

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

Ihechikara Vincent Abba

Tiểu sử của tác giả này có thể được tìm thấy trong các bài viết của ông

Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Điều gì không được xác định có nghĩa là gì trong Python?

NameError trong Python là gì? . Một số lỗi phổ biến gây ra lỗi này là. Sử dụng tên biến hoặc hàm chưa được xác định. the NameError occurs when you try to use a variable, function, or module that doesn't exist or wasn't used in a valid way. Some of the common mistakes that cause this error are: Using a variable or function name that is yet to be defined.

có nghĩa là gì không được xác định?

: not defined: such as. : không được hiển thị, mô tả hoặc giới hạn rõ ràng hoặc chính xác .

Lỗi không được xác định có nghĩa là gì?

Lỗi không được xác định là khi chúng tôi không khai báo biến và cố gọi biến đó .

Điều đó có nghĩa là bản in không được định nghĩa trong Python?

TênLỗi. tên 'PRINT' không được xác định. Trong Python “NameError. tên 'PRINT' không được xác định” chúng tôi gặp thông báo lỗi khi viết sai hàm print [chữ in nhỏ] thành PRINT [PRINT Viết hoa] . Để khắc phục lỗi này, hãy đảm bảo rằng chúng tôi cần đánh vần chữ in bằng tất cả các chữ cái viết thường để hiểu rõ hơn, hãy xem ví dụ mã bên dưới.

Chủ Đề