2016-03-22 9 views
-3
def validateName(name): 
    continueP = "Yes" 
    alpha = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' 
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] 

    while continueP=="Yes": 
     for alphaCheck in alpha: 
      letter = alphaCheck 
      for a in name: 
       if a != letter: 
        print("Please enter a valid name") 
     print("You have entered a valid name") 
     continueP = input("Do you want to continue, input Yes to continue, input No to Exit: ") 
     name = input("Please input a valid name, a valid name is only with characters A-Z: ") 

name = input("Please input a valid name, a valid name is only with characters A-Z: ") 
validateName(name)  

Also im Grunde, was ich versuche zu tun ist jedes Zeichen in meiner Liste zu jedem Zeichen in einer Zeichenfolge, die jemand eingeben würde. Wenn ein Charakter gefunden wird, der nicht darin sein soll, soll er es mir sagen. Ich bin ziemlich neu bei Python, also behalte das im Hinterkopf. Was folgt, ist aufeinanderfolgende "Bitte geben Sie einen gültigen Namen" Ausgänge. Aber wenn Sie eine Zeichenfolge wie "Name" auswerten, können Sie deutlich sehen, dass die Zeichen in dieser Zeichenfolge mit den Zeichen in meiner Liste übereinstimmen. Übersehe ich etwas? Weil es so aussieht, als sollte es mir gut gehen. Jede Hilfe oder Beratung wäre willkommen.Verschachtelte For-Schleife in Python?

Ich verstehe nicht, warum das keine gültige Frage ist? Ich habe demonstriert, was ich versucht habe und womit ich Probleme habe.

+0

Was Sie tun annehmen? wenn ich "name" schreibe, so wird es erscheinen "Sie haben einen gültigen Namen eingegeben" 4 mal? wenn ich "na2g" schreibe, so wird es 3 Mal "gültig" und 1 Mal "ungültig" angezeigt? –

+0

Es hat das nicht gemacht, was es tut, ist es druckt "Bitte geben Sie eine gültige Nummer" für jedes Zeichen in meiner Liste. Ich versuche, jedes Zeichen in meiner Liste mit jedem Zeichen in dem, was der Benutzer eingibt, zu vergleichen und festzustellen, ob es übereinstimmt. – user3882522

Antwort

0

Es gibt einige Probleme in Ihrem Code:

  1. Verwendung raw_input() anstelle von input() für Benutzereingaben. Als Eingabe() wird eval execute (raw_input())

  2. Wenn eine while-Schleife unter Verwendung von wie while continueP == "Yes":continueP Die Variable wird tatsächlich nur am Anfang der Schleife überprüft werden. Daher würde ich while True: mit einer break Anweisung für bessere Kontrolle bevorzugen.

  3. Die Reihenfolge der Validierung/reprompt in der while-Schleife wird

Dies funktioniert für mich verkorkste:

alpha = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' 
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] 

def validateName(name): 

    while True: 
     if [i for i in name if i not in alpha]: 
      continueP = raw_input("Do you want to continue, input Yes to continue, input No to Exit: ") 
      if not continueP == "Yes": 
       exit(1) 
      else: 
       name = raw_input("Please input a valid name, a valid name is only with characters A-Z: ") 
       continue 
     break 
    print("You have entered a valid name") 

name = raw_input("Please input a valid name, a valid name is only with characters A-Z: ") 
validateName(name) 
+0

Ich schätze die Hilfe sehr, aber kannst du mir bitte sagen, was in meinem Code falsch ist? Ich kann keine eingebauten Funktionen verwenden, ich verstehe nicht, was ich falsch mache. Können Sie mir bitte helfen? – user3882522

+0

Wie meinst du, Sie können keine eingebauten Funktionen verwenden? – dron22

+0

Ich kann Regex nicht verwenden. Ich kann nur grundlegende Dinge wie Schleifen, Liste, String-Funktionen verwenden. Ziemlich viel kann ich ** keine ** "Import" -Anweisungen in meinem Code verwenden. Alles andere ist erlaubt, aber ich habe Probleme damit, soweit ich weiß, sollte alles funktionieren, wie ich es beschrieben habe, aber das tut es nicht. – user3882522

Verwandte Themen