Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如果原始输入包含…等等_Python_Raw Input - Fatal编程技术网

Python:如果原始输入包含…等等

Python:如果原始输入包含…等等,python,raw-input,Python,Raw Input,(我不熟悉Python和编程)我正在使用raw\u input(),这样我就可以制作一个与用户对话的程序。例如: 节目:你好吗? 用户:我做得很好/我感觉糟透了 我需要我的程序做出相应的响应,如“耶!”或“哦,我希望你很快会感觉好点。”那么,你能给我一些方法来扫描用户原始输入中的“好”或“坏”等词,以便我的程序知道如何响应吗 我知道一些方法可以做到这一点,但问题是,我想让它寻找多个词,如伟大,惊人,和可怕都可以归入“好”组。而且,我需要它在不需要精确的地方。我不断遇到问题,用户必须准确地键入“我

(我不熟悉Python和编程)我正在使用
raw\u input()
,这样我就可以制作一个与用户对话的程序。例如:

节目:你好吗? 用户:我做得很好/我感觉糟透了

我需要我的程序做出相应的响应,如“耶!”或“哦,我希望你很快会感觉好点。”那么,你能给我一些方法来扫描用户原始输入中的“好”或“坏”等词,以便我的程序知道如何响应吗


我知道一些方法可以做到这一点,但问题是,我想让它寻找多个词,如伟大,惊人,和可怕都可以归入“好”组。而且,我需要它在不需要精确的地方。我不断遇到问题,用户必须准确地键入“我很好”,而不是他们可能会说的所有不同的变体。提前谢谢你

我不确定是否有一个懂英语的程序。它将只接受字符串文字作为字符串文字。对于Python中的解释器,“Good”并不意味着好或坏

我的建议是为你想要的所有好短语编一本字典,比如我很好,感觉很好,我很好。您可以将所有这些感觉良好的字符串文本存储到您的“感觉良好”词典中,反之亦然


我不太确定你如何处理的拼写问题。我不确定是否有一个程序能理解英语。它将只接受字符串文字作为字符串文字。对于Python中的解释器,“Good”并不意味着好或坏

我的建议是为你想要的所有好短语编一本字典,比如我很好,感觉很好,我很好。您可以将所有这些感觉良好的字符串文本存储到您的“感觉良好”词典中,反之亦然


我不太确定您如何使用解决拼写问题,您可能会发现
set
s在这里很有用

sentence = "I feel great"
words = sentence.split(" ")
if set("good", "fine", "great").intersects(words):
    print("user is good!")
if set("bad", "poorly", "sick").intersects(words):
    print("user is bad")
set
是一种特殊类型的容器,如
list
dict
。它忽略重复的条目,但在检查项目是否已经存在时速度非常快
set.intersects
返回一个新的
set
,该集合只包含在两侧找到的项:因此,在上面的第一个
if
语句中,它返回
set(“great”)
,即“truthy”(在布尔上下文中的行为类似于
True
)。第二个if语句得到一个空集,即“false”

你可以用字典把它清理干净(但你必须做一些轻微的修改,我将在下面解释)

我们不得不使用
frozenset
而不是
set
。您需要担心的唯一真正区别是,
frozenset
是不可变的,这意味着您不能在其中添加或删除成员。出于与实现相关的原因,
dict
键应该是不可变的:不能使用
dict
list
set
作为键:但可以使用
tuple
int
str

不使用
set
,您可以获得完全相同的行为:只需多行代码:

responses = {("good", "fine", "great"): "that's fantastic",
             ("bad", "poorly", "sick"): "I hope you feel better!"}

words = sentence.split(" ")
for wordtuple, reply in responses:
    for word in words:
        if word in wordtuple:
            print(reply)
            break

所以,我们还需要两行代码,最后要做的检查要比实际需要的多得多。如果有很多可能的单词要检查,那会减慢程序的速度。这样做并不总是坏事,例如,您可能会得到
响应,这意味着您无法控制类型,但是如果您知道自己正在编写所有代码,那么从一开始就以pythonical方式进行操作是很好的。

您可能会发现
set
在这里很有用

sentence = "I feel great"
words = sentence.split(" ")
if set("good", "fine", "great").intersects(words):
    print("user is good!")
if set("bad", "poorly", "sick").intersects(words):
    print("user is bad")
set
是一种特殊类型的容器,如
list
dict
。它忽略重复的条目,但在检查项目是否已经存在时速度非常快
set.intersects
返回一个新的
set
,该集合只包含在两侧找到的项:因此,在上面的第一个
if
语句中,它返回
set(“great”)
,即“truthy”(在布尔上下文中的行为类似于
True
)。第二个if语句得到一个空集,即“false”

你可以用字典把它清理干净(但你必须做一些轻微的修改,我将在下面解释)

我们不得不使用
frozenset
而不是
set
。您需要担心的唯一真正区别是,
frozenset
是不可变的,这意味着您不能在其中添加或删除成员。出于与实现相关的原因,
dict
键应该是不可变的:不能使用
dict
list
set
作为键:但可以使用
tuple
int
str

不使用
set
,您可以获得完全相同的行为:只需多行代码:

responses = {("good", "fine", "great"): "that's fantastic",
             ("bad", "poorly", "sick"): "I hope you feel better!"}

words = sentence.split(" ")
for wordtuple, reply in responses:
    for word in words:
        if word in wordtuple:
            print(reply)
            break

所以,我们还需要两行代码,最后要做的检查要比实际需要的多得多。如果有很多可能的单词要检查,那会减慢程序的速度。这样做并不总是坏事,例如,您可能会得到
响应,这意味着您无法控制类型,但如果您知道自己正在编写所有代码,那么从一开始就以pythonical的方式来做事情是很好的。

我宁愿使用['x'、'y'、'z'中的简单
'x'来完成它
向新程序员介绍不同的数据类型,但要有很好的解释nonetheless@taesu我相信教人正确地做这件事,而不是轻易地做。而且
set
非常常见(而且非常有用),它是一种内置类型。简单的教学不一定是错误的。我敢肯定,新程序员会被你们向他们扔的所有这些类型的东西弄得不知所措。谢谢你们我宁愿用['x','y','z']
中的简单的
'x'来做这件事,而不是向新的程序员介绍不同的数据类型,但是