如何编写square_odd_terms函数?

时间:2015-03-11 05:58:20

标签: python python-3.x

  

编写一个函数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

如何解决这个问题?如何修改上面的代码使其满足问题要求?什么是正确的答案?

2 个答案:

答案 0 :(得分:0)

在这里发布作业问题,呵呵?

以下是解决问题的一种方法:

  • 创建结果元组(空)
  • 使用循环遍历输入元组中的每个项目。
  • 检查tupleValue [i]是奇数还是偶数。
  • 如果是偶数,只需将其添加到结果元组。
  • 如果是奇数,请计算平方并添加到结果元组。
  • 返回结果元组

快乐的编码!

答案 1 :(得分: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 )