Может кто-нибудь объяснить, почему еще возникает ошибка 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()
Вам больше не нужно, просто поместите свою попытку выше, если input == '1': и введите свой код с правильным отступом! Также обратите внимание, что у вас нет определения цели, где оно?
Отвечает ли это на ваш вопрос? Я получаю IndentationError. Как это исправить?
Не по теме: я предлагаю вам прочитать и начать следовать PEP 8 — Руководство по стилю для кода Python, в котором рекомендуется использовать отступ Python, закодированный с помощью 4 символов пробела (а не символов табуляции, как вы делаете).






Должен сказать, дело в том, что между вашими операторами 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()
Пункт(ы)
exceptдолжен находиться в том же блоке кода (в данном случае в телеif), что и соответствующий операторtry. Чтоelseне может их разделить.