Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 1, 2021 21:58:00

FeverFam
Зарегистрирован: 2021-04-01
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Адресная книга на Python 3.8

Добрый день! Сделал такую адресную книгу на Python по заданию из книги
“A byte of python”

 import os
def open_fl():
	global line
	with open('file.txt') as f:  
		data = f.read()
	line = data.splitlines()
def new_contact(): 
	global contact
	cont = '|' + input('Введите имя контакта: ').center(12) + '|'
	number = input('Введите номер контакта: ').center(13) + '|' 
	adres = input('Введите адрес контакта: ').center(17) + '|' 
	contact = cont+number+adres
def recording_list():
	f_line = line[0]
	o_line = line[1:]
	with open('file.txt','w') as f:
		for text_1 in f_line:
			f.write(text_1)
	with open('file.txt','a') as f:
		for text_2 in o_line:
			f.write('\n' + text_2)
print('\nДобрый день, это адресная книга на Python3') 
first = '|    Имя     |   Телефон   |      Адрес      |'
if os.path.exists('file.txt') == True: 
	pass   
else:
	with open('file.txt', 'w') as f: 
		f.write(first) 
#Main program
while True:  
	print('\nДоступны следующие функции: \n1) Удаление\n2) Добавление\n3) Поиск\
	 \n4) Просмотр\n5) Редактирование контакта \n6) Выход') 
	try:
		func_num = int(input('Введите номер функции: ')) 
	except ValueError:
		print('Введите номер функции, а не другой символ!')
		continue
	
	if func_num < 1 or func_num > 6:
		print('\n...Функции под номером {} не существует...\n'.format(func_num))
	
	elif func_num == 1: #delete 
		while True: 
			open_fl()
			try: 
				line_num = int(input('Введите номер строки, которую хотите удалить: '))
			except ValueError:
				print('Введите номер строки!')
				continue
			if line_num > len(line) or line_num <= 0:
				print('Такой строчки нет') 
			else:
				line.remove(line[line_num])
				print('Адрес успешно удален') 	
				recording_list()
				break		
	elif func_num == 2: #add 
		new_contact()
		contact = '\n' + contact  
		f = open('file.txt','a') 
		f.write(contact)
		f.close() 
	
	elif func_num == 3:        #search	
		open_fl()
		quantly = 0
		search = input('Ввведите какие-то данные о контакте (учитывая высоту букв): ')
		for save_contact in line:
			if search in save_contact:
				print('\nПо Вашему запросу был найден новый контакт на устройстве:')
				print(first + '\n' + save_contact)
				quantly = quantly+1
			else:
				pass
		if quantly == 0:
			print('\nПо запросу "{}" не было найдено ни одного контакта на устройстве'.format(search))
		else:
			print('Поиск закончен')
	elif func_num == 4: #Show
		f = open('file.txt')
		print('\n...................Книга.......................\n')
		print(f.read())
		print('\n...............................................\n')
	
	elif func_num == 5: #edit
		open_fl()
		try: 
			line_num = int(input('Введите номер строки, которую хотите редактировать: ')) 
		except ValueError:
			print('Введите номер строки!')
			continue
		if line_num > len(line) or line_num <= 0:
			print('Такой строчки нет') 
		else:
			new_contact()
			line[line_num] = contact 
			recording_list()
		print('Редактирование прошло успешно!') 
	elif func_num == 6:        #Exit
		print('Спасибо за использование моей программы! \nMade by Roman Antonov')
		break
Помогите сделать эту программу лучше(если криво скопировал код,то извините). Также прошу сильно не критиковать,учусь только недели три)

Офлайн

#2 Апрель 2, 2021 00:01:17

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1308
Репутация: +  112  -
Профиль   Отправить e-mail  

Адресная книга на Python 3.8

FeverFam
Помогите сделать эту программу лучше
Чтобы сделать лучше,нужно знать в чем она плохая,поэтому никогда не бойся критики и реагируй на нее как на обратную связь.Мое мнение,на начальном обучении не лезь в большие и непонятные тебе задачи,пока хорошо не поймёшь основы.Основы это переменные, строки,условия,циклы,списки,словари,множества,функции.Делай короткие скрипты с этими основами,это нудно,ровно как учится чистописанию в школе,но из них строят большие программы.Не зацикливаться на одной книге,если что-то непонятно,ищи ответы в других источниках,потому что авторы используют разные слова и объяснения,более тебе понятные.На форуме описывай что конкретно тебе не понятно,или в чем сложность,какой результат,в каком виде хочешь получить,если ошибка,то предварительно сам ее переведи через переводчик и узнай что обозначает.
Ps. Дурак учится на своих ошибках и становиться умным,а умный на ошибках дураков,и становится дураком.

Офлайн

#3 Апрель 2, 2021 11:41:26

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Адресная книга на Python 3.8

FeverFam
'Ввведите какие-то данные о контакте (учитывая высоту букв)
можно нормализавать (вроде это так назвается) в одну высоту

для этих данных лучше использовать более эээ удобную штуку - dict

если сохранять даные в файл то лучше наверное мариновать (пикл) или в json, sqllite

если знаете классы то вот пришло их время в одном описваете “тип” клиент в другом работу с эээ списком клиентов

ну и это
 if __name__ == '__main__':
    main()

зы еще глянте лутца програимрование на пайтон он в первом томе в начале книги там что то подобное делает



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Апрель 2, 2021 11:44:03)

Офлайн

#4 Апрель 2, 2021 13:58:47

FeverFam
Зарегистрирован: 2021-04-01
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Адресная книга на Python 3.8

AD0DE412
Спасибо, обязательно прочитаю

Офлайн

#5 Апрель 2, 2021 13:59:10

FeverFam
Зарегистрирован: 2021-04-01
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Адресная книга на Python 3.8

xam1816
Спасибо

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version