2015-03-11 3 views
0

Напишите функцию square_odd_terms, которая принимает кортеж в качестве аргумента и возвращает кортеж с нечетными членами в квадрате кортежа. Даже условия останутся прежними.Как написать функцию square_odd_terms?

Например, square_odd_terms((1, 2, 3, 4, 5))(1, 2, 9, 4, 25) и square_odd_terms((2, 4, 6, 8, 10))(2, 4, 6, 8, 10).

Формат ответа:

def square_odd_terms(tpl): 
    # Fill in your code here

Я могу только написать функцию, которая возвращает вас значение суммы нечетных чисел:

def sum_odd_squares(tree): 
    if tree ==(): 
     return 0 
    elif is_leaf(tree): 
     if tree%2 == 0: 
      return 0 
     else: 
      return tree ** 2 
    else: 
     return sum_odd_squares(tree[0])+sum_odd_squares(tree[1:]) 

def is_leaf(item): 
    return type(item) != tuple 

Как сделать этот вопрос? Как изменить приведенный выше код таким образом, чтобы он отвечал требованиям вопроса? Каков правильный ответ?

ответ

0

Публикация домашних заданий Вопросы здесь, да?

Вот один из способов сделать эту проблему:

  • Создать результат кортеж (пусто)
  • перебирать каждый элемент в вашем входном наборе, используя цикл.
  • Проверьте, не является ли tupleValue [i] нечетным или четным.
  • Если даже, просто добавьте его в исходный кортеж.
  • Если нечетный, вычислите квадрат и добавьте в результат кортеж.
  • возвращают результат кортеж

Счастливый кодирования!

0

Вы можете использовать список понимание:

[ x**2 if x%2==1 else x for x in tpl ] 

Однако это создает список, а не кортеж. Чтобы создать кортеж, вы можете преобразовать результат:

tuple([ x**2 if x%2==1 else x for x in tpl ]) 

Или просто использовать выражение генератора в первую очередь:

tuple(x**2 if x%2==1 else x for x in tpl)