Найти - Пользователи
Полная версия: словарь не работает, помогите разобраться
Начало » Python для новичков » словарь не работает, помогите разобраться
1
baitle
Здравствуйте, я совсем новичок в python.
Решил попробовать себя на конкретной задаче словарь англо-русский. Взял за основу вот эту публикацию https://www.unix-lab.org/posts/pydict/ - пример второй. Создал 3 файла, которые сохранил в пайтон директории:
1)База данных words_db
 # words_db.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import shelve
db = shelve.open('db_file')
db['earth']='земля'
db['word']='слово'
db['catch']='ловить'
db['find']='искать'
db.close()
2)Восстановление базы данных из файла db_file
 # dump_words_db.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import shelve
db=shelve.open('db_file')
print('Yes')
3)Главный файл, запускающий функции start_programm
 # start_programm.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import shelve
db=shelve.open('db_file')
def eng():
    eng_words=dict([[v, k] for k,v in db.items()])
    find_word=input('Enter word ' '')
    print(eng_words.get(find_word) or print('No such key'))
def rus():
    key=input('Введите слово ' '')
    print (db.get(key) or 'Искомое слово не найдено')
def newRecord():
    newkey=input('Ввести новое слово ' '')
    newvalue=input('Ввести перевод ' '')
    db[newkey] = newvalue
    db.update()
    db.close()
if __name__ == '__main__':
    start=input('Найти английский перевод русского слова? введите "y" или "n" ' '')
    if start == 'y':
        eng()
    elif start == 'n':
        rus()
    elif start == 'u':
        newRecord()
    else:
        print('До встречи')

Короче, запускаю 3 файл f5 и все что я вижу
=================== 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
Подскажите что я делаю не так?

doza_and
baitle
Подскажите что я делаю не так?
Для начала код который выложили поместите в теги code. Так никто смотреть не удет.
xam1816
doza_and
Здравствуйте, я совсем новичок в python.
Решил попробовать себя на конкретной задаче словарь англо-русский.
doza_and
Подскажите что я делаю не так?
Твои вопросы отпадут сами собой,если ты объяснишь, что делает каждая строчка твоего кода.Если не сможешь,то эту задачу тебе рано делать,начни с основ
py.user.next
baitle
Подскажите что я делаю не так?
1. Научись запускать код без IDLE.
Тут писал, как и почему.
2. Выводи отладочную информацию.
Построил словарь или список какой-то, ввёл слово из потока ввода - сразу выведи его на экран, чтобы быть уверенным, что словарь или список построен именно так, как надо, и что слово введено. Когда всё будет правильно, отладочную информацию уберёшь.
3. Пиши не всё сразу, а постепенно, ступенчато.
Ты когда дом строишь, сначала строишь первый этаж, потом на первом этаже строишь второй этаж, потом на третьем этаже строишь третий этаж. Ты не строишь первый, второй и третий этажи одновременно, так как всё рухнет в итоге, потому что основа каждого элемента некачественная, недостроенная. Сделал первую часть, работает она на своём уровне, - только после этого можно продолжать и делать вторую часть на основе первой части. Сделал вторую часть, работает она на своём уровне, - только после этого можно продолжать и делать третью часть на основе второй части.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB