2014-08-28 2 views
-5

Я новичок и нуждаюсь в некоторой помощи. Как я могу убедиться, что вход пользователя составляет всего 3 цифры. Я знаю, как сделать так, если это цифры, но это нужно быть только 3. Это то, что я до сих пор:Как проверить, содержит ли raw_input 3 цифры?

while not (area_code.isdigit()): 
    # do something here 

Я хочу, чтобы «.isdigit()», чтобы быть 3 цифры.

ответ

0
while not len(area_code) == 3: 
    # Do stuff 
3

Вы должны были бы явно проверить длину строки тоже:

while not (area_code.isdigit() and len(area_code) == 3): 

str.isdigit() только справедливо, если есть хотя бы один символ, и все символы являются цифрами. Тогда остается тест на длину.

+0

Является ли ваша логика правильно? Если это не будет 'while (area_code.isdigit() и len (area_code) == 3)' –

+0

@PadraicCunningham: no, цикл while должен продолжаться до тех пор, пока не будет найден правильный 'area_code'. OP имеет 'while not area_code.isdigit()', я просто добавил требование длины. –

+0

, но как 'while not area_code.isdigit() и len (area_code) == 3)' цикл навсегда, если он не определен внутри цикла? –

2
while True: 
    inp = raw_input() 
    if len(inp) == 3 and inp.isdigit(): 
     break 

Вы должны принять вход внутри цикла, если вы хотите принять Multiple Input

Используя ваш пример:

area_code = raw_input() 
while len(area_code) != 3 or not area_code.isdigit(): 
    area_code = raw_input() 
Смежные вопросы