2016-03-22 5 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)  

Так что в основном то, что я пытаюсь сделать, это оценить каждый символ в моем списке каждому символу в строке, которую кто-то вводит. Если персонаж, который не должен быть там, обнаружил, что он должен сказать мне об этом. Я довольно новичок в python, поэтому имейте это в виду. Ниже следует последовательный вывод «Пожалуйста, введите допустимое имя». Но если вы оцениваете строку типа «Имя», вы можете ясно видеть, что символы в этой строке соответствуют символам в моем списке. Я что-то пропускаю? Потому что похоже, что он должен работать на меня. Любая помощь или совет будут оценены.Вложенный цикл for в python?

Я не понимаю, почему это не вопрос? Я продемонстрировал, что я пробовал, и с чем у меня проблемы.

+0

Что вы думаете, что делать? если я напишу «имя», значит, он будет отображаться «вы ввели действительное имя» 4 раза? если я напишу «na2g», значит, он будет отображаться 'valid' 3 раза и' invalid' 1 раз? –

+0

Это не значит, что он делает, это распечатывает «Пожалуйста, введите допустимое число» для каждого символа в моем списке. Я пытаюсь сравнить каждый символ в моем списке с каждым символом в том, что вводит пользователь, и посмотреть, совпадает ли он. – user3882522

ответ

0

Есть некоторые проблемы в вашем коде:

  1. Использование raw_input() вместо ввод() для ввода данных пользователя. В качестве ввода() будет выполняться Eval (raw_input())

  2. При использовании время цикла, как while continueP == "Yes": Переменная continueP будет на самом деле быть подтверждено только в начале цикла. Поэтому я предпочел бы while True: с оператором break для лучшего контроля.

  3. Порядок проверки/reprompt в то время цикла перепутались

Это работает для меня:

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

Я очень ценю помощь, но не могли бы вы рассказать мне, что случилось в моем коде? Я не могу использовать какие-либо встроенные функции, я не понимаю, что я делаю неправильно. Можете ли вы мне помочь? – user3882522

+0

как вы имеете в виду, вы не можете использовать какие-либо встроенные функции? – dron22

+0

Я не могу использовать регулярное выражение. Я могу использовать только основные вещи, такие как циклы, список, строковые функции. В основном я не могу использовать ** какие-либо ** «импортные» заявления в моем коде. Все остальное разрешено, но у меня возникают проблемы с этим, насколько я знаю, все должно работать, как описано мной, но это не так. – user3882522

Смежные вопросы