簡體   English   中英

如何從python def返回省略括號

[英]how to omit parenthesis in return from a python def

您好,我正在嘗試建立一個計算單詞數的函數,返回值必須為“沙拉:0漢堡:2水:1”。請注意,每個項目的格式均設置為項目名稱,冒號,項目數以及項目組之間用空格隔開,我得到的是以下內容(“沙拉:”,1,“漢堡包”,2,“水:”,2)如何去除所有()和”回報

我的代碼如下:

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')

如先前的評論所述,您將返回一個tuple ,該tuple在打印時會產生您所得到的輸出

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

如果您想返回上述格式的單個字符串,可以執行

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

例如,

'salad: 1 hamburger: 2 water: 2'

您將返回一個元組 ,因此,如果打印出一個圓括號,這是正常的。

問題是,為什么您需要沒有括號的結果? 鑒於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 'salad:' + str(s) + ' hamburger:' + str(h) + ' water:' + str(w)

您的函數返回一個tuple ,因此當傳遞給print ,該tuple被打印。 元組打印在括號內。

您可以導入Python 3打印函數並將元組作為參數傳遞給該函數。 為此,您需要在文件的最頂部添加以下導入:

from __future__ import print_function

然后您可以這樣做:

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

請注意,導入打印功能將要求您始終使用print(something)而不是print something

好吧,如果您僅要計數這些單詞,則將它們與計數一起輸出的最簡單方法可能是,返回一個由您要計數的單詞及其計數組成的字符串,如下所示:

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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM