2013-11-11 2 views
0

Я очень новичок в Python и программировании в целом. Прямо сейчас я занимаюсь занятиями, чтобы спустить основные понятия.Проверка ввода классов в Python

код до сих пор:

class Person(object): 
    def __init__(self,name,age): 
     self.name = name 
     self.age = age 
    def __repr__(self): 
     return '[Person: %s, Age: %s]' % (self.name,self.age) 
class Employee(Person): 
    def __init__(self,name,age,salary,jobs): 
     self.salary=salary 
     self.jobs= [] 
     Person.__init__(self,name,age) 

Очень просто до сих пор .. в любом случае, что бы быть лучшим способом, чтобы убедиться, что пользователь вводит строку два слова для имени, в Int возраста, int для зарплаты и список слов для работы? Должен ли я использовать для этого регулярные выражения? Или, возможно, блок try/exception? Заранее благодарим за любой ответ.

ответ

0

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

Вместо этого, вы можете try бросить user_input к типу вы хотите, и except для обработки ошибок:

try: 
    self.age = int(user_input) 
except ValueError: 
    print "You didn't enter a number for age, try again" 

Если предположить user_input является строка; если это строка с номерами (например, '25'), то int() преобразует ее в int без заминки, и у вас будет self.age = 25. Если это строка (например, «двадцать пять»), она будет вызывать ValueError, и вы можете делать все, что хотите (отображать сообщение об ошибке, попросить пользователя ввести что-то еще и т. Д.).

Это даст вам очень простой способ проверки ввода; в зависимости от ваших требований, вы можете захотеть большего. Например, вы можете использовать ограничения по self.age (например, более 18, менее 99), что вы можете сделать с помощью простых операторов if.

Чтобы проверить, что пользователь предоставил список слов для заданий, вы можете использовать метод split(), который разбивает строку слов с заданным seperator и возвращает массив слов. Так, например, если user_input - 'engineer janitor', user_input.split() вернется ['engineer', 'janitor'].

>>> user_input = 'engineer janitor' 
>>> user_input.split() 
['engineer', 'janitor'] 

(помните, что split() принимает необязательный аргумент, который является то, что строка разделена на.Поэтому, если вы хотите, чтобы пользователь разделял задания запятыми, вы могли бы позвонить user_input.split(','))

Затем вы можете использовать функцию len(), чтобы убедиться, что пользователь ввел более двух заданий.

>>> jobs = user_input.split() 
>>> len(jobs) 
2 

Для более сложных проверок (например, если вы хотите, чтобы убедиться, что слова в списке заданий все капитализируются и длиной более 2 буквы), то да, регулярные выражения, вероятно, что вы хотите , но они могут быть немного подавляющими, если вы только начинаете с Python :)

0
  1. Чтобы проверить, является ли строка длины вы можете использовать:
    Split имя с помощью раскола. ls=name.split(" ")
    Теперь проверьте длину ls по len(ls)
    Если его 2, то путь 2 идут !!

  2. Чтобы проверить, является ли переменная var является INT или не проверить его тип:
    print type(var)

Вы можете использовать тип для проверки любой class либо пользовательских или уже определены.
Дополнительная информация здесь type

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