Привет сообществу!
Я - начинающий программист на питоне. Ниже вы видите кое-какой кусок кода, в котором я не до конца уверен.
Он работает, но мне пригодились бы советы от более опытных людей по оптимизации. Также буду рад указаниям на ошибки.
Заранее спасибо за помощь.
Голубь.
Hi, Python community!
I am a beginner in Python. I've pinned my code sample down there.
It works properly, but I'm not sure if it's all right in other ways. I'd be glad to receive tips of quality improvement from more experienced programmers. Will also count mistake reports.
Thanks beforehand.
Pigeon.
Код:
import os
import time
from msvcrt import getch
f_num = 0
f_let = 'non_specified'
pup_count = 0
tutor_name = 'non_specified'
profile = 'non_specified'
filename = 'non_specified'
i = 1
subj_array = ['0000', '0001', '0010', '0011', '0100', '0101',
'0110', '0111', '1000', '1001', '1010', '1011',
'1100', '1101', '1110', '1111']
subj_equal = ['null', 'Алгебра', 'Геометрия', 'Русский язык', 'Литература',
'История', 'Обществознание', 'Биология', 'Химия', 'Физика',
'География', 'Английский', 'Немецкий', 'Французский', 'Информатика', 'МХК']
def form_initial ():
global f_num
f_num = input ('Введите номер класса: ')
f_num = int (f_num)
if 0 < f_num < 12:
f_num = str (f_num)
else:
print ('Неправильный номер. Попробуйте еще.')
time.sleep (3)
form_initial ()
global f_let
f_let = input ('Введите букву класса: ')
try:
check_file = open (f_num + '_' + f_let + '.txt', 'r', encoding = 'utf8')
check_file.close ()
except FileNotFoundError:
print ('Используется уникальное имя файла')
else:
print ('Попытка создать дубликат. Предыдущий файл переименован в ' + f_num + '_' + f_let + ' old' + '.txt')
try:
duplicate_protection ()
except FileExistsError:
print ('Повторная попытка создать дубликат. Предыдущий файл ' + f_num + '_' + f_let + ' old' + '.txt удален.')
os.remove (f_num + '_' + f_let + ' old' + '.txt')
duplicate_protection ()
global pup_count
pup_count = input ('Введите количество человек в ' + f_num + ' ' + f_let + ': ')
global tutor_name
tutor_name = input ('Введите имя классного руководителя ' + f_num + ' ' + f_let + ': ')
global profile
profile = input ('В случае, если ' + f_num + ' ' + f_let + ' - профильный, введите название профиля: ')
def file_form ():
form_file = open (f_num + '_' + f_let + '.txt', 'a+', encoding = 'utf8' )
form_file.write ('На 1 сентября в классе ' + pup_count + ' человек' + '\n')
form_file.write ('Классный руководитель - ' + tutor_name + '\n')
form_file.write ('Профиль: '+ profile + '\n')
form_file.close ()
def duplicate_protection ():
os.rename (f_num + '_' + f_let + '.txt', f_num + '_' + f_let + ' old' + '.txt')
add_file = open (f_num + '_' + f_let + ' old' + '.txt', 'a', encoding = 'utf8')
time_edited = str (time.ctime())
add_file.write (time_edited)
add_file.close ()
def book_add ():
global i
i = str (i)
print ('Просканируйте книгу на ' + i + ' позицию списка.')
i = int (i)
book_code = input ('Пока что введите код руками: ')
subj_id = book_code [0:4]
j = 0
while subj_array [j] != subj_id:
j += 1
else:
subj_name = subj_equal [j]
auth_names = input ('Введите имя/имена авторов книги через запятую: ')
year = book_code [4:8]
form_file = open (f_num + '_' + f_let + '.txt', 'a+', encoding = 'utf8')
i = str (i)
form_file.write (i + '. ' + subj_name + ' ' + auth_names + ' ' + year + '\n')
i = int (i)
form_file.close ()
i += 1
def file_read ():
os.system ('CLS')
print ('Для начала поиска нажмите Enter. Для окончания чтения и возврата к меню - Escape.')
key_state = ord(getch())
if key_state == 27:
print ('Чтение окончено')
time.sleep (3)
write_variant ()
elif key_state == 13:
file_search ()
else:
print ('Не та клавиша, попробуйте еще.')
time.sleep (3)
file_read ()
def file_search ():
os.system ('CLS')
global filename
filename = input ('Введите имя отчета, состоящее из номера класса и буквы класса, разделенных нижним подчеркиванием (Shift + -): ')
try:
comp_file = open (filename + '.txt', 'r', encoding = 'utf8')
for line in comp_file:
print (line)
except FileNotFoundError:
unex_file ()
comp_file.close ()
file_exit ()
def file_redact ():
redact = input ('Введите название пункта и исправленное значение: ')
red_file = open (filename + '.txt', 'a', encoding = 'utf8')
red_file.write ('\n')
red_file.write ('###ИСПРАВЛЕНИЕ###' + '\n')
red_file.write (redact + '\n')
red_file.write ('###КОНЕЦ_ИСПРАВЛЕНИЯ###' + '\n')
red_file.close ()
def redact_exit ():
print ('Чтобы вернуться к поисковику, нажмите Enter. Чтобы попасть в главное меню, нажмите Escape')
key_state = ord(getch())
if key_state == 27:
write_variant ()
elif key_state == 13:
file_search ()
else:
print ('Не та клавиша, попробуйте еще.')
time.sleep (3)
redact_exit ()
def file_exit ():
print ('Чтобы вернуться к поисковику, нажмите Enter. Чтобы редактировать найденный файл, нажмите Ё/~. Чтобы попасть в главное меню, нажмите Escape')
key_state = ord(getch())
if key_state == 27 or key_state == 13 or key_state == 63 or key_state == 96:
if key_state == 27:
write_variant ()
elif key_state == 13:
file_search ()
else:
file_redact ()
redact_exit ()
else:
print ('Не та клавиша, попробуйте еще.')
time.sleep (3)
file_exit ()
def unex_file ():
print ('Файла не существует. Если вы хотите создать такой файл, нажмите Enter. Для корректировки имени файла нажмите Escape: ')
key_state = ord(getch())
if key_state == 27:
print ('Скорректируйте имя файла. Проверьте раскладку, возможно вы ввели букву класса латиницей.')
time.sleep (3)
file_search ()
elif key_state == 13:
form_initial ()
file_form ()
book_add()
file_search ()
else:
print ('Не та клавиша, попробуйте еще.')
time.sleep (3)
unex_file ()
def end_variant ():
global i
print ('Для продолжения записи нажмите Enter. Для окончания записи - Escape.')
key_state = ord(getch())
if key_state == 27:
i -= 1
i = str (i)
print ('Записано ' + i + ' книг')
time.sleep (3)
i = int (i)
i = 1
write_variant ()
elif key_state == 13:
book_add ()
end_variant ()
else:
print ('Не та клавиша, попробуйте еще.')
time.sleep (3)
end_variant ()
def write_variant ():
os.system ('CLS')
print ('Для создания записи нажмите Enter. Для поиска файла нажмите Ё/~. Для окончания работы - Escape.')
key_state = ord(getch())
if key_state == 27 or key_state == 13 or key_state == 63 or key_state == 96:
if key_state == 27:
print ('Удачного дня')
time.sleep (3)
elif key_state == 13:
form_initial ()
file_form ()
book_add()
end_variant ()
else:
file_read ()
else:
print ('Не та клавиша, попробуйте еще.')
time.sleep (3)
write_variant ()
write_variant ()