检查列表以查看参数中是否存在字符串,并在循环中返回值

时间:2018-11-07 01:53:08

标签: python

编辑:如果有人可以解释为什么它不起作用,我将不胜感激。我不需要任何人为我做这件事,因为我可以走很长一段路。我只想了解为什么这不起作用。谢谢!

编辑#2:我知道https:google.com不是网址,但这只是为了测试代码。

我正在测试不同的方法来检查url参数是否在前11个字符中包含字符串'http','www'或'https'。我会弄乱索引吗?还是我不了解“参与”和“不参与”的工作方式?

def check_url(url):
    first = ['www', 'http', 'https']
    for x in first:
        if x not in url[0:11]:
            return '[-] url fails'
        else:
           ...other stuff I need to check if it passes

hi = check_url('https:google.com')
print(hi)

输出显示url失败。

我尝试使用“ in”而不是“ not in”(当然也要重新排列措词以满足要求),但这也不起作用。

我知道我可以做多个if语句来分别检查每个字符串,但这是很多代码,当然,我想使其尽可能整洁和可读。

1 个答案:

答案 0 :(得分:0)

您的函数在处理return后立即中断。因此for循环不再重复。将return语句移到函数的 end 处。例如:

def check_url(url):
    first = ['www', 'http', 'https']
    for x in first:
        if url.startswith(x):
            # ...other stuff I need to check if it passes
            # if successful:
            #     return 'url passes'
    return '[-] url fails'

hi = check_url('https:google.com')