Deutsch

Почему не работает этот код в Питоне

3201  1 2 все
kukka местный житель02.09.23 22:40
kukka
NEW 02.09.23 22:40 

Кто разбирается, прошу помощи. Линк не работает в коде, а по видеокурсу все в порядке. Всем спасибо.


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)

#1 
Murr патриот02.09.23 22:53
Murr
02.09.23 22:53 
в ответ kukka 02.09.23 22:40

Линк не работает в коде

-----

HTTP ERROR 404

#2 
uscheswoi_82 коренной житель02.09.23 23:11
uscheswoi_82
NEW 02.09.23 23:11 
в ответ kukka 02.09.23 22:40

Я делал уже этот пример см. 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()
кто как обзывается, тот так сам называется... маску ношу чтобы не заразить антиваксеров... Дневник тяжелобольного инвалида
#3 
uscheswoi_82 коренной житель02.09.23 23:22
uscheswoi_82
NEW 02.09.23 23:22 
в ответ kukka 02.09.23 22:40

Вы наверное спутали с вот этой библиотекой - https://sunrise-sunset.org/api

кто как обзывается, тот так сам называется... маску ношу чтобы не заразить антиваксеров... Дневник тяжелобольного инвалида
#4 
kukka местный житель03.09.23 18:48
kukka
NEW 03.09.23 18:48 
в ответ uscheswoi_82 02.09.23 23:11

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)

#5 
AlexNek патриот03.09.23 18:52
AlexNek
NEW 03.09.23 18:52 
в ответ kukka 02.09.23 22:40
а по видеокурсу все в порядке

- никогда не пользуйтесь только одним источником, там могут быть ошибки.

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" ]

#6 
kukka местный житель03.09.23 19:04
kukka
NEW 03.09.23 19:04 
в ответ uscheswoi_82 02.09.23 23:22, Последний раз изменено 03.09.23 20:17 (kukka)
  1. import requests
  2. from datetime import datetime
  3. MY_LAT = 38.548330
  4. MY_LONG = -90.326280
  5. LOCAL_UTC_OFFSET = 6
  6. #response = requests.get(url="http://api.open-notify.org/iss-now.json")
  7. #response.raise_for_status()
  8. #data= response.json()
  9. #longitude = data["iss_position"]["longitude"]
  10. #latitude = data["iss_position"][latitude]
  11. #iss_position = (longiture, latitude)
  12. #print(iss_position)
  13. def utc_to_local(utc_hour):
  14. utc_hour += LOCAL_UTC_OFFSET
  15. if LOCAL_UTC_OFFSET > 0:
  16. if utc_hour > 23:
  17. utc_hour -= 24
  18. elif LOCAL_UTC_OFFSET < 0:
  19. if utc_hour < 0:
  20. utc_hour += 24
  21. return utc_hour
  22. parameters = {
  23. "lat": MY_LAT,
  24. "lng": MY_LONG,
  25. "formatted": 0,
  26. }
  27. response = requests.get("https://api.sunrise-sunset.org/json", params=parameters)
  28. response.raise_for_status()
  29. data = response.json()
  30. sunrise = int(data["results"]["sunrise"].split("T")[1].split(":")[0])
  31. sunset = int(data["results"]["sunset"].split("T")[1].split(":")[0])
  32. lt_sunrise = utc_to_local(sunrise)
  33. lt_sunset = utc_to_local(sunset)
  34. print(sunrise)
  35. print(sunset)
  36. time_now = datetime.now()
  37. print(time_now.hour)


Спасибо за советы, читаю другие форумы.


#7 
kukka местный житель03.09.23 20:44
kukka
NEW 03.09.23 20:44 
в ответ AlexNek 03.09.23 18:52

Я не физик, поэтому не могу сказать какое отношение имеет ISS к заходу солнца. Хотя если думать логически, речь идёт о спутниках, измеряющих в том числе и эти данные.

#8 
AlexNek патриот03.09.23 21:11
AlexNek
NEW 03.09.23 21:11 
в ответ kukka 03.09.23 20:44, Последний раз изменено 03.09.23 21:12 (AlexNek)
Хотя если думать логически, речь идёт о спутниках,

речь скорее не о спутниках, а о где-то об API, но проблема не в этом.

В учебных упражнениях не следует смешивать различные задачи.

Вот вы привели код - он же совершенно грязный. Ненужные закоментированные строки, различные задачи.

Попробуйте в одном файле решать одну и только одну задачу. В начале файла можете описать задачу. Потом вам же самой будет намного легче разбираться.

#9 
Grossmutters_G прохожий04.09.23 18:06
NEW 04.09.23 18:06 
в ответ kukka 03.09.23 19:04

А код-то в итоге заработал? :-)


#10 
kukka местный житель04.09.23 21:10
kukka
NEW 04.09.23 21:10 
в ответ AlexNek 03.09.23 21:11

Спросим доцента, как курс построен. Всем спасибо!!

#11 
kukka местный житель04.09.23 21:13
kukka
NEW 04.09.23 21:13 
в ответ Grossmutters_G 04.09.23 18:06

работает ещё как;) но не этот. Но это не к теме;) понятное дело, что доцент не будет все показывать, самим надо додумывать.

#12 
AlexNek патриот04.09.23 21:38
AlexNek
NEW 04.09.23 21:38 
в ответ kukka 04.09.23 21:10

Успехов, но у каждого свое мнение как нужно учить программированию.

#13 
uscheswoi_82 коренной житель04.09.23 23:32
uscheswoi_82
NEW 04.09.23 23:32 
в ответ AlexNek 03.09.23 18:52

ИМХО она спутала http://open-notify.org/Open-Notify-API/ISS-Location-Now/ с https://sunrise-sunset.org/api.

кто как обзывается, тот так сам называется... маску ношу чтобы не заразить антиваксеров... Дневник тяжелобольного инвалида
#14 
AlexNek патриот05.09.23 17:45
AlexNek
NEW 05.09.23 17:45 
в ответ uscheswoi_82 04.09.23 23:32
она спутала

не думаю, если глянуть на приведенный код, там три различных задания в одном файле (при этом не совсем верно реализовано кажется).

А вот отчего именно так требуется, другой вопрос.

#15 
kukka местный житель09.11.23 09:16
kukka
NEW 09.11.23 09:16 
в ответ uscheswoi_82 04.09.23 23:32, Последний раз изменено 09.11.23 09:19 (kukka)

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)


Полное г...результаты показывают другие данные. С чем это связано?

Месяца три назад все отлично работало.

#16 
Grossmutters_G прохожий13.11.23 20:04
NEW 13.11.23 20:04 
в ответ kukka 09.11.23 09:16
Полное г...результаты показывают другие данные. С чем это связано?
Месяца три назад все отлично работало.

А что, собственно, ожидается? какие данные? Что не работает?

вот первая часть - результат:

$ python part1.py
lan 48.7634 lon 35.8669
Please connect with users


Вторая часть - результаты:

$ python part2.py
('76.1658', '50.4180')


Вроде отлично работает :-)


#17 
kukka местный житель13.11.23 20:52
kukka
NEW 13.11.23 20:52 
в ответ Grossmutters_G 13.11.23 20:04

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.

#18 
VornerX знакомое лицо13.11.23 23:31
VornerX
NEW 13.11.23 23:31 
в ответ kukka 13.11.23 20:52

Вы конечно извините, но тут ни при чем ни приведенный код, ни Python. Не вполне понятна задача, не вполне понятны требования к используемым внешним источникам данных.
Просто кидаете куски кода и пишете "ниработает". А критериев "шоб работало", не даете улыб

No problem can be solved by the same kind of thinking that created it.
#19 
kukka местный житель14.11.23 07:34
kukka
NEW 14.11.23 07:34 
в ответ VornerX 13.11.23 23:31

В моей программе код выдает совсем другие данные. Хотя должен с точностью выводить данные заданные в коде. с плюсом.


#20 
1 2 все