所以我正在创建一个非常基本的基于文本的游戏,但是我希望程序给出的答案相对正确以响应不同的输入。我不想告诉程序为每个不同的答案写一个特定的东西,而是希望能够将类型字典导入到脚本中,并为不同的单词组(如负面和正面内涵)提供关键字。这可能吗?我读过的所有内容都没有真正回答我的问题或做了我想要的事情......
我的模拟脚本如下:
词典包括:
a=raw_input("Are you well?")
if a=='yes':
print("Good to hear.")
elif a=='yep":
print("Good to hear!")
#I don't want to put it all in manually or use 'or'
elif a=='no':
print("That's not good!")
elif a=='nope':
print("That's not good!")
else:
print("Oh.")
用词典:
NegConns=('no','nope','never','No','Nope')
#'no' etc. is what the user inputs, NegConns is the keyword
PosConns=('yes','sure','okay','fine','good')
import mydiction
question=raw_input("How are you?")
if question== NegConns:
print("That's not good.")
elif question==PosConns:
print("Good to hear.")
else:
print("oh.")
所以基本上如果输入是否定的,程序是同情的,如果输入是肯定的,程序祝贺。我不确定这是否可能正是我想要的,或者如果我以错误的方式解决这个问题,我似乎无法找到帮助,所以我不能这样做。把它放在那里......提前致谢。
答案 0 :(得分:1)
这几乎是正确的,除非您想稍微调整一下import语句:
from mydiction import NegConns, PosConns
并将您的相等测试更改为数组成员资格测试,如下所示:
if question in NegConns:
或者,
if question in PosConns:
另外,你应该看看https://docs.python.org/3/tutorial/controlflow.html#default-argument-values。示例代码段看起来几乎与您尝试解决的问题完全相同。
此外,请考虑使用词典或集合而不是列表/元组。在词典/集合上使用in
运算符时,您应该获得O(1)查找的好处。
答案 1 :(得分:0)
我认为没问题,但您可以创建一个带有否定和肯定答案的列表,并在if语句中进行检查。看看它是如何工作的:
negativeAnswers = ['No','Nope','I don't think so']
positiveAnswers = ['Yeah', 'Yes', 'Of Course']
question1 = raw_input('How are you?')
if question.lowercase() in positiveAnswers;
print('Nice to hear that!')
elif question.lowercase() in negativeAnswers:
print('Oh')
else:
print('Sorry. I didn't understand you. :(')
我希望它对你有所帮助。
答案 2 :(得分:0)
让我们说您的目录结构如下:
--\my_project # Your directory containing the files
-| mydiction.py
-| testmod.py
在 my_project 目录中添加__init__.py
,使其成为python module。现在您的项目结构将如下:
--\my_project
-| __init__.py
-| mydiction.py
-| testmod.py
现在为了从{em> mydiction.py 到 testmod.py import
,您必须在 testmod.py as:
from mydiction import NegConns, PosConns