Почему не работает этот код в Питоне
Кто разбирается, прошу помощи. Линк не работает в коде, а по видеокурсу все в порядке. Всем спасибо.
import requests
MY_LAT = 51.565645
MY_LONG = -8.676756
parameters = {
"lat": MY_LAT,
"lng": MY_LONG,
"formatted": 0,
}
response = requests set(url="http://api.open-notify.org/iss-now.json")
response.raise_for_status()
data = response.json()
print(data)
sunrise = data["results"] ["sunrise" ]
sunset = data["results"] ["sunset" ]
print(sunrise.split("T")[1].split(":")[0])
time_now = datetime.now()
print(time_now.hour)
Я делал уже этот пример см. https://programming.mybb.ru/viewtopic.php?id=83, там нет параметров data["results"] ["sunrise" ] и data["results"] ["sunset" ] см. http://api.open-notify.org/iss-now.json, есть только timestamp, iss_position, longitude, latitud, и message см.:
{"timestamp": 1693688864, "iss_position": {"longitude": "20.5175", "latitude": "18.7122"}, "message": "success"}
Вот сам пример:
import requests import json def get_coord(): #Обращается к URL ресурсу, запрос метод GET response = requests.get('http://api.open-notify.org/iss-now.json') if response: #Превращает из JSON в Dictionary _dict = json.loads(response.content) sat_pos = _dict['iss_position'] print("lan %s lon %s" % (sat_pos['latitude'], sat_pos['longitude'])) get_coord()
Вы наверное спутали с вот этой библиотекой - https://sunrise-sunset.org/api
import requests
import json
MY_LAT = 51.565645
MY_LONG = -45.676756
parameters = {
"lat": MY_LAT,
"lng": MY_LONG,
"formatted": 0,
}
response = requests.get('http://api.open-notify.org/iss-now.json')
response.raise_for_status()
data = response.json()
print(data)
sunrise = data["results"] ["sunrise"]
sunset = data["results"] ["sunset" ]
print(data.split("T")[1].split(":")[0])
time_now = datetime.now()
print(time_now.hour)
а по видеокурсу все в порядке
- никогда не пользуйтесь только одним источником, там могут быть ошибки.
https://requests.readthedocs.io/en/latest/, https://requests.readthedocs.io/en/latest/user/quickstart/...,
https://www.powercms.in/article/how-get-json-data-remote-u...
- разбейте задачу на маленькие шаги, проверяйте каждый из них и думайте.
вот вы определяете parameters, а зачем? где они используются?
пройдите по этой ссылке http://api.open-notify.org/iss-now.json
и получите {"message": "success", "iss_position": {"longitude": "-74.1586", "latitude": "-37.5604"}, "timestamp": 1693758902}
Причем заход и восход солнца к положению ISS?
sunrise = data["results"] ["sunrise" ]
sunset = data["results"] ["sunset" ]
- import requests
- from datetime import datetime
- MY_LAT = 38.548330
- MY_LONG = -90.326280
- LOCAL_UTC_OFFSET = 6
- #response = requests.get(url="http://api.open-notify.org/iss-now.json")
- #response.raise_for_status()
- #data= response.json()
- #longitude = data["iss_position"]["longitude"]
- #latitude = data["iss_position"][latitude]
- #iss_position = (longiture, latitude)
- #print(iss_position)
- def utc_to_local(utc_hour):
- utc_hour += LOCAL_UTC_OFFSET
- if LOCAL_UTC_OFFSET > 0:
- if utc_hour > 23:
- utc_hour -= 24
- elif LOCAL_UTC_OFFSET < 0:
- if utc_hour < 0:
- utc_hour += 24
- return utc_hour
- parameters = {
- "lat": MY_LAT,
- "lng": MY_LONG,
- "formatted": 0,
- }
- response = requests.get("https://api.sunrise-sunset.org/json", params=parameters)
- response.raise_for_status()
- data = response.json()
- sunrise = int(data["results"]["sunrise"].split("T")[1].split(":")[0])
- sunset = int(data["results"]["sunset"].split("T")[1].split(":")[0])
- lt_sunrise = utc_to_local(sunrise)
- lt_sunset = utc_to_local(sunset)
- print(sunrise)
- print(sunset)
- time_now = datetime.now()
- print(time_now.hour)
Спасибо за советы, читаю другие форумы.
Я не физик, поэтому не могу сказать какое отношение имеет ISS к заходу солнца. Хотя если думать логически, речь идёт о спутниках, измеряющих в том числе и эти данные.
Хотя если думать логически, речь идёт о спутниках,
речь скорее не о спутниках, а о где-то об API, но проблема не в этом.
В учебных упражнениях не следует смешивать различные задачи.
Вот вы привели код - он же совершенно грязный. Ненужные закоментированные строки, различные задачи.
Попробуйте в одном файле решать одну и только одну задачу. В начале файла можете описать задачу. Потом вам же самой будет намного легче разбираться.
работает ещё как;) но не этот. Но это не к теме;) понятное дело, что доцент не будет все показывать, самим надо додумывать.
Успехов, но у каждого свое мнение как нужно учить программированию.
ИМХО она спутала http://open-notify.org/Open-Notify-API/ISS-Location-Now/ с https://sunrise-sunset.org/api.
она спутала
не думаю, если глянуть на приведенный код, там три различных задания в одном файле (при этом не совсем верно реализовано кажется).
А вот отчего именно так требуется, другой вопрос.
import requests
import json
def get_coord():
#Обращается к URL ресурсу, запрос метод GET
response = requests.get('http://api.open-notify.org/iss-now.json')
if response:
#Превращает из JSON в Dictionary
_dict = json.loads(response.content)
sat_pos = _dict['iss_position']
print("lan %s lon %s" % (sat_pos['latitude'], sat_pos['longitude']))
get_coord()
print (f"Please connect with users")
#3
import requests
from datetime import datetime
MY_LAT = 31.23228
MY_LONG =121.46921
LOCAL_UTC_OFFSET = 6
response = requests.get(url="http://api.open-notify.org/iss-now.json")
response.raise_for_status()
data= response.json()
longitude = data["iss_position"]["longitude"]
latitude = data["iss_position"]["latitude"]
iss_position = (longitude, latitude)
print(iss_position)
Полное г...результаты показывают другие данные. С чем это связано?
Месяца три назад все отлично работало.
Полное г...результаты показывают другие данные. С чем это связано?
Месяца три назад все отлично работало.
А что, собственно, ожидается? какие данные? Что не работает?
вот первая часть - результат:
$ python part1.pylan 48.7634 lon 35.8669Please connect with users
Вторая часть - результаты:
$ python part2.py('76.1658', '50.4180')
Вроде отлично работает :-)
The longitude and latitude can be either positive or negative to indicate the direction from the prime meridian and the equator, respectively. Positive values indicate north for latitude and east for longitude, while negative values indicate south for latitude and west for longitude. In the context of global positioning, positive and negative values are used to specify whether the location is north or south of the equator and east or west of the prime meridian.
Вы конечно извините, но тут ни при чем ни приведенный код, ни Python. Не вполне понятна задача, не вполне понятны требования к используемым внешним источникам данных.
Просто кидаете куски кода и пишете "ниработает". А критериев "шоб работало", не даете
В моей программе код выдает совсем другие данные. Хотя должен с точностью выводить данные заданные в коде. с плюсом.