Python 但是,无论是if语句还是else语句,都无法获取url数据库
该程序是一个控制台应用程序,它为用户显示应用程序标题和菜单选项,显示配方类别列表(即牛肉、鸡肉、素食、西餐、沙漠等),根据用户选择的类别显示膳食列表,并根据用户选择的膳食显示膳食信息(说明)。我只需要显示用户所选类别的膳食列表的帮助 我正在使用一个网站,为这个程序提供免费的JSON API,一切正常。该程序显示类别和食谱,但不会显示每个类别的单独膳食。 这很奇怪,因为我将print()语句放在函数的if语句之后,它在函数中按类别获取fines以尝试对其进行调试,但它同时打印pint(1)和print(2)语句,因此它在正确获取内容的同时还打印else语句。这段代码是recipes.py文件(在下找到)的一部分,该文件位于“按类别搜索”功能中。 这是我用来调试它的东西,以找出为什么它同时打印if和else:Python 但是,无论是if语句还是else语句,都无法获取url数据库,python,json,string,if-statement,urlrequest,Python,Json,String,If Statement,Urlrequest,该程序是一个控制台应用程序,它为用户显示应用程序标题和菜单选项,显示配方类别列表(即牛肉、鸡肉、素食、西餐、沙漠等),根据用户选择的类别显示膳食列表,并根据用户选择的膳食显示膳食信息(说明)。我只需要显示用户所选类别的膳食列表的帮助 我正在使用一个网站,为这个程序提供免费的JSON API,一切正常。该程序显示类别和食谱,但不会显示每个类别的单独膳食。 这很奇怪,因为我将print()语句放在函数的if语句之后,它在函数中按类别获取fines以尝试对其进行调试,但它同时打印pint(1)和pri
def按类别搜索膳食(类别):
查找\类别=输入(“输入类别:”)
发现=错误
对于范围内的i(len(类别)):
类别=类别[i]
如果category.get_category().lower()==lookup_category.lower():
找到=真
印刷品(1)
如果发现:
膳食=请求。按类别获取膳食(查找类别)
按类别列出膳食(查找类别,膳食)
印刷品(2)
其他:
打印(“无效类别,请重试”)
这很奇怪,因为如果你输入的是菜谱,而不是那一类的食物,它会显示菜谱。在命令菜单中,您可以:
(“1-列出所有类别”)
(“2-列出某一类别的所有膳食”)
(“3-按姓名搜索膳食”)
(“0-退出程序”)
到目前为止,我可以输入命令1和3,但不能输入命令2或0。这有3个不同的python文件,我将其中的每一个都包含在每个文件中,其中只包含了特定的“按类别进餐”函数,以使其更简单(我希望是这样)
基本上,目标是要求程序显示您键入的类别中的每顿饭。到目前为止,如果您键入配方名称,它仅显示类别和配方说明。然而,我力不包括,因为它的工作良好
(object.py文件)
(requests.py文件)
这是3个文件中的最后一个,我想问题出在哪里。我在每个if后面放了一个print(1),print(2)语句,它同时打印了那些语句和else语句?基本上,它现在显示的是“无效类别,请再试一次”,大约10次
import requests
def show_title():
print("My recipes Program")
print()
def show_menu():
print("COMMAND MENU")
print("1 - List all Categories")
print("2 - List all Meals for a Category")
print("3 - Search Meal by Name")
print("0 - Exit the program")
print()
def list_categories(categories):
print("CATEGORIES")
for i in range(len(categories)):
category = categories[i]
print(category.get_category())
print()
def list_meals_by_category(category, meals):
print(category.upper() + " MEALS ")
for i in range(len(meals)):
meal = meals[i]
print(meal.get_meal())
print()
def search_meal_by_category(categories):
lookup_category = input("Enter a category: ")
found = False
for i in range(len(categories)):
category = categories[i]
if category.get_category().lower() == lookup_category.lower():
found = True
break
if found:
meals = requests.get_meals_by_category(lookup_category)
list_meals_by_category(lookup_category, meals)
else:
print("Invalid Category, please try again")
如果您需要更多信息,请发表评论,这是我第一次做这么大的python项目(我知道这对每个人来说都很容易,因为这里的每个人都是天才)。我真的已经盯着这个看了两天了。谢谢大家的帮助 你的意思是写这个:
def按类别搜索膳食(类别):
查找\类别=输入(“输入类别:”)
发现=错误
对于范围内的i(len(类别)):
类别=类别[i]
如果category.get_category().lower()==lookup_category.lower():
找到=真
打破
如果发现:
膳食=请求。按类别获取膳食(查找类别)
按类别列出膳食(查找类别,膳食)
其他:
打印(“无效类别,请重试”)
我已经取消了
if found:
部分的插入,因此当您得到found=True时;中断
,然后它跳过的其余,并检测找到的
哪些是品脱(1)和打印(2)
语句?@quamrana I在配方后添加了打印(1)打印(2)语句。在“按类别搜索膳食”(categories)函数顶部的if语句后的py文件,查看调试时打印的内容。很抱歉,在按类别搜索膳食()
中,我只能看到一个print()
。我该找什么?@quamrana你说得对,应该只有那一个站。然而,当我调试时,有人告诉我在每个if之后添加一个print语句,看看会打印什么。当我这样做时,输出显示:JSON格式错误&无效分类,而不是显示我选择的类别(我选择了素食主义者)的膳食。请用实际代码更新您的问题。如果我在上面的问题中看不到它,那么它就不存在了。是的!这对我有很大帮助。但是,我现在收到一个JSON格式错误。你知道怎么解决吗?可能,但那是另一个问题。请随意发布另一篇文章,但一定要尽量将代码量保持在绝对最小。对于这个问题,您实际上只需要发布一个函数。
from urllib import request, parse
import json
from objects import Category, Meal
def get_categories():
url = 'https://www.themealdb.com/api/json/v1/1/list.php?c=list'
f = request.urlopen(url)
categories = []
try:
data = json.loads(f.read().decode('utf-8'))
for category_data in data['meals']:
category = Category(category_data['strCategory'])
categories.append(category)
except (ValueError, KeyError, TypeError):
print("JSON format error")
return categories
def get_meals_by_category(category):
url = 'https://www.themealdb.com/api/json/v1/1/filter.php?c=Seafood' + category
f = request.urlopen(url)
meals = []
try:
data = json.loads(f.read().decode('utf-8'))
for meal_data in data['meals']:
category = Meal(meal_data['idMeal'],
meal_data['strMeal'],
meal_data['strMealThumb'])
meals.append(category)
except (ValueError, KeyError, TypeError):
print("JSON Format error")
return meals
import requests
def show_title():
print("My recipes Program")
print()
def show_menu():
print("COMMAND MENU")
print("1 - List all Categories")
print("2 - List all Meals for a Category")
print("3 - Search Meal by Name")
print("0 - Exit the program")
print()
def list_categories(categories):
print("CATEGORIES")
for i in range(len(categories)):
category = categories[i]
print(category.get_category())
print()
def list_meals_by_category(category, meals):
print(category.upper() + " MEALS ")
for i in range(len(meals)):
meal = meals[i]
print(meal.get_meal())
print()
def search_meal_by_category(categories):
lookup_category = input("Enter a category: ")
found = False
for i in range(len(categories)):
category = categories[i]
if category.get_category().lower() == lookup_category.lower():
found = True
break
if found:
meals = requests.get_meals_by_category(lookup_category)
list_meals_by_category(lookup_category, meals)
else:
print("Invalid Category, please try again")