Еще: IndentationError: неожиданный отступ

Может кто-нибудь объяснить, почему еще возникает ошибка IndentationError: неожиданное отсутствие отступа, пока я пытаюсь продолжить работу над циклом if else.

В основном я работаю над проектом сканера портов, где мне нужно получить некоторый пользовательский ввод, где из этого пользовательского ввода я укажу, сколько портов необходимо для сканирования. Мой план состоял в том, чтобы продолжить работу над командой if, поэтому, если я не получу ответ 1, это означало следующее. Но это не похоже на работу

Что не так?

input = input("1 or 2")

if input == '1':
        try:
                for port in range(1,65535):
                        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                        socket.setdefaulttimeout(1)

                        result = s.connect_ex((target,port))

                        if result ==0:

                                print("Port {} is open".format(port))

                        s.close()

else:
        print("do not work")

        except KeyboardInterrupt:
                print("\n ")
                sys.exit()
        except socket.gaierror:
                print("\n ")
                sys.exit()
        except socket.error:
                print("\")
                sys.exit()

Пункт(ы) except должен находиться в том же блоке кода (в данном случае в теле if), что и соответствующий оператор try. Что else не может их разделить.

jasonharper 12.05.2022 02:09

Вам больше не нужно, просто поместите свою попытку выше, если input == '1': и введите свой код с правильным отступом! Также обратите внимание, что у вас нет определения цели, где оно?

Mohamad Ghaith Alzin 12.05.2022 02:29

Отвечает ли это на ваш вопрос? Я получаю IndentationError. Как это исправить?

Nick 12.05.2022 02:52

Не по теме: я предлагаю вам прочитать и начать следовать PEP 8 — Руководство по стилю для кода Python, в котором рекомендуется использовать отступ Python, закодированный с помощью 4 символов пробела (а не символов табуляции, как вы делаете).

martineau 12.05.2022 02:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
4
49
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Должен сказать, дело в том, что между вашими операторами exclude есть else, отделяющий его от try… верно? Попробуйте что-то вроде этого, может быть

input = input("1 or 2")

if input == '1':
        try:
                for port in range(1,65535):
                        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                        socket.setdefaulttimeout(1)

                        result = s.connect_ex((target,port))

                        if result ==0:

                                print("Port {} is open".format(port))

                        s.close()

        except KeyboardInterrupt:
                print("\n ")
                sys.exit()
        except socket.gaierror:
                print("\n ")
                sys.exit()
        except socket.error:
                print("\n ")
                sys.exit()

else:
        print("doesn’t work")

Вам нужно сделать отступ в предложении else, чтобы оно соответствовало строке if result == 0. Как только вы это сделаете, это должно сработать. Ваш код должен выглядеть так:

userInput = input("1 or 2")

if userInput == '1':
        try:
                for port in range(1,65535):
                        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                        socket.setdefaulttimeout(1)

                        result = s.connect_ex((target,port))

                        if result ==0:

                                print("Port {} is open".format(port))
                        else:
                                print("do not work")
                        s.close()

        except KeyboardInterrupt:
                print("\n ")
                sys.exit()
        except socket.gaierror:
                print("\n ")
                sys.exit()
        except socket.error:
                print("\n")
                sys.exit()

Другие вопросы по теме