Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача 3. May the force be with you Python

Тёма Коронский Знаток (301), на голосовании 2 года назад
Что нужно сделать
Фанаты «Звёздных войн» (Star Wars) написали API по своей любимой вселенной. Ссылка на документацию: Documentation.

Внимательно изучите документацию этого API и напишите программу, которая выводит на экран (и в JSON-файл) информацию о пилотах легендарного корабля Millennium Falcon.

Информация о корабле должна содержать следующие пункты:

название,
максимальная скорость,
класс,
список пилотов.
Внутри списка о каждом пилоте должна быть следующая информация:

имя,
рост,
вес,
родная планета,
ссылка на информацию о родной планете.
Голосование за лучший ответ
Улугбек Мастер (1299) 2 года назад
Что нужно сделать?
"Внимательно изучить документацию этого API и написатьпрограмму ..."
Тёма КоронскийЗнаток (301) 2 года назад
тогда помогите напишите, пожалуйста
Улугбек Мастер (1299) Тёма Коронский, а это где взять - "Ссылка на документацию: Documentation"?
УлугбекМастер (1299) 2 года назад
в результате получаем данные всего корабля и ссылки на всех пилотов в поле 'pilots'
Надежда Красильникова Ученик (216) 1 год назад
import requests
import json

req = requests.get(' ')
data_old = json.loads(req.text)

# Создаем новый словарь n_data, в который добавляем только те ключи из словаря data,
# которые соответствуют имени, классу звездолета, максимальной скорости в атмосфере и пилотам
n_data = dict()
for key, value in data_old.items():
if key in ('name', 'starship_class', 'max_atmosphering_speed', 'pilots'):
n_data[key] = value

# Если ключ pilots существует в словаре n_data, то создаем пустой список и сохраняем его
# в качестве значения этого ключа
if 'pilots' in n_data:
n_data['pilots'] = []
urls = [' ']

# Отправляем GET-запросы на сайт для получения информации о каждом пилоте звездолета
# по указанным URL-адресам
for url in urls:
resp = requests.get(url)
data = json.loads(resp.text)
n_data['pilots'].append({
'name': data.get('name'),
'height': data.get('height'),
'mass': data.get('mass'),
'homeworld': data.get('homeworld'),
}
)

# Сохраняем словарь n_data в файл data_new.json в формате JSON с отступами в 4 пробела
with open('data_new.json', 'w') as file:
json.dump(n_data, file, indent=4)

# Сохраняем словарь data_old в файл data_old.json в формате JSON с отступами в 4 пробела
with open('data_old.json', 'w') as file:
json.dump(data_old, file, indent=4)
Влад Пикулин Ученик (179) 10 месяцев назад
Решение Задача 3. May the force be with you
Kirill Ученик (246) 3 месяца назад
import requests
import json

url = ' https://swapi.tech/api/starships/12/ '
response = requests.get(url)
data = json.loads(response.text)

pilots = []

for pilot in data['result']['properties']['pilots']:
pilot_response = requests.get(pilot)
pilot_data = pilot_response.json()
homeworld_response = requests.get(pilot_data['result']['properties']['homeworld'])
homeworld_data = homeworld_response.json()

pilot_info= {
'name': pilot_data['result']['properties']['name'],
'height': pilot_data['result']['properties']['height'],
'mass': pilot_data['result']['properties']['mass'],
'homeworld':{
'name': homeworld_data['result']['properties']['name'],
'link': pilot_data['result']['properties']['homeworld']
}
}
pilots.append(pilot_info)


ship_info = {
'starship_class': data['result']['properties']['starship_class'],
'model': data['result']['properties']['model'],
'max_atmosphering_speed': data['result']['properties']['max_atmosphering_speed'],
'pilots': pilots
}


print(json.dumps(ship_info, indent=4))


with open('X-wing_info.json', 'w') as f_1:
json.dump(ship_info, f_1, indent=4)
Похожие вопросы