2017-06-12 5 views
0

Ich bin neu in Python und habe Probleme mit der Eingabeverifizierung. Insbesondere möchte ich den Benutzer bitten, eine URL einzugeben, aber ich möchte sicherstellen, dass sie entweder "http" oder "https" als Teil ihrer URL eingeben. Das ist, was ich tun ist:Python - Benutzer muss bestimmten Text als Teil ihrer Eingabe eingeben

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:) 

Wenn ich diesen Code verwenden, wird jeder Text noch akzeptiert, auch wenn es nicht enthalten „http“ oder „https“. Jede Hilfe würde sehr geschätzt werden. Vielen Dank.

+1

Sie müssen jede Bedingung explizit buchstabieren: 'während" https "nicht in user_url und" http "nicht in user_url:' –

Antwort

-1

sollten Sie verwenden:

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: ") 
+0

vergaß einen großen Teil der Frage beim letzten Mal. Danke für das Aufzeigen – nikpod

-2
while "https" not in user_url and "http" not in user_url: 
0

Die Lösung lautet:

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

aber:

while "http" not in user_url: 

genug ist, als http in https enthalten ist.

Jedoch würde das folgende als ok betrachtet werden: "www.domain.com/http", weil es http enthält. So können Sie entweder einen regulären Ausdruck verwenden sollten, oder verwenden Sie die folgenden Schritte aus:

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

Als John Gordon in den Kommentaren Weg der richtige sagte zu tun, ist es wie folgt aus:

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

Was nicht funktioniert haben weil, wie Sie es geschrieben haben, python zwei Aussagen sieht, die zu sehen, ob sie ausgewertet werden müssen, wahr oder falsch: 1. "https" 2. "http" not in user_url

der Wahrheitswert eines nicht-leeren String ist immer True (Sie können es mit bool("somestring") überprüfen). Weil Aussage 1 nur eine Zeichenkette ist, bedeutet es, dass es immer wahr ist, so dass Sie immer die Schleife ausführen, was auch immer Ihre Eingabe sein mag.

Einige zusaetzliche Kommentare:

eine URL zu überprüfen, müssen Sie sehen, wenn „http“ am Anfang der URL ist da „: //google.http.com“ keine gültige URL ist , so ein besserer Weg wäre: while not user_url.startswith("http") and not user_url.startswith("https"):

Verwandte Themen