Форум сайта python.su
Я не могу понять что тут за ошибка. Должна проходить проверка ести ли человек в словаре или нету. Если есть - вывести на экран, нету - написать, что нету.
Сам словарь:
Влад:+35455345
Лео:53455345
class notebook(object): def __init__(self): self.base = {} #Поиск человека def find(self, result): with open('D:/python/bd.txt', 'r', encoding = 'utf-8') as file: self.base = {file.read()} try: print (self.base[result]) except KeyError: print('Человека {} не существует'.format(self.result)) #Запись человека #def getting(self, name): p = notebook() p.find('Влад')
Прикреплённый файлы:
Снимок.PNG (31,8 KБ)
Офлайн
ELVYYНу и что вы вот этим хотите получить? Если словарь, то нет, словарь вы так не получите.
self.base = {file.read()}
Офлайн
опять те же грабли с словарем
да брось эту затею тут спокойно можно списком обойтись и даже лучше потому что в списке может быть несколько человек с одинаковыми именами но разными данными а вот словарь такой вольности не позволит
Офлайн
Да я просто для себя разбираюсь. Уже все исправил.
class notebook(object): def __init__(self, result, info): self.result = result self.info = info with open('D:/python/bd.txt', 'a', encoding = 'utf-8') as file: file.write('{}:{}\n'.format(self.result, self.info)) print('Запись успешно завершена') p = notebook('Влад', 'Ааав')
Офлайн
ELVYY
Начинайте пока с более простых вещей. Попробуйте для начала сделать без словаря и даже без списка. Также для простоты пусть в вашем файле bd.txt с именами людей каждое имя будет уникальное (единственное). Тогда достаточно сделать простой поиск в строке:
class notebook(object): def __init__(self): self.people = '' # сюда будем считывать файл bd.txt с именами людей def find(self, person): with open('bd.txt', 'r', encoding = 'utf-8') as f: self.people = f.read() if person in self.people: print('Да, {} есть в базе данных'.format(person)) else: print('Нет, {} отсутствует в базе данных'.format(person)) p = notebook() p.find('Влад') # выведет "Да, Влад есть в базе данных" p.find('Лео') # выведет "Да, Лео есть в базе данных" p.find('Обама') # выведет "Нет, Обама отсутствует в базе данных"
Офлайн