Python-要求用户输入某些文本作为其输入的一部分

时间:2017-06-12 17:17:13

标签: python python-2.7 while-loop

我是Python的新手,在输入验证方面遇到了麻烦。具体来说,我要求用户输入一个URL,但我想确保他们输入" http"或" https"作为其网址的一部分。这就是我一直在做的事情:

user_url = raw_input(please enter your URL: )
while "https" or "http" not in user_url:
    print "you must enter a valid URL format, try again"
    user_url = raw_input(please enter your URL: )

当我使用此代码时,任何文本仍然被接受,即使它不包含" http"或" https"。任何帮助将不胜感激。感谢。

4 个答案:

答案 0 :(得分:0)

解决方案是:

while "https" not in user_url and "http" not in user_url:

但:

while "http" not in user_url:

就足够了http中包含https

但是,以下内容将被视为正常:" www.domain.com/http"因为它包含http。所以你应该使用正则表达式或使用以下内容:

while user_url[:4] != "http":

答案 1 :(得分:0)

正如约翰戈登在评论中所说,正确的做法是:

while "https" not in user_url and "http" not in user_url:

你所拥有的东西不起作用,因为在你编写它时,python会看到两个必须被评估的语句,看它们是真还是假:  1. "https"  2。"http" not in user_url

非空字符串的真值始终为True(您可以使用bool("somestring")进行检查)。 因为语句1只是一个字符串,这意味着它总是正确的,所以无论输入是什么,你最终都会运行循环。

一些额外的评论:

要检查网址,您需要查看“http”是否位于网址的开头,因为“://google.http.com”不是有效的网址,因此更好的方法是:{{1 }}

答案 2 :(得分:-1)

您应该使用:

user_url = raw_input("please enter your URL: ")
while user_url.find("http") != -1:
    print "you must enter a valid URL format, try again"
    user_url = raw_input("please enter your URL: ")

答案 3 :(得分:-2)

while "https" not in user_url and "http" not in user_url: