2015-11-09 6 views
0

Так что я пытаюсь сделать бот Reddit для личного использования, как учебный проект, и у меня возникли проблемы с добавлением исключений ошибок для ввода.Как взять разные типы ввода и сделать что-то другое с каждым? Python 3.5

Вот весь исходный код: http://pastebin.com/DYiun1ux

Части, которые являются исключительно вопросом здесь являются

while True: 
if type(thing_limit) == int: 
    print("That is a number, thanks.") 
    break 
elif type(thing_limit) == float: 
    print("You need a whole number.") 
    sys.exit() 
elif type(thing_limit) == str: 
    print("You need a whole number.") 
    sys.exit() 
else: 
    print("That is a number, thanks.") 
    break 

Я не уверен, как я бы идти о том, чтобы убедиться, что имя пользователя, которое я поставил in действительно или нет. Благодаря!

ответ

6

input всегда возвращает строку. Ваш лучший выбор - это преобразовать результат в целое число.

try: 
    thing_limit = int(thing_limit) 
except ValueError: 
    print("You need a whole number.") 
    sys.exit() 
else: 
    print("That is a number, thanks.") 
+0

На самом деле вы можете поместить 'print (« Это число, спасибо. »)' Ниже 'thing_limit = int (thing_limit)' и без 'else' блока. –

+0

@KevinGuan Вы правы, но я думаю, что это выглядит лучше, не так ли? – cdonts

+1

Да, так просто совет: P –

0

Каждый вход в python будет считан как строка, поэтому проверка типа всегда будет возвращать строку. Если вы хотите, чтобы проверить правильность ввода, объявить строку с такими как

charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_" 

затем перебрать вашу строку, чтобы увидеть, если это письмо в кодировке. Если это не так, вход недействителен. Также убедитесь, что вход не превышает 20 символов.

0

Reddit исходный код defines действительное имя пользователя, как тот, который по крайней мере, 3-х символов, не более 20 символов, и соответствует регулярному выражению \A[\w-]+\Z.

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

  • Нет связанных вопросов^_^