2017-07-11 40 views
2

定义功能&可变的:打印格式字符串函数和变量(蟒)

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

start_point = 10000/10 

打印语句:

print """crazy different style: 
startpoint: %d\n 
beans:\t\t %d\n 
jars:\t\t %d\n 
crates:\t\t %d\n 
""" % (start_point, (secret_formula(start_point))) 

该错误消息我得到的是“%d格式:当需要一个数,而不是一个元组 请帮我修复它,我真的对编程新手......或者仅仅是不可能将一个变量和一个被调用的函数打包到相同的格式打印中吗?

+0

你有你的问题陈述那里的解决方案。 ''%d格式:一个数字是必需的,而不是一个元组''也可以看到python'字符串格式化'。如果你是新手,那么你的基础知识就是编程工作。任何关于python的体面教程/网站都会有你想要的东西了解关于python的基本结构 – anekix

+0

好像你想把你的元组''(secret_formula(start_point))'解开成几个参数。你可以用解包运算符来做到这一点,即'*(secret_formula(start_point))' – khelwood

回答

0

的变体在Python 2:

print """crazy different style: 
startpoint: %d\n 
beans:\t\t %d\n 
jars:\t\t %d\n 
crates:\t\t %d\n 
""" % ((start_point,) + secret_formula(start_point)) 

其中i加元组(start_point,)到你的函数的结果创建一个新的记录。


在Python 3,你可以unpack the tuple with a *

print("""crazy different style: 
startpoint: %d\n 
beans:\t\t %d\n 
jars:\t\t %d\n 
crates:\t\t %d\n 
""" % (start_point, *secret_formula(start_point))) 
+0

在Python2中工作。 –

0

考虑,为了把它解析(蟒蛇3.x的溶液)加入*

print ("""crazy different style: 
startpoint: %d\n 
beans:\t\t %d\n 
jars:\t\t %d\n 
crates:\t\t %d\n 
""" % (start_point, *(secret_formula(start_point)))) 

如果您在使用python 2.x可以输入:

start_point = 10000/10 
res = secret_formula(start_point) 
print """crazy different style: 
startpoint: %d\n 
beans:\t\t %d\n 
jars:\t\t %d\n 
crates:\t\t %d\n 
""" % (start_point, res[0], res[1], res[2]) 
0
#According to zen of python Explicit is better than implicit, so 

bs, js, cs = secret_formula(start_point) 

print """crazy different style: 
startpoint: %d\n 
beans:\t\t %d\n 
jars:\t\t %d\n 
crates:\t\t %d\n 
""" % (start_point, bs, js, cs) 
0

工作蟒蛇3

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

start_point = 10000/10 

print ("startpoint : {0} \n \ 
     beans:\t\t {1} \n \ 
     jar :\t\t {2}".format(start_point,*secret_formula(start_point)[:2])) 

输出

startpoint : 1000.0 
    beans:  500000.0 
    jar :  500.0