作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要要求用户输入一个将与列表进行比较的问题。将显示匹配的单词,然后链接到选项菜单。我添加了下面的代码。我已经设法让程序搜索输入并在出现匹配项时返回查找列表中的单词。但是我不知道如何在 if 语句中使用结果,因为它不是字符串值。我知道要做到这一点有很长的方法,但是有没有一种简单的方法可以将“结果”更改为字符串值?
import re
question = input("Please enter your problem:")
find=["display","screen","battery"]
words=re.findall("\w+",question)
result=[x for x in find if x in words]
print (result)
if result in find:
print("Is your display not working?")
else:
print("Hard Luck")
抱歉,我忘了说比赛的结果将导致选择/打印不同的 if 语句。例如 - 如果“问题”使用“显示”一词,则将打印一条建议解决方案的 IF 语句,如果“问题”使用“屏幕”一词,则将打印 elif 来解决屏幕损坏的问题elif 'question'used 'battery' elif 解决方案为电池充电将被打印。问题是我无法将“结果”更改为要在 IF 语句中使用的 str 值。我无法检查 - 如果结果==“显示”..或者如果结果==“屏幕”..或者如果结果==“电池”...
最佳答案
如果您想要实现的目标是给定用户输入,则用户给出的用户中的任何单词是否也出现在 find
列表中。然后你应该检查结果列表是否为空。如果 result
列表为空,则意味着 find
中的任何单词都不存在于列表 words
中。示例-
if result:
print("Is your display not working?")
else:
print("Hard Luck")
请注意,空列表在 bool 上下文中被视为 False
,因此您可以简单地执行 if result:
,如上所述。
更简单的方法是从一开始就创建集
并使用set.intersection()
。示例-
import re
question = input("Please enter your problem:")
find=set(["display","screen","battery"])
words=re.findall("\w+",question)
result = find.intersection(words)
if result:
print("Is your display not working?")
else:
print("Hard Luck")
关于Python - 尝试在 IF 语句中使用列表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32522198/
我是一名优秀的程序员,十分优秀!