Форум сайта python.su
код для иллюстрации
# -*- coding: cp1251 -*-
#Проверяем возможности создания и обработки исключений
#при выходе за границы списка
#задаем любой массив с вложенными кортежами где
#key one - название ключа, 2 - значение ключа, 'g' - дополнительный флаг ключа
some_list = [('key one', 2, 'g'), ('key two', 3, 'n'),
('key four', 4, 'g'), ('key three', 4, 'n')]
#Создаем функцию получающую в цикле значения из массива
def some_function():
#Создаем счетчик равный длинне массива
counter = len(some_list)
#Создаем цикл c условием выполнения до тех пор пока счетчик больше нуля
while counter > 0:
#Обрабатываем исключение TupleIndexOutOfRange (Выход за границы кортежа)
#Печатаем значения ключей
print some_list[counter - 1][2]
#После каждого прохода цикла уменьшаем счетчик на единицу
counter = counter - 1
#Запускаем функцию
some_function()
some_list = [('key one', 2, 'g'), ('key two', 3, 'n'),
('key four', 4, 'g'), ('key three', 4)]
IndexError: tuple index out of range
if tuple index out of range:
pass
Офлайн
Вариант 1:
try: print tuple[2] except IndexError: pass
if len(tuple)>2: pass
Офлайн
t = (1, 2) try: print t[2] except IndexError: print "out of range"
Офлайн
большое спасибо!
Офлайн
def some_function(): #Создаем счетчик равный длинне массива counter = len(some_list) #Создаем цикл c условием выполнения до тех пор пока счетчик больше нуля while counter > 0: #Обрабатываем исключение TupleIndexOutOfRange (Выход за границы кортежа) try: #Печатаем значения ключей print some_list[counter - 1][2] except IndexError: print some_list[counter - 1][0],"> out of range" #После каждого прохода цикла уменьшаем счетчик на единицу counter = counter - 1
Офлайн
Здесь while - не по питонски.
Можно извратится с параметрами по умолчанию
def foo(key, val, flag= None): print key, val, flag some_list = [('key one', 2, 'g'), ('key two', 3, 'n'), ('key four', 4, 'g'), ('key three', 4)] for x in some_list: foo(*x)
Офлайн
sp3
Сам хотел предложить использовать значения функции по умолчанию.
Опередил… :)
Отредактировано 4kpt (Дек. 9, 2012 15:38:46)
Офлайн