#python
Вопрос:
я создал базу данных с использованием 2d-массивов для хранения свободных периодов,которые у каждого из моих друзей есть в школе(например,период 1 и 2 в понедельник будет [«понедельник», 1, 2])
данные хранятся во внешнем файле python, чтобы их можно было читать и записывать.
проблема в том, что я не знаю, как закодировать алгоритм, который работает автоматически, независимо от того, был ли добавлен новый массив или он был удален.
вот мой код:
exec(open("data.py").read()) free=[["monday"],["tuesday"],["wednesday"],["thursday"],["friday"]] for i in range(5): for j in range(7): if j in d[i] and j in k[i]: free[i].append(j) print(free[i])
и образец технического паспорта
m=[[5,6],[1,2,3,4],[5,6],[1,2,3,4],[]] d=[[],[1,2],[3,4,5,6],[3,4,5,6],[1,2]] k=[[1,2],[5,6],[3,4],[5,6],[1,2,3,4]]
Комментарии:
1. Обратите внимание, что это
exec(open("data.py").read())
должно быть заменено наimport
.
Ответ №1:
Поскольку вы используете предварительно названные переменные, это затрудняет адаптацию к более масштабной работе. Это можно исправить с помощью словаря:
friends = {"m": [[5,6],[1,2,3,4],[5,6],[1,2,3,4],[]], "d": [[],[1,2],[3,4,5,6],[3,4,5,6],[1,2]], "k": [[1,2],[5,6],[3,4],[5,6],[1,2,3,4]]}
Убедитесь, что весь исполняемый код по умолчанию в файле data.py
, кроме переменных, подпадает под if __name__ == __main__
действие, чтобы он не запускался по умолчанию и чтобы вы могли использовать:
import data free = ["monday","tuesday","wednesday","thursday","friday"] for friend in data.friends: res = data.friends[friend] for i in range(5): res.insert(i, free[i]) print(friend, ":", str(res))
Комментарии:
1. извините, я забыл упомянуть ключевую часть своего кода, идея заключалась в том, что я должен был выводить общие свободные периоды (общие числа в каждом массиве) . например: ` друзья{ «d»: [[],[1,2],[3,4,5,6],[3,4,5,6],[1,2]], «к»: [[1,2],[5,6],[3,4],[5,6],[1,2,3,4]]} ` результатом будет: «[[«понедельник»], [«вторник»], [«среда,3,4], [«четверг», 5,6], [«пятница», 1,2]] «или что-то подобное.Я также понял, что в «d», » m » и » k «нет общих свободных периодов, поэтому, пожалуйста, игнорируйте данные для «m».