Python多字符串比较不起作用

Python多字符串比较不起作用,python,Python,我是Python新手。最后一个问题把我难住了,我不知道我做错了什么。问题是: 定义一个函数,用于确定输入字符串的格式是否为以“http”开头并以“.com”、“net”或“.org”结尾的web地址。如果输入字符串以其中一个后缀结尾并以“http”开头,则函数将返回True,否则将返回False 这是我目前在Python代码中所做的,但当我测试它时,结果是错误的: def isCommonWebAddressFormat(inputURL): #return True if inputU

我是Python新手。最后一个问题把我难住了,我不知道我做错了什么。问题是:

定义一个函数,用于确定输入字符串的格式是否为以“http”开头并以“.com”、“net”或“.org”结尾的web地址。如果输入字符串以其中一个后缀结尾并以“http”开头,则函数将返回True,否则将返回False

这是我目前在Python代码中所做的,但当我测试它时,结果是错误的:

def isCommonWebAddressFormat(inputURL):
    #return True if inputURL starts with "http" and ends with ".com" ".net" or ".org" and returns False otherwise
    outcome = ""
    if "http" and ".com" in inputURL:
        outcome = True
    elif "http" and ".net" in inputURL:
        outcome = True
    elif "http" and ".org" in inputURL:
        outcome = True
    else:
        outcome = False
    return outcome

当我用
“www.google.com”
调用函数时,结果是
,即使它应该是

,这肯定是初学者最常见的错误之一,您需要了解的第一件事是,所有对象都可以用于:

<>你可以考虑你写的条件的执行顺序:

 if "http" and ".com" in inputURL
相当于:

 if ("http") and (".com" in inputURL)
因此,由于
“http”
的计算结果总是正确的,所以第二部分才是真正起作用的部分(这就是
www.google.com
有效的原因),您需要的是:

 if ("http" in inputURL) and (".com" in inputURL):
尽管
startswith
endswith
方法肯定更可取,因为它只在开头和结尾检查:

 if inputURL.startswith("http") and inputURL.endswith(".com")
您可以使用
help
函数查看这些方法(以及python中的所有其他方法)的文档:

 help(str.startswith)
有关方法\u描述符的帮助:

开始使用(…) S.startswith(前缀[,开始[,结束]])->bool

如果S以指定的前缀开头,则返回True,否则返回False。 使用可选开始,测试从该位置开始。 使用可选结束,停止在该位置比较S。 前缀也可以是要尝试的字符串元组

即使对我来说,使用
help
总是很有用的,我只是刚刚了解到
startswith
endswith
可以使用一组字符串来尝试:

 S.startswith(("a","b","c"))

如果字符串
S
以“a”或“b”或“c”开头,则返回
True
,使用此选项,您可能可以将函数写在一行中。

使用字符串的
endswith
startswith
方法进行检查。如何执行此操作?我真的没有这个项目的经验,我在一个入门级的班上,我们从来没有在课堂上被教过这门课,就像它听起来那么可笑。请把你的标题放出来,以反映你的问题。如果找不到这个问题,其他任何人都无法回答。没有人会搜索“在一个简单但有问题的家庭作业问题上需要帮助”。如果inputURL中有“http”和“.com”,不要说
。您可以在
“http”和“.com”
之间加上括号,您将得到相同的结果。您没有单独检查它们。做一些更像
if-inputURL.startswith(“http”)和any(inputURL.startswith(end)以“.com”、“.net”、“.org”结尾):
@Marc:“有什么原因可以解释为什么我使用“www.google.com”和我以前的代码得到真实结果吗”这是你从一开始就应该在问题中发布的信息。
 help(str.startswith)
 S.startswith(("a","b","c"))