[英]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.