Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 26, 2017 16:20:41

ELVYY
Зарегистрирован: 2017-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Что за ошибка?????

Я не могу понять что тут за ошибка. Должна проходить проверка ести ли человек в словаре или нету. Если есть - вывести на экран, нету - написать, что нету.
Сам словарь:
Влад:+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('Влад')

Прикреплённый файлы:
attachment Снимок.PNG (31,8 KБ)

Офлайн

#2 Фев. 26, 2017 17:16:33

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Что за ошибка?????

ELVYY
self.base = {file.read()}
Ну и что вы вот этим хотите получить? Если словарь, то нет, словарь вы так не получите.



Офлайн

#3 Фев. 26, 2017 17:34:42

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Что за ошибка?????

опять те же грабли с словарем
да брось эту затею тут спокойно можно списком обойтись и даже лучше потому что в списке может быть несколько человек с одинаковыми именами но разными данными а вот словарь такой вольности не позволит

Офлайн

#4 Фев. 26, 2017 17:36:09

ELVYY
Зарегистрирован: 2017-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Что за ошибка?????

Да я просто для себя разбираюсь. Уже все исправил.

 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('Влад', 'Ааав')

Офлайн

#5 Фев. 26, 2017 17:51:38

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Что за ошибка?????

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('Обама')
# выведет "Нет, Обама отсутствует в базе данных"

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version