Форум сайта python.su
ZerGРабочесть конструкции ИМХО обуславливается именно банальностью.
Вполне себе рабочая конструкция!
for i in range(0, 2): try: number = int(input(), 10) except: print("This is not number")
Офлайн
Тут вопрос не в длине чилса или его типе. А просто решение через try мы обрабатываем исключение.
Офлайн
Анализ ввода надо производить над введённой строкой. Сам питон может проверять недостаточно или, наоборот, перебарщивать с необходимым.
>>> int('-1') -1 >>> int('-0001') -1 >>> int('- 0001') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '- 0001' >>> int('- 1') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '- 1' >>>
Отредактировано py.user.next (Июль 3, 2020 01:22:03)
Офлайн
Все стало еще не понятнее. Но мне к счастью не надо париться по поводу безопасности и т.п. Как пример
У меня есть алгоритм находящий корни уравнений. И мне эти корни надо проверить. Как пример
(x^2-1)/(x-1) = 0 алгоритм преобразует это x^2-1 = 0 и она даст 2 корня -1 и 1. Из них при проверке останется 1.
try: проверка корня except ZeroDivisionError: удалить корень из списка
Отредактировано Python_newbie13 (Июль 4, 2020 03:24:21)
Офлайн
Python_newbie13Ну а почему вы не хотите сделать просто проверку на ноль перед делением?
В таком варианте можно использовать исключения?
Офлайн
Я не отрицаю, что можно сделать проверку. Но через исключения алгоритм проще. Однако, если это противоречит основным принципам, то естественно я сделаю через проверку и более сложный алгоритм, чем через кривой код. Мне надо понять: можно ли вообще использовать ради этого исключения или нет?
Отредактировано Python_newbie13 (Июль 5, 2020 06:10:09)
Офлайн
Python_newbie13да, вполне себе можно..
В таком варианте можно использовать исключения?
FishHookну дзен пайтона же: “лучше просить прощения чем разрешения” ИМХО такой подход как привел Python_newbie13 более pythonic-way.
Ну а почему вы не хотите сделать просто проверку на ноль перед делением?
[code python][/code]
Отредактировано PEHDOM (Июль 5, 2020 10:35:16)
Офлайн
PEHDOMОн не дал никакого конкретного алгоритма. Вот это
ну дзен пайтона же: “лучше просить прощения чем разрешения” ИМХО такой подход как привел Python_newbie13 более pythonic-way.
try: проверка корня except ZeroDivisionError: удалить корень из списка
if x == 0: удалить корень из списка else: проверка корня
Офлайн
> ну дзен пайтона же: “лучше просить прощения чем разрешения”
Это точно из “дзена”? Я не помню что там было что-то такое написано.
Отредактировано Rodegast (Июль 6, 2020 20:51:23)
Офлайн
Попробую обьснить конкретнее. Я привел в пример уравнение:
(x^2-1)/(x-1) = 0
Сама проверка подставляет вместо значения х число и считает по алгоритму польской записи. Т.е мне придется дописать его, что бы выполнялось это условие. Более того, уравнение то может быть любым и при подстановкe давать разные ошибки например. arcos(100) даст value error и функций в математике, которые выдают ошибки при вводе них недопустимые значения, довольно много. Писать придется условия под каждую из них. Try except написать намного проще и быстрее чем прописывать критические условия под каждую функцию
Отредактировано Python_newbie13 (Июль 7, 2020 03:31:15)
Офлайн