我必须创建一个程序,允许用户在一个句子中输入一种食物,例如我想要披萨或我想订购印度菜。然后必须拆分句子,然后程序可以搜索文本文件中的每个单词,如果它在文本文件中找到该单词,则应打印出食物。
TypeFood = input("What food would you like to order?")
words = TypeFood.split()
with open("HungryHorseMenu.txt", "r") as f:
for line in f:
if words in line:
splitted_line = line.split(',')
print(splitted_line[0])
我收到此代码的错误,因为它说: 在'要求字符串作为左操作数,而不是列表
我的文字文件是:
意大利素食比萨饼
玛格丽塔披萨,意大利人
肉宴披萨,意大利
意粉肉酱,意大利面,意大利
Tagliatteli,意大利面,意大利
芝士汉堡,美国
鸡肉汉堡,美国人
Veggie汉堡,美国人
热狗,美国人
鸡肉咖喱,印度
蔬菜咖喱,印度
答案 0 :(得分:1)
if any(word in line for word in words)
单词是一个列表,你必须迭代它以检查行中是否有任何单词。
答案 1 :(得分:0)
您遇到的问题是您尝试在此处搜索字符串列表:
for words in line
您现在有两种方式: a)@Sagar建议的方式(我将所有内容改为小写并添加了列表生成器构建)
if any((word.lower() in line.lower() for word in words))
b)检查所有单词是否在行中(但行也可以包含其他单词) if all((word.lower()中的word.lower()for words in words))
答案 2 :(得分:0)
我认为这会有用,你还应该考虑标点符号和区分大小写,这就是我使用正则表达式的原因。
class ViewController: UIViewController {
var staticWindow: UIWindow!
override func viewDidLoad() {
super.viewDidLoad()
showWindow()
}
func showWindow() {
let frame = CGRect(x: 10, y: 10, width: 100, height: 100)
let vc = MyViewController()
let label = UILabel(frame: frame)
label.text = "Hi there"
vc.view.addSubview(label)
staticWindow = UIWindow(frame: frame)
staticWindow.rootViewController = MyViewController()
staticWindow.windowLevel = UIWindowLevelAlert + 1;
staticWindow.makeKeyAndVisible()
staticWindow.rootViewController?.presentViewController(vc, animated: false, completion: nil)
}
}
class MyViewController: UIViewController {
override func shouldAutorotate() -> Bool {
return false
}
override func shouldAutomaticallyForwardRotationMethods() -> Bool {
return false
}
override func shouldAutomaticallyForwardAppearanceMethods() -> Bool {
return false
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.Portrait
}
}