大部分参考: 合一算法的Python实现–人工智能
添加一个简陋的GUI
效果
from tkinter import*
import tkinter.messagebox #弹窗库
import re
def find_all(s,sub):
index_list = []
index = s.find(sub)
while index != -1:
index_list.append(index)
index = s.find(sub,index+1)
if len(index_list) > 0:
return index_list
else:
return -1
def chang(s,i):
temp = s[i]
pre = s[i-1]
string = s[0:i-1] + temp + pre + ',' + s[i+1:]
return string
"""
处理文字,返回列表
- 中文字符切换为英文
- 括号转化为列表
- 空格转为逗号
- 函数名一律转为大写字母
"""
def handleWord(word):
#P(x, y, g(z))转化为:(P x y (g z))
word = word.replace('(', '(')
results = find_all(word,'(')
for i in range(len(results)):
results = find_all(word,'(')
word = chang(word,results[i])
# 中文字符切换为英文; 空格转为逗号
word = word.replace('(', '[').replace(')', ']').replace('(', '[').replace(')', ']').replace(' ', ',').strip()
# 对谓词进行操作
if len(word) > 3:
# 函数名一律转为大写字母
def func(x):
return '[' + x.string[x.start()+1].upper()
word = re.sub(r'\[(\w)', lambda x:func(x), word)
# 将word中字母字符转化为ASCII码,为了使用eval直接将