Python 如何修复';非类型';对象没有属性';json';在递归函数中
在行Python 如何修复';非类型';对象没有属性';json';在递归函数中,python,json,list,Python,Json,List,在行idList.append(response.json()[0]['id'])上,我得到了一个错误'NoneType'对象没有属性“json”,我不知道为什么。您似乎想要10个唯一的随机笑话。我不使用递归,而是使用循环(迭代10个笑话)和集合(跟踪重复ID): 而不是无关紧要的 json.decoder.JSONDecodeError:预期值:第1行第1列(字符0) 遵循snake\u case的建议,而不是camelCase和操作符周围的间距,foo=bar=>foo=bar 当向同
idList.append(response.json()[0]['id'])
上,我得到了一个错误'NoneType'对象没有属性“json”
,我不知道为什么。您似乎想要10个唯一的随机笑话。我不使用递归,而是使用循环(迭代10个笑话)和集合(跟踪重复ID):
而不是无关紧要的
json.decoder.JSONDecodeError:预期值:第1行第1列(字符0)
snake\u case
的建议,而不是camelCase
和操作符周围的间距,foo=bar
=>foo=bar
如果它是非类型,则您的请求可能失败或未返回任何内容。
getJoke(idList)
=>返回getJoke(idList)
。这是一个非常奇怪的递归用例。。。如果您能分享您的问题/预期结果,我们可能会提供更好的方法。
def getJoke(idList):
joke=requests.get("https://official-joke-api.appspot.com/jokes/programming/random")
if(joke.json()[0]['id'] in idList):
getJoke(idList)
else:
return joke
idList=[]
for i in range(10):
response=getJoke(idList)
idList.append(response.json()[0]['id'])
print('Setup: '+response.json()[0]['setup']+'\nPunchline: '+response.json()[0]['punchline']+'\n')
import requests
def get_joke(
url="https://official-joke-api.appspot.com/jokes/programming/random"
):
response = requests.get(url)
response.raise_for_status()
return response.json()[0]
def get_unique_random_jokes(n):
ids_used = set()
jokes = []
while len(jokes) < n:
joke = get_joke()
if joke["id"] not in ids_used:
ids_used.add(joke["id"])
jokes.append(joke)
return jokes
if __name__ == "__main__":
jokes = get_unique_random_jokes(n=10)
for joke in jokes:
print(f'Setup: {joke["setup"]}\nPunchline: {joke["punchline"]}\n')