python函数确切的改变不会起作用

时间:2015-10-01 17:54:04

标签: python

我的任务是:

  

其中输入target_amount是单个非负整数值,输入L是正整数值列表。然后,exact_change应返回True或False:如果可以通过将L中的部分或全部值相加来创建target_amount,则应返回True。如果无法通过添加某些内容来创建target_amount,则应返回False或者 - L中的所有值。

     

例如,L可以代表您口袋里的硬币,target_amount可以代表商品的价格 - 在这种情况下,exact_change会告诉您是否可以准确支付商品的费用。

     

以下是一些exact_change的实例。请注意,您始终可以对目标值0进行更改,并且永远不能对负目标值进行更改:这些是基本情况中的两个,但不是全部!

我写的函数是:

TypeError: 'int' object is not iterable

胜利必须是:

123456789
246824682

但我的结果是:

    #include <stdio.h>
    int main(void) {

        char num[10];
        int num1,num2,num3;

        printf("Enter your num: ");
        fgets(num,10,stdin);

        num1 = num[1] * 2;
        num2 = num[2] * 4;
        num3 = num[3] * 6;

        printf("%d %d %d", num1,num2,num3);



        return 0;
}

请帮帮我!我错过了什么?

2 个答案:

答案 0 :(得分:0)

对于 useit 递归调用,您传递的是单个int而不是剩余的列表,请参见下文:

def exact_change( target_amount, L ):
    if target_amount > sum(L):
        return False
    elif target_amount == 0:
        return True
    elif target_amount < 0:
        return False
    elif target_amount > 0 and not L:
        return False
    else:
        loseit = exact_change(target_amount, L[1:])
        # reduce target amount since we use current coin
        useit = exact_change(target_amount - L[0], L[1:])
        return loseit or useit

答案 1 :(得分:-1)

您正在尝试迭代单个整数。这是不可能的。你遍历一个列表。