http Obter chave consulta python - valor

votos
0

Escrever uma função chamada query_string que não tem nenhum parâmetro. A função irá fazer uma solicitação HTTPS GET para a URL https://fury.cse.buffalo.edu/ps-api/a com uma string de consulta que contém os pares chave-valor x = 5, y = 4, e z = 5. A resposta do servidor será uma string JSON representando um objeto no formato { resposta :} onde é um número de ponto flutuante. Retornar o valor na resposta chave como um float

    import urllib.request
    import json

    def query_string():
        response = urllib.request.urlopen(https://fury.cse.buffalo.edu/ps-api/a)
        content_string = response.read().decode()
        content=json.loads(content_string)
        return float(content['answer'])

saída: função query_string incorrecta na entrada []

retornado: -1.0 esperado: 119.99

alguma idéia de como posso resolver esse problema?

Publicado 27/11/2018 em 18:04
fonte usuário
Em outras línguas...                            


2 respostas

votos
0
import urllib.request
import json

def query_string():
    url = "https://fury.cse.buffalo.edu/ps-api/a"
    url = url + "?x=5&y=4&z=5"
    response = urllib.request.urlopen(url)
    content_string = response.read().decode()
    content=json.loads(content_string)
    return float(content['answer'])

acabou fixando-o depois de um pouco de pesquisa

Respondeu 27/11/2018 em 18:33
fonte usuário

votos
0

Você pode fazer algo assim usando o pacote de pedidos. É super útil. Você pode adicionar os parâmetros de consulta em um dicionário que é passada para o paramsargumento de palavra-chave

def query_string():
    import requests
    url=r'https://fury.cse.buffalo.edu/ps-api/a'
    payload={
    'x':5,
    'y':4,
    'z':5}
    r=requests.get(url,params=payload)
    j=r.json()
    print(j)

EDIT para urllib

def query_string():
    url=r'https://fury.cse.buffalo.edu/ps-api/a'
    payload={
    'x':5,
    'y':4,
    'z':5}
    url=url+'?'+urllib.parse.urlencode(payload)
    r=urllib.request.urlopen(url).read().decode()
    r=json.loads(r)
    return float(r['answer'])
Respondeu 27/11/2018 em 18:11
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more