2016-02-16 3 views
1

Как использовать это, чтобы проверить, что вход только буквенно-цифровой:Можете ли вы использовать break для проверки ввода в python?

while True: 
    str = input('') 
    if str.isalnum(): 
     break 
    else: 
     print("Please include only alpha-numeric characters.\n") 

Этот код работает для всех экземпляров, которые я испытал его, но это плохая практика?

+0

Я не вижу что-то не так с вашим кодом (за исключением того факта, что 'str' является встроенным, и вы не должны теневать его с переменной) –

+0

Это хороший пример того, как использовать перерыв, это неплохая практика. – CasualDemon

+1

Это на самом деле рекомендуемая практика. См. [Запрос пользователя для ввода, пока он не даст действительный ответ] (http://stackoverflow.com/questions/23294658/asking-the-user-for-input-until-they-give-a-valid-response/23294659 # 23294659) – gil

ответ

0

Это нормально. Вот записка, однако, вы можете узнать, если петля while вышла с break или без одного с помощью else:

x = 0 
while x < 4: 
    x += 1 
else: 
    print("no break") 

# prints no break 

Если вы нарушите, однако:

x = 0 
while x < 4: 
    x += 1 
    if x == 2: 
     break 
else: 
    print("no break") 

# Does not print 
-2

вы можете абстрагировать далее

def verified_input(prompt='',test_condition=lambda x:1,err_message="Please Enter Valid Input"): 
    while True: 
     result = input(prompt) 
     if test_condition(result): 
      return result 
     print(err_message) 


def verified_alnum(prompt,err_message="Please enter Only alpha numerics"): 
     return verified_input(prompt,lambda x:x.isalnum(),err_message) 



result = verified_alnum("Enter Password:","A password must be only letters and numbers") 

это позволяет создавать любое количество условий испытаний быстро и относительно пространно

+0

@nathanhayfield thanks –

+0

Технически правильно, но очень сложно, по сравнению с вопросом. – CasualDemon

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