else: IndentationError: unexpected unindent

else: IndentationError: unexpected unindent

有人可以解释为什么在我尝试进一步处理 if else 循环时出现 IndentationError: unexpected unindent 吗?

基本上我正在做一个端口扫描器项目,我需要在这个用户输入中获取一些用户输入,我将指定需要扫描多少个端口。 我的计划是进一步研究 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 语句之间有一个 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()