Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 执行退出循环,而它本应留在循环中_Python_Python 3.x_Loops_While Loop - Fatal编程技术网

Python 执行退出循环,而它本应留在循环中

Python 执行退出循环,而它本应留在循环中,python,python-3.x,loops,while-loop,Python,Python 3.x,Loops,While Loop,我有下面的代码来获取服务器的IP,如果服务器不可访问(返回False),那么它将进入一个循环,直到它返回除False以外的任何内容 我今天在服务器离线时测试它,它在循环中运行了一段时间,但是突然它用一个值(False)跳出了循环,它应该在循环中保持,只要它为False 有人能查一下密码吗?我对Python和一般编程都是新手 def startup_check(): exp1_current_ip = get_exp_ip() if exp1_current_ip == Fals

我有下面的代码来获取服务器的IP,如果服务器不可访问(返回False),那么它将进入一个循环,直到它返回除False以外的任何内容

我今天在服务器离线时测试它,它在循环中运行了一段时间,但是突然它用一个值(False)跳出了循环,它应该在循环中保持,只要它为False

有人能查一下密码吗?我对Python和一般编程都是新手


def startup_check():
    exp1_current_ip = get_exp_ip()
    if exp1_current_ip == False:
        while True:
            sleep(10)
            exp1_current_ip = get_exp_ip()
            if public_ip != False:
                break
    do_more(exp1_current_ip)



def get_exp_ip():
    try:
        session = HTMLSession()
        exp_login_url = ("https://10.10.10.10/login")
        network_conf_url = ("https://10.10.10.10/ip")
        login_payload = {
            "submitbutton": "Login",
            "username": "username",
            "password": "password",
            "formbutton": "Login"
        }
        login = session.post(exp_login_url, data=login_payload, verify=False)
        logging.exception(f"Loging to {exp_ip} was successful")
        network_conf = session.get(network_conf_url, verify=False)
        exp1_current_ip = str(network_conf.html.find("#ip_v4_nat_addr2")).split("'")[11]
        return exp1_current_ip
    except:
        return False


startup_check()

我希望您将使用一些IDE来运行此代码段。仔细调试可能会解决您的问题。这就是我解决类似问题的方法。

您发布的问题有点模糊,不清楚,但据我所知,您正在使用公共ip来打破您的循环,但我不知道您是否从外部获得了公共ip的任何价值,因为您的循环依赖于此,如果你把exp1\u current\u ip误认为是public\u ip,那么替换它应该会起作用

def startup_check():
    exp1_current_ip = get_exp_ip()
    if exp1_current_ip == False:
        while True:
            sleep(10)
            exp1_current_ip = get_exp_ip()
            if exp1_current_ip != False:
                break
    do_more(exp1_current_ip)

返回的
exp1\u current\u ip
变量是否可能是空字符串?还有,什么是:
public\u ip!=函数中是否存在False