学习Python Hardway ex24

时间:2015-09-19 03:00:54

标签: python string

快速提问以确保我理解正确。

1)通过定义val = 1000,然后a, b, c = secret_formula(val)secret_formula(started)使用a, b, c变量(调用val)作为已启动< / strong>参数

2)secret_formula然后存储前进使用的3个返回值

def secret_formula(started):
    jelly_beans = started * 500
    jars = jelly_beans / 1000
    crates = jars / 100
    return jelly_beans, jars, crates

val = 10000
a, b, c = secret_formula(val)

print "With a starting point of: %d" % val
print "We'd have %d beans, %d jars and %d crates." % (a, b, c)

d = secret_formula(10)

print "we can also do that this way:"
print "Wed have %d beans, %d jars, and %d crates." % d

3 个答案:

答案 0 :(得分:1)

不确定你的意思 - 然后a, b, c = secret_formula(val) secret_formula(已启动)使用a,b,c变量(调用val)作为已启动的参数

但是当你这样做 - a, b, c = secret_formula(val)时,使用参数secret_formula()调用函数val,这基本上意味着它开始执行函数{{1 secret_formula()的{​​{1}}变量具有started的值(同一对象的引用,但我不会进入那里)。

然后在函数完成并使用val语句返回值后,返回的值将分配给return。当你这样做 -

a,b,c

某些内容必须是一个可迭代的(如列表或元组),它提供三个元素(因此在a, b, c = <something> list的情况下,它必须是三个元素的元组列表)。然后,它将第一个值存储在tuple中,第二个值存储在a中,第三个值存储在b中。有关赋值语句的更多详细信息,请参阅the documentation

当你做 - c时 - 它在内部返回一个由三个元素组成的元组。

当你这样做时 -

return jelly_beans, jars, crates

d = secret_formula(10) 完全存储返回的元组。

答案 1 :(得分:1)

int main() { int array[SIZE]; int index, count, target, size; printf("Enter array size: "); scanf("%d", &size); printf("Enter %d numbers: ", size); for (index = 0; index < size; index++) scanf("%d", &array[index]); printf("Enter the target: "); scanf("%d", &target); count = rCountArray(array, size, target); printf("rCountArray() = %d", count); return 0; } 上调用<secret_formula,其值为10000,因此val运行时其secret_formula参数等于10000.它使用10000值started计算startedjelly_beansjars的值,并返回所有这三个变量的值。由于cratesab(3个变量)设置为c的返回值,因此它们会收到secret_formula中存储的值,{在jelly_beans内{1}}和jars

设置变量等于函数返回值的基本结构如下:

crates

答案 2 :(得分:1)

总体思路是正确的,但是a, b, c并没有调用函数或输入函数,至少是你发出的声音。

通过调用函数来执行secret_formula(val)操作的顺序。由于已为return提供了3个jelly_beans, jars, crates值,因此它们分别被分配到a, b, c

这可以通过代码中的print "We'd have %d beans, %d jars and %d crates." % (a, b, c)进行检查。

d获取这些值的列表,因为只分配了一个变量。

但是,调用函数时不能分配两个变量,必须有3个(每个返回一个)或1个(获取列表)。