Python 如果for循环中没有匹配项,如何打印特定消息

Python 如果for循环中没有匹配项,如何打印特定消息,python,python-3.x,loops,for-loop,Python,Python 3.x,Loops,For Loop,我的问题是,如果for循环中没有匹配的内容,如何打印出来。例如: a = {'store' : 'A', 'menu' : 'pizza', 'price' : 20000} b = {'store' : 'B', 'menu' : 'chicken', 'price' : 18000} c = {'store' : 'C', 'menu' : 'noodle', 'price' : 5000} d = {'store' : 'D', 'menu' : 'sushi', 'price' : 15

我的问题是,如果for循环中没有匹配的内容,如何打印出来。例如:

a = {'store' : 'A', 'menu' : 'pizza', 'price' : 20000}
b = {'store' : 'B', 'menu' : 'chicken', 'price' : 18000}
c = {'store' : 'C', 'menu' : 'noodle', 'price' : 5000}
d = {'store' : 'D', 'menu' : 'sushi', 'price' : 15000}
e = {'store' : 'E', 'menu' : 'chicken', 'price' : 23000}
f = {'store' : 'F', 'menu' : 'pork', 'price' : 30000}

Total = [a, b, c, d, e, f]

l = input('what food?:  ')
p = int(input('how much you want to spend?  '))

for i in range(5):
    if Total[i]['menu'] == l and int(Total[i]['price']) <= p:
        print('menu', Total[i]['store'], 'price', Total[i]['price'])
a={'store':'a','menu':'pizza','price':20000}
b={'store':'b','menu':'chicken','price':18000}
c={'store':'c','menu':'面条','price':5000}
d={'store':'d','menu':'sushi','price':15000}
e={'store':'e','menu':'chicken','price':23000}
f={'store':'f','menu':'pork','price':30000}
总计=[a、b、c、d、e、f]
l=输入('什么食物?:')
p=int(输入('你想花多少?'))
对于范围(5)中的i:

如果Total[i]['menu']==l和int(Total[i]['price'])如果您只对符合条件的第一家餐厅感兴趣,您可以使用:

范围(5)内的i的

如果Total[i]['menu']==l和int(Total[i]['price'])只需添加一个布尔值来检查是否找到了价格

a={'store':'a','menu':'pizza','price':20000}
b={'store':'b','menu':'chicken','price':18000}
c={'store':'c','menu':'面条','price':5000}
d={'store':'d','menu':'sushi','price':15000}
e={'store':'e','menu':'chicken','price':23000}
f={'store':'f','menu':'pork','price':30000}
总计=[a、b、c、d、e、f]
l=输入('什么食物?:')
p=int(输入('你想花多少?'))
发现=错误
对于范围(5)中的i:

如果Total[i]['menu']==l和int(Total[i]['price'])我会将字典变量转换为嵌套字典,其中
menu
是键:

a = {"store": "A", "menu": "pizza", "price": 20000}
b = {"store": "B", "menu": "chicken", "price": 18000}
c = {"store": "C", "menu": "noodle", "price": 5000}
d = {"store": "D", "menu": "sushi", "price": 15000}
e = {"store": "E", "menu": "chicken", "price": 23000}
f = {"store": "F", "menu": "pork", "price": 30000}

Total = [a, b, c, d, e, f]

restructured = {d.get("menu"): {k: v for k, v in d.items() if k != "menu"} for d in Total}
这将为您提供以下结构:

{'pizza': {'store': 'A', 'price': 20000}, 'chicken': {'store': 'E', 'price': 23000}, 'noodle': {'store': 'C', 'price': 5000}, 'sushi': {'store': 'D', 'price': 15000}, 'pork': {'store': 'F', 'price': 30000}}
我们可以通过不使用单独的变量,而是使用嵌套字典来避免这种重构。您也不需要循环字典(线性搜索),这对于重复查找(固定时间)来说要快得多

然后,您只需按菜单项访问此词典,并检查是否可以购买该菜单项:

food = input("what food?:  ")
budget = int(input("how much you want to spend?:  "))

menu = restructured.get(food)
if menu:
    price = int(menu.get("price"))
    if budget <= price:
        store = menu.get("store")
        print(f"Store: {store}, Menu: {food}, Price: {price}")
    else:
        print(f"{food} costs too much!")
else:
    print(f"{food} not found in menu!")
食物=输入(“什么食物?:”) budget=int(输入(“您想花费多少?:”) 菜单=重组。获取(食物) 如果菜单: price=int(menu.get(“price”))
如果预算中有一个bool,比如found=False,那么在你的if中设置为True,在外面如果你能检查它是否仍然为False,就意味着找不到如果同一种食物出现在多个菜单上,你想打印两次还是只打印一次?
food = input("what food?:  ")
budget = int(input("how much you want to spend?:  "))

menu = restructured.get(food)
if menu:
    price = int(menu.get("price"))
    if budget <= price:
        store = menu.get("store")
        print(f"Store: {store}, Menu: {food}, Price: {price}")
    else:
        print(f"{food} costs too much!")
else:
    print(f"{food} not found in menu!")