我没有那么多在python中编程的经验,所以我的问题可能很简单。我正在为学校做一个项目,我们需要从用户输入创建一个输出(我们想模仿Eliza,但是以一种非常简单的方式)。现在,该程序唯一做的就是寻找关键字并做出相应的响应。但是,因为我去法国学校,一切都是法语,我需要使用口音(例如é,è,à,á)。这就是问题到来的地方:我不能在我预定义的关键字列表中使用重音符号(所以它不是来自用户输入的关键字,而是在我自己的程序中:/)
这里有整个程序:
#Greeting from bot
print("Salut!")
(以下是我们用来知道是否存在否定以及用户句子中是否存在任何贬低形容词的预定义关键字 - 为了使我们的机器人更多,我们需要更大一些人性化,但这只是原则)
negation = ("ne", "n'", "pas", "guere", "ne", "plus", "jamais")
AnD = ("artificiel", "cree", "mecanique", "invente", "concu", "construit", "programme", "innove", "fabrique")
但问题是:为了运行我们的程序,我们必须删除所有重音。所以像guère,créé,mécanique,inventé,programmé这样的词语会变成 guere,cree,mecanique,invente,program ,在某些情况下它会改变单词的含义(例如程序成为名词而不是形容词)
adj_neg_decl = None
nega = None
#FONCTION: phrase declarative, pas de negations, adjectif pejoratif
def decl_non_neg_adj_neg(statement):
if (statement.endswith('.')) and (nega == False) and (adj_neg_decl == True):
print(AnD_ici + '? Mais moi je suis humain. Ca se voit pas?')
else:
#Only for testing
print('tralalalala')
while True:
statement = raw_input("> ").lower()
if statement == "au revoir":
print("Au revoir!")
break
(这里我们只是寻找否定和形容词 - 如果你有另一种(更有效的)方式,我很乐意听到你的建议!我不妨学习一些新东西:))< / em>的
for i in negation:
if i in statement:
nega = True
break
else:
nega = False
for i in AnD:
if i in statement:
adj_neg_decl = True
AnD_ici = i
break
else:
adj_nej_decl = False
decl_non_neg_adj_neg(statement)
#Reset variables
for var in (adj_neg_decl, nega):
var = None
我曾想过使用unicode或utf-8,但我真的不知道如何使用它......这是正确的方法吗?或者我还能做些什么吗?
非常感谢你的帮助:)。
答案 0 :(得分:-1)
我正在使用Python 2,我认为列表可能是存储关键字的好方法。
我可以直接输入重音符号。对于é,我按住我的Alt键,然后从数字键盘按下这些数字:130。(如果你想找到其他字符,请在你最喜欢的搜索引擎中搜索windows alt key symbols
。)
使用in
运算符判断给定单词是否在您的列表中也可能会有所帮助。
这是一个例子。
>>> AnD = ['créé', 'mécanique', 'artificiel']
>>> 'jamais' in AnD
False
>>> 'créé' in AnD
True
Bonne chance!