如何从 python def 中省略 return 中的括号

how to omit parenthesis in return from a python def

你好,我正在尝试构建一个函数来计算单词,return 必须是 "salad:0 hamburger:2 water:1" 请注意,每个项目的格式为项目名称、冒号符号、计数项目和所有项目组由 space 分隔,我得到的是以下 ('salad:', 1, 'hamburger:', 2, 'water:', 2) 我怎么能从 return

中取出所有 () 和 ''

我的代码如下:

def item_order (order = ""):

    order = order

    s = order.count('salad')
    h = order.count('hamburger')
    w = order.count('water')

    return 'salad:',s, 'hamburger:',h, 'water:',w                       

print  item_order('water hamburger water hamburger salad')

如之前的评论所述,您正在 returning 一个 tuple,它在打印时会产生您正在获得的输出

('salad:', 1, 'hamburger:', 2, 'water:', 2)

如果您想 return 具有上述格式的单个字符串,您可以这样做

return ' '.join(('salad:', str(s), 'hamburger:', str(h), 'water:', str(w)))

例如,产生

'salad: 1 hamburger: 2 water: 2'

你正在return创建一个元组,因此如果你打印它有括号是正常的。

问题是,为什么你需要没有括号的结果?鉴于 python 中没有这样的数据类型。如果你需要它来显示,你可以像这样打印它

for elem in result:
    print elem,
# salad: 1 hamburger: 2 water: 2

如果您需要将整个结果变成一个字符串,那是另一回事,所以您看,您需要决定在这种情况下需要什么。

所以如果问题是第二个,你可以使用这个:

result = ('salad:', 1, 'hamburger:', 2, 'water:', 2)
print str(result)[1:-1]
# 'salad:', 1, 'hamburger:', 2, 'water:', 2

如果您需要一个字符串并且还需要删除引号,您可以return这样的函数

return 'salad:' + str(s) + ' hamburger:' + str(h) + ' water:' + str(w)

您的函数正在返回 一个元组 ,因此当传递给 print 时,该元组将被打印出来。元组打印在括号内。

您可以导入 Python 3 打印函数并将元组作为参数传递给该函数。为此,您需要在文件的最顶部添加以下导入:

from __future__ import print_function

然后你可以这样做:

print(*item_order('water hamburger water hamburger salad'))

请注意,导入打印功能将要求您始终使用 print(something) 而不是 print something

好吧,如果你只有这些你正在计算的单词,那么输出它们和计数的最简单方法可能是 return 一个由你正在计算的单词和它们的计数连接而成的字符串像这样:

def item_order (order=""):

    order = order

    s = order.count('salad')
    h = order.count('hamburger')
    w = order.count('water')

    return 'salad: ' + str(s) + ' hamburger: ' + str(h) + ' water: ' + str(w)                       

print item_order('water hamburger water hamburger salad')

您正在生成 ('salad:', 1, 'hamburger:', 2, 'water:', 2).

形式的元组

您可以使用 .format 轻松地将其转换为字符串:

>>> t=('salad:', 1, 'hamburger:', 2, 'water:', 2)
>>> "{} {}, {} {}, {} {}".format(*t) 
'salad: 1, hamburger: 2, water: 2'