Найти - Пользователи
Полная версия: Адресная книга на Python 3.8
Начало » Центр помощи » Адресная книга на Python 3.8
1
FeverFam
Добрый день! Сделал такую адресную книгу на 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
Помогите сделать эту программу лучше(если криво скопировал код,то извините). Также прошу сильно не критиковать,учусь только недели три)
xam1816
FeverFam
Помогите сделать эту программу лучше
Чтобы сделать лучше,нужно знать в чем она плохая,поэтому никогда не бойся критики и реагируй на нее как на обратную связь.Мое мнение,на начальном обучении не лезь в большие и непонятные тебе задачи,пока хорошо не поймёшь основы.Основы это переменные, строки,условия,циклы,списки,словари,множества,функции.Делай короткие скрипты с этими основами,это нудно,ровно как учится чистописанию в школе,но из них строят большие программы.Не зацикливаться на одной книге,если что-то непонятно,ищи ответы в других источниках,потому что авторы используют разные слова и объяснения,более тебе понятные.На форуме описывай что конкретно тебе не понятно,или в чем сложность,какой результат,в каком виде хочешь получить,если ошибка,то предварительно сам ее переведи через переводчик и узнай что обозначает.
Ps. Дурак учится на своих ошибках и становиться умным,а умный на ошибках дураков,и становится дураком.
AD0DE412
FeverFam
'Ввведите какие-то данные о контакте (учитывая высоту букв)
можно нормализавать (вроде это так назвается) в одну высоту

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

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

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

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

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

FeverFam
AD0DE412
Спасибо, обязательно прочитаю
FeverFam
xam1816
Спасибо
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