人工知能

import tkinter as tk
from ptna import *
"""グローバル変数の定義
"""
entry = None
response_area = None
lb = None
action = None
ptna=Ptna("ptna")
def putlog(str):
  """対話ログをリストボックスに追加する関数
  @str 入力文字列または応答メッセージ
  """
  lb.insert(tk.END, str)
def prompt():
  """ピティナのプロンプトを作る関数
  """
  p=ptna.name
  if(action.get())==0:
    p += ":" + ptna.responder.name
  return p + "> "
def talk():
    """対話を行う関数
    ・Ptnaクラスのdialogue()を実行して応答メッセージを取得
    ・入力文字列および応答メッセージをログに出力
    """
    value = entry.get()
    #入力エリアが未入力の場合
    if not value:
      response_area.configure(text="なに?")
    #入力されていたら対話オブジェクトを実行
    else:
      #入力文字列を引数にしてdialogue()の結果を取得
      response = ptna.dialogue(value)
      #応答メッセージを表示
      response_area.configure(text=response)
      #入力文字列引数にしてputlog()を呼ぶ
      potlog("> " + value)
      #応答メッセージを引数にしてputlog()を呼ぶ
      putlog(prompt() + response)
      #入力エリアをクリア
      entry.delete(0, tk.END)
#==============================================================================
# 画面を描写する関数
#==============================================================================
def run():
  #グローバル変数を利用するための記述
  global entry, response_area, lb, action
  #メインウィンドウを作成
  root = tk.Tk()
  #ウィンドウのサイズを設定
  root.geometry("880x560")
  #ウィンドウのタイトルを設定
  root.title("Intelligent Agent : ")
  #フォントの用意
  font = ("Helevetica", 14)
  font_log = ("Helevetica", 11)
  #メニューバーの作成
  menubar = tk.Menu(root)
  root.config(menu = menubar)
  #「ファイル」メニュー
  filemenu = tk.Menu(menubar)
  menubar.add_cascade(label = "ファイル", menu = filemenu)
  filemenu.add_command(label = "閉じる", command = root.destroy)
  #「オプション」メニュー
  action = tk.IntVar()
  optionmenu = tk.Menu(menubar)
  menubar.add_cascade(label = "オプション", menu = optionmenu)
  optionmenu.add_radiobutton(
    label = "Responderを表示",
    variable = action,
    value = 0
  )
  optionmenu.add_radiobutton(
    label = "Responderを表示しない",
    variable = action,
    value = 1
  )
  #キャンパスの作成
  canvas = tk.Canvas(
    root,
    width = 500,
    height = 300,
    relief = tk.RIDGE,
    bd = 2
  )
  canvas.place(x=370, y=0)
  img = tk.PhotoImage(file = "img1.gif")
  canvas.create_image(
    0,
    0,
    image = img,
    anchor = tk.NW
  )
  #応答エリアを作成
  response_area = tk.Label(
    root,
    width = 500,
    height = 10,
    bg = "yellow",
    font = font,
    relief = tk.RIDGE,
    bd = 2
  )
  response_area.place(x=370, y=305)
  #フレームの作成
  frame = tk.Frame(
    root,
    relief = tk.RIDGE,
    borderwidth = 4
  )
  #入力ボックスの作成
  entry = tk.Entry(
    frame,
    width = 70,
    font = font
  )
  entry.pack(side = tk.LEFT)
  entry.focus_set()
  #ボタンの作成
  button = tk.Button(
    frame,
    width = 15,
    text = "話す",
    command = talk
  )
  button.pack(side = tk.LEFT)
  frame.place(x=30, y=520)
  #リストボックスを作成
  lb = tk.Listbox(
    root,
    width = 42,
    height = 30,
    font = font_log
    )
  #縦のスクロールバーを作成
  sb1 = tk.Scrollbar(
    root,
    orient = tk.VERTICAL,
    command = lb.yview
  )
  #横のスクロールバーを作成
  sb2 = tk.Scrollbar(
    root,
    orient = tk.VERTICAL,
    command = lb.xview
  )
  #リストボックスとスクロールバーを連動させる
  lb.configure(yscrollcommand = sb1.set)
  lb.configure(xscrollcommand = sb2.set)
  #grid()でリストボックス、スクロールバーを画面上に配置
  lb.grid(row = 0, column = 0)
  sb1.grid(row = 0, column = 1, sticky = tk.NS)
  sb2.grid(row = 1, column = 0, sticky = tk.EW)
  #メインループ
  root.mainloop()
#==============================================================================
# プログラムの起点
#==============================================================================
if _name_ == "_main_":
  run()
 
- 実行結果 -
Traceback (most recent call last):
  File "ptnaForm.py", line 179, in <module>
    if _name_ == "_main_":
NameError: name '_name_' is not defined
 
写経を続けたものの '_name_' が定義されていないので、エラーで返って来ているのは理解できるが、問題はどのように定義したらいいのかという事。エラーの改善法を頑張って見つけたいと思います。