我的代码有问题。它将一个字符串拆分成一个列表并解析它。我想在列表中识别一个单词时做一些事情。我查看了IF
语句,虽然从逻辑上看,代码只产生语句"屏幕问题建议"无论输入的句子如何。我有点难过为什么我不能在条件语句中使用current_word。这有什么明显的错误吗?
text=str(input("enter your problem"))
words = text.split()
for current_word in words:
print(current_word)
if current_word=="screen":
print("screen problem advice")
elif current_word=="power":
print("power_problem advice ")
elif current_word=="wifi":
print("connection_problems advice")
非常感谢任何建议。
答案 0 :(得分:0)
如果我在我的机器上运行你的代码,它就会像它应该的那样工作。
if elif elif elif else
的一些简短模式是使用一些dict()
并使用.get()
- 方法进行查找。
这样的代码......
if word == "one":
variable = "11111"
elif word == "two":
variable = "22222"
elif word == "three":
variable = "33333"
else:
variable = "00000"
...可以用更短的形式写出来:
variable = dict(
one="11111",
two="22222",
three="33333"
).get(word, "00000")
回到你的问题。这是一些样本。
我创建了一个detect
函数,它可以生成所有检测到的建议。
在main
函数中,建议只是打印出来。
请注意.lower()
内的ISSUES.get(word.lower())
,因此它会捕获" wifi"," Wifi"," WiFi"的所有变体。 ,...
def detect(message):
ISSUES = dict(
wifi="network problem_advice",
power="power problem_advice",
screen="screen problem_advice"
)
for word in message.split():
issue = ISSUES.get(word.lower())
if issue:
yield issue
def main(message):
[print(issue) for issue in detect(message)]
if __name__ == '__main__':
main("The screen is very big!")
main("My power supply is working fine, thanks!")
main("Wifi reception is very good today!")
此外,我故意选择一些奇怪的例子来指出你试图解决问题的一些基本问题。
简单的字符串匹配不够,因为在这种情况下产生误报。 试着想一些其他方法。