如何获取从单独的函数打印结果的函数,但单独的函数不打印结果。

时间:2017-05-24 05:04:37

标签: python function callback

对于措辞严厉的帖子感到抱歉,我现在已经尝试了几个小时的练习题,而我的大脑已经变得糊里糊涂了。 因此,在uni的练习测验中,我们必须调用前一个函数,不允许使用全局常量或变量。然后测验服务器测试原始函数以确保它正常工作,因此输入:

cost = fun_function(5, 31, 15, 10)
print('5 items cost ${:.2f}'.format(cost))

并期待结果:

5 items cost $155.00

我的代码的问题是它自动打印项目成本而没有添加

print('5 items cost ${:.2f}'.format(cost))

但如果删除代码的print元素,我就不会传递第一个问题。第一个问题是代码自动运行,输入为25,代码必须自动输出所需的结果,没有添加输入。所需的代码输出是:

25 items cost $607.50

那么如何让代码自动打印主函数的结果,而不用自动打印任何其他测试。 我的代码:

"""Prints out cost of a group of items with discount if it meets item 
required thresh hold"""

def fun_function(
    n_items, cost_per_item, discount_percent, discount_threshold
    ):
    """Prints out cost of a group of items with discount if it meets item 
    required thresh hold"""
    if n_items > discount_threshold:
        final_cost = (n_items * cost_per_item) * (1 - discount_percent/100)
    elif n_items < discount_threshold:
        final_cost = n_items * cost_per_item
    print('{} items cost ${:.2f}'.format(n_items, final_cost))

def main():
    """Deminstrates that the function works as desired"""
    fun_function(int(input("How many items? ")), 27, 10, 20)

main()

所以我想我问我如何让main()打印结果,但没有fun_function()打印结果

当我有fun_function()时返回main()打印如下:

return '{} items cost ${:.2f}'.format(n_items, final_cost)

print(fun_function(int(input("How many items? ")), 27, 10, 20))

我收到了这个错误:

print('5 items cost ${:.2f}'.format(cost))
Traceback (most recent call last):
  Python Shell, prompt 4, line 1
builtins.ValueError: Unknown format code 'f' for object of type 
'str'

当我输入

print('5 items cost ${:.2f}'.format(cost))

这只是我复制粘贴测验服务器输入的内容,

1 个答案:

答案 0 :(得分:0)

@JaredRendell

假设您获得费用的程序是正确的(我没有检查它 - 我只是想让你更清楚:

def fun_function(
    n_items, cost_per_item, discount_percent, discount_threshold):
    """Prints out cost of a group of items with discount if it meets item 
    required thresh hold
    """
    if n_items > discount_threshold:
        final_cost = (n_items * cost_per_item) * (1 - discount_percent/100)
    elif n_items < discount_threshold:
        final_cost = n_items * cost_per_item
    return n_items, final_cost


def main():
    """Deminstrates that the function works as desired"""
    n_items, final_cost = fun_function(int(input("How many items? ")), 27, 10, 20)

    print('{} items cost ${:.2f}'.format(float(n_items), float(final_cost)))


main()

请注意,在print main来电中,我根据您的错误消息添加了对float的调用。这将确保值将作为浮点数返回,如果它们可以转换为浮点数(例如,如果它们是整数,它们将能够被转换,例如1或2,或者可以是字符串转换为整数,例如“1”或“2”。

将来,当你感觉自己的大脑变得糊里糊涂时,请休息一下,做一些其他事情。说真的,你会惊讶地发现,你在一整天之前,第二天都没有考虑过这个问题的解决方案,并且没有考虑过它。

我还建议从干净的平板开始并重写所有代码。让自己陷入某种思维方式很容易,因为你最终会依赖于你已经完成的工作,即使它可能存在缺陷。当你继续盯着它时,几乎不可能在这个盒子外思考。