Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2021, 16:09   #1
Andrey6570
Новичок
Джуниор
 
Регистрация: 25.01.2021
Сообщений: 4
По умолчанию Очень прошу ревью кода. И есть пара вопросов по выбору файла с появлением/исчезанием фрейма

Я только начал разбираться с Python, всего две недели. До этого только Basic в школе и HTML в универе.
Попробовал написать программу, которая проверяет знание иностранного языка, в частности греческих слов.

ТЗ: Есть файл Excel, который содержит три листа с парами слов на греческом и русском - общая лексика, числа и дни недели. Пользователь выбирает направление перевода, тип тестирования и какие слова проверять. У него есть 10 вопросов, счетчик внизу считает количество вопросов и правильные и неправильные ответы. Переход к следующему вопросу по кнопке Далее.
Как написал в теме, вроде работает. Но хочется получить рекомендации и советы по коду, что можно улучшить. И есть несколько вопросов:

1. После 10 вопроса должен пропадать фрейм с заданием, и на его месте должен появляться фрейм frame_about. Не работает.

2. Хочу сделать, чтобы из меню Файл можно открывалось окно с выбором файла Excel - не знаю как, может кто-то подскажет?

Код не могу разместить из-за ограничений количества символов в сообщении, поэтому размещаю его в виде txt

Делал всё в PyCharm
Вложения
Тип файла: txt Greek.txt (15.3 Кб, 3 просмотров)
Andrey6570 вне форума Ответить с цитированием
Старый 25.01.2021, 20:01   #2
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

Цитата:
Сообщение от Andrey6570 Посмотреть сообщение
Код не могу разместить из-за ограничений количества символов в сообщении
вау
Цитата:
Сообщение от Andrey6570 Посмотреть сообщение
2. Хочу сделать, чтобы из меню Файл можно открывалось окно с выбором файла Excel - не знаю как, может кто-то подскажет?
не Эксель-рядом, разберётесь
Код:
# типы файла: (('HTML-файлы', '*.html'),) или ('Изображение', '*.jpg *.gif *.png'),) или (('Любой', '*'),) или (('Hyper Text Markup Language file', '*.html'),) или (('Текст в формате RTF', '*.rtf'),) или (('Текстовый файл', '*.txt'),)
# если писать несколько типов файла, в конце запятая не нужна: (('Текстовый файл', '*.txt'), ('Изображение', '*.jpg *.gif *.png'), ('Любой', '*'))
# multiple=True|False множественный выбор-по умолчанию=False
str_file_name = fd.askopenfilename(title='Выберете файл с расширением txt', initialdir='d:/', filetypes=(('Текстовый файл', '*.txt'),))
Ципихович Эндрю вне форума Ответить с цитированием
Старый 25.01.2021, 20:09   #3
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

попробовал ради интереса
ну да
Вы ввели слишком длинный текст (14903 символов). Пожалуйста, сократите его до 8000 символов.
не знал
на мой беглый взгляд global-зло
Код:
c=0
d=0
e=0
хозяин барин, но в одну строку
Код:
c=d=e=0
далее
Код:
if i < 10:
        start()
else:
        stop()
хозяин барин, но укоротим
Код:
if i < 10:
    start()
else:stop()
а так - не вникал

Последний раз редактировалось Ципихович Эндрю; 25.01.2021 в 20:11.
Ципихович Эндрю вне форума Ответить с цитированием
Старый 25.01.2021, 20:54   #4
Andrey6570
Новичок
Джуниор
 
Регистрация: 25.01.2021
Сообщений: 4
Хорошо

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
попробовал ради интереса
ну да
Вы ввели слишком длинный текст (14903 символов). Пожалуйста, сократите его до 8000 символов.
не знал
на мой беглый взгляд global-зло
Код:
c=0
d=0
e=0
хозяин барин, но в одну строку
Код:
c=d=e=0
далее
Код:
if i < 10:
        start()
else:
        stop()
хозяин барин, но укоротим
Код:
if i < 10:
    start()
else:stop()
а так - не вникал

Мелочь, но замечания важные. Спасибо большое.
Andrey6570 вне форума Ответить с цитированием
Старый 26.01.2021, 18:00   #5
VeryStupidPerson
Пользователь
 
Аватар для VeryStupidPerson
 
Регистрация: 20.07.2020
Сообщений: 69
По умолчанию

Цитата:
на мой беглый взгляд global-зло
Вы ещё скажите GOTO - зло. (Хотя, кстати, в питоне его нет). Иногда бывает проще использовать глобальную переменную, чем устраивать передачи в функцию и тд. Кстати, Ципихович Эндрю, интерпретатор питон, если встречает в функциях неизвестную переменную, ищет её в основном коде и, если находит, объявляет глобальной.
Это какой-то максималистский подход, брать и объявлять то, чем вы не пользуетесь, злом. Всё, что есть в языке, порой необходимо.
---------------------------------------------------
Нич-чего не понимаю!
Или что-то случилось, или… одно из двух!
VeryStupidPerson вне форума Ответить с цитированием
Старый 26.01.2021, 18:05   #6
VeryStupidPerson
Пользователь
 
Аватар для VeryStupidPerson
 
Регистрация: 20.07.2020
Сообщений: 69
По умолчанию

Цитата:
далее
Код:
if i < 10:
start()
else:
stop()
хозяин барин, но укоротим
if i < 10:
start()
else:stop()
На мой взгляд, более длинный вариант читабельней и приятней для глаз. Вряд ли Вы используете возможность записи в одну строку (из разряда, a = input("a = ");print('a');b=input("b = ");print('b')), а ведь интерпретатор позволяет запись в строку, если разделять команды точкой с запятой.
---------------------------------------------------
Нич-чего не понимаю!
Или что-то случилось, или… одно из двух!
VeryStupidPerson вне форума Ответить с цитированием
Старый 26.01.2021, 18:24   #7
Andrey6570
Новичок
Джуниор
 
Регистрация: 25.01.2021
Сообщений: 4
По умолчанию

Цитата:
Сообщение от VeryStupidPerson Посмотреть сообщение
На мой взгляд, более длинный вариант читабельней и приятней для глаз. Вряд ли Вы используете возможность записи в одну строку (из разряда, a = input("a = ");print('a');b=input("b = ");print('b')), а ведь интерпретатор позволяет запись в строку, если разделять команды точкой с запятой.
Спасибо. Может будут еще какие-то замечания по форматингу?
Andrey6570 вне форума Ответить с цитированием
Старый 26.01.2021, 19:37   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Цитата:
Сообщение от Andrey6570 Посмотреть сообщение
Может будут еще какие-то замечания по форматингу?
Ага. Проблемки с пробелами (то есть после запятой, то нет; двойные пробелы; вокруг "равно" то есть, то нет), лишние пустые строки (то есть пустая строка после заголовка функции, то нет; то отделяются пустыми строками if-elif, то нет; то есть пустая строка между функциями, то нет; то есть строка после global, то нет). Из-за этого код выглядит неряшливо.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 27.01.2021, 07:16   #9
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

Цитата:
Сообщение от VeryStupidPerson Посмотреть сообщение
Вряд ли Вы используете возможность записи в одну строку (из разряда, a = input("a = ");print('a');b=input("b = ");print('b')), а ведь интерпретатор позволяет запись в строку, если разделять команды точкой с запятой.
промах-так как я бы с радостью так сделал, но пользуюсь в пайчарме реформатом кода-и он всё равно раскидает построчно
Ципихович Эндрю вне форума Ответить с цитированием
Старый 27.01.2021, 07:18   #10
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Проблемки с пробелами (то есть после запятой, то нет; двойные пробелы; вокруг "равно" то есть, то нет), лишние пустые строки (то есть пустая строка после заголовка функции, то нет; то отделяются пустыми строками if-elif, то нет; то есть пустая строка между функциями, то нет; то есть строка после global, то нет). Из-за этого код выглядит неряшливо.
тоже из этого много решить реформатом кода
Ципихович Эндрю вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
есть пара вопросов!контролер весов evgenukr Visual C++ 5 29.06.2011 15:25
пара вопросов DeDoK Общие вопросы Delphi 1 10.11.2008 17:58
Пара вопросов xak2 Общие вопросы Delphi 6 08.05.2007 20:58