Я только начал изучать python и хочу знать, является ли мой подход лучшим в обработке возможных одновременных ошибок.
Input object is: actor = {"name": "John Cleese", "rank": "awesome"}
Я определил функцию, которая должна возвращать слово "X"
из значения свойства "Y"
:
def get_property(prop, poz):
ln = actor[prop].split()[poz]
return ln
#this is how I call my function
_prop = "fname"
_poz = 12
print("The actor's %s is %s" % (_prop, get_property(_prop, _poz)))
Моя цель состоит в том, чтобы, если свойство не существовало, тогда использовать «имя» и / или если значение не может быть разбито на столько слов, сколько значение «_poz + 1», затем выбрать первое слово значения это свойство.
Мое решение ниже, поэтому, пожалуйста, дайте мне знать, если есть лучший способ. Заранее спасибо!
# Handle all the exceptions!
#Setup
actor = {"name": "John Cleese", "rank": "awesome"}
#This function should return the "poz"th word of property "prop". If an invalid property is passed then use "name". If an invalid index of the word in the value is passed then use return the first word.
def get_property(prop, poz):
ln = ""
noerr = 0
while noerr == 0:
try:
ln = actor[prop].split()[poz]
except IndexError:
poz = 0
except KeyError:
prop = "name"
else:
noerr = 1
return ln
#Test code
_prop = "fname"
_poz = 12
print("The actor's %s is %s" % (_prop, get_property(_prop, _poz)))
Это ожидаемые случаи и их вывод:
Случай 1: действительное свойство и индекс действительного слова
_prop = "name"
_poz = 1
get_property(_prop, _poz) = Cleese
Случай 2: допустимое свойство и неверный индекс слова
_prop = "name"
_poz = 12
get_property(_prop, _poz) = John
Случай 3: Недопустимое свойство и действительный индекс слова
_prop = "MIDDLEname"
_poz = 1
get_property(_prop, _poz) = Cleese
Случай 4: Недопустимое свойство и неверный индекс слова
_prop = "b-rank"
_poz = 12
get_property(_prop, _poz) = John