如何将for循环打印为函数的最后内容?

时间:2018-07-24 16:53:24

标签: python python-3.x

所以这是我的功能和一些信息:

此函数由另一个函数调用,因此返回result1将显示我想要的内容。 因此,在这个函数中,我希望能够在之后打印出result1然后for循环;但是,由于我无法将for循环放在return内,因此它总是会先打印for循环,然后再打印返回的result1。

注意:Dish_str()是另一个函数,我将其包含在底部

def Restaurant_str(self: Restaurant) -> str:
    result1 = ("Name:     " + self.name + "\n" +
               "Cuisine:  " + self.cuisine + "\n" +
               "Phone:    " + self.phone + "\n" +
               "Menu:    ")
    for i in self.menu:
        print(Dish_str(i))
    return result1 + "\n\n"

这是结果:

Fried Chicken ($10.00): 1300.0cal
Name:     KFC
Cuisine:  American
Phone:    1112223333
Menu: 

我想做的是使菜式出现在菜单之后。

我尝试使其工作的一种方法是将Dish_str()放入返回值中,使其看起来像这样:

return result1 + Dish_str(self.menu) + "\n\n"

对此,我将收到一条错误消息,该错误消息指出属性错误,该列表不包含属性名称,即使在for循环中它也可以工作。然后,我尝试仅执行Dish_str(self),这给了我一个无法连接列表的类型错误。

我试图使其工作的另一种方法也将for循环拆分为另一个函数,并让Restaurant_str()对其进行调用,但是可惜,没有用,因为我意识到这与调用Dish_str()完全相同另一个额外的功能。

以下是其他正在调用并被调用的函数:

def Dish_str(self: Dishes) -> str: 
'''Returns a string that represents the dish name, price, and calories'''
result = self.name + " ($" + str("%.2f" % self.price) + "): " + 
         str(self.calories) + "cal"
    return result

def Collection_str(C: list) -> str:
    ''' Return a string representing the collection
    '''
    s = ""
    for r in C:
        s = s + Restaurant_str(r)
    return s

我只是通过以下方式打印收藏集:

print(Collection_str(C))

请问我是否需要澄清我在深夜写的内容,并且没有时间检查。感谢您的耐心配合和提前帮助。

1 个答案:

答案 0 :(得分:0)

只需将字符串IQueryable<T>添加到dishresult1的末尾

result1 = result1 + Dish_str(i)

有什么帮助吗?