2012-01-29 38 views
1

我有我认为是一个令人尴尬的简单问题,但三个小时的搜索和检查stackoverflow没有帮助。使用函数时的字符串格式问题

比方说,我有一个非常简单的代码:

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

start_point = 10000 

print("We'd have {} beans, {} jars, and {} crates.".format(secret_formula(start_point))) 

会发生什么事是我得到的“IndexError:元组索引超出范围”。所以,我只打印secret_formula功能,看看是什么样子,它看起来像这样:

(5000000, 5000.0, 50.0) 

基本上,它是治疗输出作为一个“东西”(我还是很新的,对不起,如果我的语言是不正确的)。我的问题是,为什么它会这样对待它,以及如何让它通过三个输出(jelly_beans,jarscrates),以便正确格式化字符串?

谢谢!

回答

1

该字符串的format函数采用可变数目的参数。 secret_formula函数返回一个元组。您想将其转换为参数列表。这是使用下面的语法来完成:

print("We'd have {} beans, {} jars, and {} crates.".format(*secret_formula(start_point))) 

重要面值为*字符。它告诉你要将下面的迭代转换为传递给函数的参数列表。

+0

谢谢!我试图使用*,但我把它放在错误的地方,所以我放弃了。 – popwat 2012-01-29 23:42:55