2016-06-29 2 views
0

Хорошо, поэтому я действительно новичок в программировании. Моя программа просит пользователя ввести «3-значное число» ... и мне нужно определить длину номера (убедитесь, что она не меньше и не более 3 цифр), в то же время я проверяю, чтобы убедиться, что это является целым числом. Это то, что у меня есть:Как определить вход как целое число и длину одновременно?

while True: 
    try: 
     number = int(input("Please enter a (3 digit) number: ")) 
    except: 
     print('try again') 
    else: 
     break 

любая помощь приветствуется! :)

+2

ли '012'count как 3 цифр или 2? Вы всегда можете вернуть число обратно к строке и посмотреть длину: 'len (str (number))'. Кроме того, вам потребуется выполнить дополнительную проверку для таких случаев, как '12.3' и т. Д. (Здесь' 'isdigit'). – Bahrom

ответ

0

input() возвращает вас в строку. Таким образом, вы можете сначала проверить длину этого номера, а длина - не 3, после чего вы можете снова спросить пользователя. Если длина равна 3, вы можете использовать эту строку как число на int(). len() дает длину строки.

while True: 
    num = input('Enter a 3 digit number.') 
    if len(num) != 3: 
     print('Try again') 
    else: 
     num = int(num) 
     break 
+0

это сработало, спасибо большое! – Kody

+0

Кроме того, если вы хотите использовать то же самое в python 2.x, вы должны использовать 'raw_input()' вместо 'input()'. Поскольку python не поддерживает обратную совместимость, часто возникают проблемы. Также вы можете опросить ответ, если это поможет. – GadaaDhaariGeek

1

Вы можете попробовать что-то подобное в своем предложении try/except. При необходимости измените.

number_string = input("Please enter a (3 digit) number: ") 
number_int = int(number_string) 
number_length = len(number_string) 
if number_length == 3: 
    break 

Вы также могли бы использовать assert поднять исключение, если длина номера не 3.

try: 
    assert number_length == 3 
except AssertionError: 
    print("Number Length not exactly 3") 
0

Держите вход в переменной перед заливкой его в междунар проверить его длину:

my_input = input("Please enter a (3 digit) number: ") 
if len(my_input) != 3: 
    raise ValueError() 
number = int(my_input) 

Обратите внимание, что except: само по себе является bad practice. Вы должны ориентироваться на свои исключения.

0
while True: 
    inp = raw_input("Enter : ") 
    length = len(inp) 
    if(length!=3): 
     raise ValueError 
    num = int(inp) 

Если вы используете Python 2.x, воздержитесь от использования input. Всегда используйте raw_input.

Если вы используете Python 3.x, это нормально.

Read Here

0

Это следует сделать это:

while True: 
    try: 
     string = input("Please enter a (3 digit) number: ") 
     number = int(string) 
     if len(string) != 3 or any(not c.isdigit() for c in string): 
      raise ValueError() 
    except ValueError: 
     print('try again') 
    else: 
     break 
Смежные вопросы