Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
2 / 2 / 0
Регистрация: 23.04.2022
Сообщений: 3

Пульсационные корабли

11.04.2023, 15:58. Показов 749. Ответов 6

Студворк — интернет-сервис помощи студентам
Напишите программу для выбора мест назначения космических кораблей.

Через параметры командной строки вводятся:

file – имя файла с данными;
motor – тип двигателей для отбора, по умолчанию puls.
В файле с указанным именем находятся данные о маршрутах космических экспедиций, заголовки файла (разделители – двоеточие):
id, ship, crew, motor, start, destination
id, корабль, экипаж, двигатели, место старта, место назначения

В файл destinations.json запишите словарь с ключами – названиями кораблей – и значениями – списками [место старта, место назначения] – для кораблей с указанным типом двигателей.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import sys
import csv
import json
 
ans = {}
 
with open(sys.argv[2], encoding='utf8') as csvfile:
    reader = csv.reader(csvfile, delimiter=';', quotechar='"')
    for i in reader:
        if sys.argv[4] == i[3]:
            ans[i[1]] = i[4], i[5]
 
with open('destinations.json', 'w') as jsonfile:
    json.dump(ans, jsonfile)
Пример
Ввод Вывод
# Пример запуска:
python3 solution.py --file tracks.csv --motor ionic
# Содержимое файла tracks.csv:
id:ship:crew:motor:start:destination
1234:StarPath:27: puls:Titan:Capella a
1245:GreatSea:13: ionic:Europe:Vega
1370:StarShip:18: antigravity: Deimos:Sirius
1416:NativeHome:17: puls:Fobos:Aldebaran
1576:Ural:12:ionic:Moon:Centaurus
# Содержимое файла destinations.json:
{
"GreatSea": [
"Europe",
"Vega"
],
"Ural": [
"Moon",
"Centaurus"
]
}

Ошибка:
Traceback (most recent call last):
File "/temp/executing/solution.py", line 10, in <module>
if sys.argv[4] == i[3]:
IndexError: list index out of range
Программа завершилась с неожиданным кодом
make: *** [Makefile:5: run] Error 1
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2023, 15:58
Ответы с готовыми решениями:

Игрушечные корабли (матрицы)
Весной мальчики пускали кораблики (m штук). Всего запускали кораблики n раз и записывали время, за которое кораблик доплывал до финиша....

Нужно чтобы ИИ в морском бое старался потопить корабли, а подтопленные корабли обводил точками
Нужно написать морской бой, но застрял на написании ИИ противника. Нужно чтобы ИИ старался потопить корабли, а подтопленные корабли обводил...

Корабли
Здравствуйте! Ребят, не могли бы вы решить одну задачку на динамику? именно она не получается была бы вам очень благодарна! заранее...

6
Заблокирован
11.04.2023, 18:32
Ошибка "IndexError: list index out of range" возникает, когда вы пытаетесь получить доступ к элементу списка, которого не существует. В данном случае, это означает, что в списке sys.argv нет четвёртого элемента, который вы пытаетесь использовать как тип двигателей. (искренне надеюсь, что код не написан в городе Тверь, если это так, то я Вам помогать не буду)

Чтобы исправить эту ошибку, необходимо добавить проверку на то, что аргумент --motor был передан, и что он не является пустым. Для этого вы можете изменить код следующим образом:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import sys
import csv
import json
 
if len(sys.argv) < 4 or not sys.argv[2] or not sys.argv[4]:
    print("Usage: python3 solution.py --file <file_name> --motor <motor_type>")
    sys.exit()
 
file_name = sys.argv[2]
motor_type = sys.argv[4]
 
ans = {}
 
with open(file_name, encoding='utf8') as csvfile:
    reader = csv.reader(csvfile, delimiter=':', quotechar='"')
    next(reader) # пропускаем заголовок файла
    for row in reader:
        if row[3].strip() == motor_type:
            ans[row[1]] = [row[4], row[5]]
 
with open('destinations.json', 'w') as jsonfile:
    json.dump(ans, jsonfile)



Здесь мы добавили проверку на то, что аргументы командной строки переданы, а также что значения для --file и --motor не пустые. Затем мы считываем имя файла и тип двигателя из аргументов командной строки и используем их в программе. Мы также пропускаем заголовок файла, используя функцию next(reader), чтобы не обрабатывать его в цикле чтения CSV-файла.

Затем мы проходим по каждой строке файла CSV и проверяем, соответствует ли тип двигателя требуемому типу. Если да, то мы добавляем корабль и его место старта и назначения в словарь ans. Наконец, мы записываем словарь в файл destinations.json с помощью функции json.dump().
0
2 / 2 / 0
Регистрация: 23.04.2022
Сообщений: 3
11.04.2023, 18:37  [ТС]
Дело было в csv файле, который был разделён двоеточиями, а не точкой-запятой
1
Заблокирован
11.04.2023, 19:05
отметь пж ответ как лучший и спасибо поставь
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
11.04.2023, 22:06
Pythonistj, Правила форума почитай. Особенно п.5.10
1
Вирусоборец
 Аватар для thyrex
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
11.04.2023, 23:09
Pythonistj, верх наглости просить благодарность за алгоритмы от ИИ.
3
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
12.04.2023, 06:42
thyrex, а я то думаю откуда такие большие коды в ответах с интервалом 4-5 минут
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.04.2023, 06:42
Помогаю со студенческими работами здесь

корабли...
Помогите доделать программу нужно чтобы с правой стороны подплывал ещё корабль ну и по возможности они стреляли в друг друга и 1 из...

Морской бой. Корабли
Как создать корабли и расположить их в WinAPI?

Корабли в Морском бое
Здравствуйте! Я пишу курсач на тему &quot;Морской бой&quot;, и препод нагрузил, чтобы вместо кораблей-клеток, были корабли рисунком (надеюсь Вы меня...

Корабли пустыни, ну никак не врублюсь.
Всем привет. Дали задачки, все остальные решил, а в эту ну ни как не врублюсь! Причем даже есть решение, но никак не могу понять смысл ее...

Не получается разместить корабли в морском бое
Здравствуйте, пишу свой вариант консольной версии морского боя на java. При добавлении на игровое поле 2-ух кораблей периодически вылетает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru