|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.08.2021, 16:21 | #1 |
Регистрация: 24.07.2021
Сообщений: 5
|
словарь не работает, почему?
Здравствуйте, я совсем новичок в python.
Решил попробовать себя на конкретной задаче словарь англо-русский. Взял за основу вот эту публикацию https://www.unix-lab.org/posts/pydict/ - пример второй. Создал 3 файла, которые сохранил в пайтон директории: 1)База данных words_db Код:
Код:
Код:
=================== RESTART: E:\Python3.81\start_programm.py =================== Найти английский перевод русского слова? введите “y” или “n” n Введите слово ‘земля’ Искомое слово не найдено >>> =================== RESTART: E:\Python3.81\start_programm.py =================== Найти английский перевод русского слова? введите “y” или “n” n Введите слово ‘earth’ Искомое слово не найдено >>> =================== RESTART: E:\Python3.81\start_programm.py =================== Найти английский перевод русского слова? введите “y” или “n” u Ввести новое слово ‘love’ Ввести перевод ‘любовь’ >>> по идее это новое слово должно записаться в базу данных words_db, но его там нету я проверял((( =================== RESTART: E:\Python3.81\start_programm.py =================== Найти английский перевод русского слова? введите “y” или “n” y Enter word ‘earth’ No such key None >>> Пробовал разные варианты - ответ No such key None Подскажите что я делаю не так? Последний раз редактировалось baitle; 14.08.2021 в 22:21. |
14.08.2021, 20:41 | #2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Это важно - это Python.
Если с кодом Си или Pascal немного проще, там есть операторные скобки ({} или begin end), то тут необходимо обязательно заключать код в тег CODE. Выдели код в своей среде и Ctrl + C Перейди в форму для ввода сообщения и Ctrl + V Выдели вставленный код и нажми кнопку [CODE], над формой ввода. А разбираться в этом борще ...
Как-то так, ...
|
14.08.2021, 22:26 | #3 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Код:
В том числе и см. свои условные операторы. Написано: Выдели код в своей среде и Ctrl + C Т.е., выдели исходный код и ... А так, как сделано у тебя ...
Как-то так, ...
|
14.08.2021, 22:41 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 14.08.2021 в 22:44. |
16.08.2021, 09:23 | #5 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
BDA, спасибо за форматирование, хотя это и не совсем код от ТС.
Возможно ТС и потерял интерес к своему вопросу, но ответ, на мой взгляд, нужен. baitle, если всё ещё интересно (с исправлениями): Код:
Если этот параметр игнорировать, то обновления сохраняются во вспомогательном стеке и только при закрытии файла сохраняются в нём. В новой сессии файл будет содержать обновления. 2. Поскольку обновление вспомогательного словаря делалось из старого файла, то и обратный перевод не работал. 3. # db.update() - эта команда вроде как и ни к чему. 4. После вставки новой записи вспомогательный словарь так же надо обновлять: функция newRecord(). Этот код у меня работает.
Как-то так, ...
Последний раз редактировалось ViktorR; 16.08.2021 в 10:13. Причина: Подправил сообщения |
16.08.2021, 20:08 | #6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
ViktorR, да, это уже был код не только с форматированием, но и с исправлениями. Но я действительно забыл согласовать newRecord с другими функциями. Однако, реализация 4 пункта не совсем верна. Вы просто в 2 функциях создаете 2 локальных словаря из db, а не обновляете. Скорее, нужно так:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
16.08.2021, 21:21 | #7 |
Регистрация: 24.07.2021
Сообщений: 5
|
Спасибо всем, кто помог разобраться, я очень благодарен ViktorR и BDA. Благодарен за то, что не погнушались моей недалекостью и все-таки откликнулись и помогли! Спасибо!!!
|
17.08.2021, 08:46 | #8 | |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
BDA
Цитата:
Как-то так, ...
|
|
17.08.2021, 22:48 | #9 | |
Регистрация: 24.07.2021
Сообщений: 5
|
Остался для меня нерешенным вопрос, почему, я ввожу новые слова в idle но они не прописываются в моем файле словаря, однако при старте проги они где-то все-таки записались, так как программка их находит, вот где - я не понимаю.
=================== RESTART: E:\Python3.81\start_programm.py =================== Найти английский перевод русского слова? введите "y" или "n" u Ввести новое слово (eng):cat Ввести перевод (rus):кошка >>> =================== RESTART: E:\Python3.81\start_programm.py =================== Найти английский перевод русского слова? введите "y" или "n" y Enter word кошка cat >>> =================== RESTART: E:\Python3.81\start_programm.py =================== Найти английский перевод русского слова? введите "y" или "n" u Ввести новое слово (eng)og Ввести перевод (rus):собака >>> =================== RESTART: E:\Python3.81\start_programm.py =================== Найти английский перевод русского слова? введите "y" или "n" y Enter word собака dog >>> Код:
Цитата:
Последний раз редактировалось baitle; 17.08.2021 в 22:55. |
|
17.08.2021, 22:58 | #10 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
baitle, ваш словарь на самом деле хранится в файле db_file (точнее, в двух файлах: db_file.dat и db_file.dir). Скрипт words_db.py создает базу данных и заполняет некоторой информацией. Когда вы в скрипте start_programm.py добавляете слово, то оно добавляется в базу данных, но не в скрипт инициализации words_db.py.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не работает gets вообще, ни один код не работает с gets, почему? | Мaкс | Общие вопросы C/C++ | 4 | 26.07.2018 11:49 |
почему прсер работает на одних сайтах и не работает на других | PHP_DELETANT | PHP | 4 | 12.02.2016 13:45 |
Здравствуйте ! в чем проблема,почему почему время исполнения операций не работает ? | ion leahu | Помощь студентам | 6 | 23.11.2014 19:36 |
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? | >>STINGER<< | Помощь студентам | 4 | 08.03.2011 09:56 |
почему интеренет на Xp не работает, а на семерке работает | Lenura | Windows | 18 | 04.10.2010 12:04 |