我是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"。任何帮助将不胜感激。感谢。
答案 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: