将词典导入python脚本?

时间:2016-10-17 11:55:35

标签: python python-2.7

所以我正在创建一个非常基本的基于文​​本的游戏,但是我希望程序给出的答案相对正确以响应不同的输入。我不想告诉程序为每个不同的答案写一个特定的东西,而是希望能够将类型字典导入到脚本中,并为不同的单词组(如负面和正面内涵)提供关键字。这可能吗?我读过的所有内容都没有真正回答我的问题或做了我想要的事情......

我的模拟脚本如下:

词典包括:

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.")

用词典:

mydiction.py

NegConns=('no','nope','never','No','Nope') 
#'no' etc. is what the user inputs, NegConns is the keyword
PosConns=('yes','sure','okay','fine','good')

testmod.py

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.")

所以基本上如果输入是否定的,程序是同情的,如果输入是肯定的,程序祝贺。我不确定这是否可能正是我想要的,或者如果我以错误的方式解决这个问题,我似乎无法找到帮助,所以我不能这样做。把它放在那里......提前致谢。

3 个答案:

答案 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