Python 程序 - 返回循环中的每个响应,而不仅仅是所需的响应
Python program - returning every response from a loop instead of just the desired one
我有以下 Python 程序,并希望该程序简单地 return 列表中相应项目的价格 'items'。相反,如您所见,它无法正常工作,要么中断,要么 returns“没有这样的项目”,然后是数字。我尝试了各种方法,但无法获得正确的输出顺序。
https://trinket.io/python/77909a6574
期望输出:
User enters: Chicken Wings
Output: 5
User enters: Jollof Rice
Output: 7
等等。
任何人都可以建议在 for 循环中使用 if 语句并在正确的时间跳出的修复方法和最佳实践。
def salestracker():
print("---Sales Tracker---")
print("---MENU---")
print("""
1. Find the price of an item
2. Enter sales of an item
3. Find total of the day
""")
items=["Chicken Wings","Jollof Rice", "Thai fried rice", "Dumplings"]
price=[5,7,8,5]
findprice(items,price)
def findprice(items,price):
print("---Find Price---")
item=input("Enter Item:")
for i in range(len(items)):
if item==items[i]:
print(price[i])
break
else:
break
print("There is no such item")
salestracker()
这是进行查找的另一种方法,让 Python 进行搜索:
def findprice(items,price):
print("---Find Price---")
item=input("Enter Item:")
if item in items:
print(price[items.index(item)])
else:
print("There is no such item")
然而,更好的方法是一开始就使用正确的数据结构。通过存储在字典中,您可以在一个结构中携带两条信息:
def salestracker():
print("---Sales Tracker---")
print("---MENU---")
print("""
1. Find the price of an item
2. Enter sales of an item
3. Find total of the day
""")
menu = {
"Chicken Wings": 5,
"Jollof Rice": 7,
"Thai fried rice": 8,
"Dumplings": 5
}
findprice(menu)
def findprice(menu):
print("---Find Price---")
item=input("Enter Item:")
if item in menu:
print(menu[item])
else:
print("There is no such item")
salestracker()
没有解决的是大写问题。你的收银员会用拇指把你串起来,试图记住“鸡翅”中的两个词都是大写的,但在“泰国炒饭”中不是。如果您更进一步,请考虑将菜单项全部存储为小写,然后执行 item = item.lower()
.
关于您问题的“最佳实践”部分,您应该使用 Tim Roberts 的回答,但要直接回答您的代码未按预期工作的原因,这是一个简单的放置错误。它应该说的是:
def findprice(items,price):
print("---Find Price---")
item=input("Enter Item:")
for i in range(len(items)):
if item==items[i]:
print(price[i])
break
else:
print("There is no such item") # [1]
break
# print("There is no such item") # Move this line up to [1]
def findprice(items, price):
print("---Find Price---")
item = input("Enter Item:")
try:
index = items.index(item)
print(price[index])
except ValueError:
print("There is no such item")
您也可以使用内置列表方法 - .index("")
我认为您应该将 'break' 替换为 'return'。 'break' 用于退出循环,而不是函数。所以,当它找到该项目时,它仍然打印“没有这样的项目”。你可以通过制作函数return来修复它,它实际上结束了函数的执行。
...
def findprice(items,price):
print("---Find Price---")
item=input("Enter Item:")
for i in range(len(items)):
if item==items[i]:
print(price[i])
return
print("There is no such item")
...
我有以下 Python 程序,并希望该程序简单地 return 列表中相应项目的价格 'items'。相反,如您所见,它无法正常工作,要么中断,要么 returns“没有这样的项目”,然后是数字。我尝试了各种方法,但无法获得正确的输出顺序。
https://trinket.io/python/77909a6574
期望输出:
User enters: Chicken Wings
Output: 5
User enters: Jollof Rice
Output: 7
等等。
任何人都可以建议在 for 循环中使用 if 语句并在正确的时间跳出的修复方法和最佳实践。
def salestracker():
print("---Sales Tracker---")
print("---MENU---")
print("""
1. Find the price of an item
2. Enter sales of an item
3. Find total of the day
""")
items=["Chicken Wings","Jollof Rice", "Thai fried rice", "Dumplings"]
price=[5,7,8,5]
findprice(items,price)
def findprice(items,price):
print("---Find Price---")
item=input("Enter Item:")
for i in range(len(items)):
if item==items[i]:
print(price[i])
break
else:
break
print("There is no such item")
salestracker()
这是进行查找的另一种方法,让 Python 进行搜索:
def findprice(items,price):
print("---Find Price---")
item=input("Enter Item:")
if item in items:
print(price[items.index(item)])
else:
print("There is no such item")
然而,更好的方法是一开始就使用正确的数据结构。通过存储在字典中,您可以在一个结构中携带两条信息:
def salestracker():
print("---Sales Tracker---")
print("---MENU---")
print("""
1. Find the price of an item
2. Enter sales of an item
3. Find total of the day
""")
menu = {
"Chicken Wings": 5,
"Jollof Rice": 7,
"Thai fried rice": 8,
"Dumplings": 5
}
findprice(menu)
def findprice(menu):
print("---Find Price---")
item=input("Enter Item:")
if item in menu:
print(menu[item])
else:
print("There is no such item")
salestracker()
没有解决的是大写问题。你的收银员会用拇指把你串起来,试图记住“鸡翅”中的两个词都是大写的,但在“泰国炒饭”中不是。如果您更进一步,请考虑将菜单项全部存储为小写,然后执行 item = item.lower()
.
关于您问题的“最佳实践”部分,您应该使用 Tim Roberts 的回答,但要直接回答您的代码未按预期工作的原因,这是一个简单的放置错误。它应该说的是:
def findprice(items,price):
print("---Find Price---")
item=input("Enter Item:")
for i in range(len(items)):
if item==items[i]:
print(price[i])
break
else:
print("There is no such item") # [1]
break
# print("There is no such item") # Move this line up to [1]
def findprice(items, price):
print("---Find Price---")
item = input("Enter Item:")
try:
index = items.index(item)
print(price[index])
except ValueError:
print("There is no such item")
您也可以使用内置列表方法 - .index("")
我认为您应该将 'break' 替换为 'return'。 'break' 用于退出循环,而不是函数。所以,当它找到该项目时,它仍然打印“没有这样的项目”。你可以通过制作函数return来修复它,它实际上结束了函数的执行。
...
def findprice(items,price):
print("---Find Price---")
item=input("Enter Item:")
for i in range(len(items)):
if item==items[i]:
print(price[i])
return
print("There is no such item")
...