2016-01-24 66 views
2

我呼籲item_order(順序)計算,以字符數,然後一個函數int應該回報是這樣的:返回字符串,並從功能

'Letter a: number of letter a letter b: number of letter b' 

但我得到一個錯誤,說我不能連接str和int。 如何返回str和int?

這是代碼(我使用python):

def item_order(order): 
    ''' 
    order is a string containing words for the items a customer can order 
    returns the number of times each word is listed 
    with this format : name : number of times it is listed 
    ''' 
    s=0 
    h=0 
    w=0 
    for char in order: 
     if char=='s': 
      s=s+1 
     if char=='h': 
      h=h+1 
     if char=='w': 
      w=w+1   
    answer='salad:', s 'hamburger:' h 'water:' w    
    return answer 

當我調用該函數與這種說法('salad, salad, hamburger, water')我希望它返回此:

'salad:2 hamburger:1 water:1' 

我能找到正確的每個單詞列出的次數,但不能用上述格式返回。

從你所提到的要求
+0

請提供代碼片段。 –

+2

你使用什麼編程語言? –

+0

請提供說明您的問題的[最低,完整示例](http://stackoverflow.com/help/mcve)。 – Sam

回答

-1

基本上,我相信你可以嘗試像這樣在C#:

static string OrderInfo(string order) 
     { 
      int len = order.Length; int count; 
      StringBuilder builder = new StringBuilder(); 
      for(int i=0;i<len;i++) 
      { 
       count = 0; 
       char toSearch = order[i]; 

       foreach(char c in order) 
       { 
        if (c == toSearch) 
         count++; 
       } 

       builder.Append("Letter " + order[i] + ": " + count); 

      } 

      return builder.ToString(); 
     } 

注:這將包括repetitve信也。

1

format字符串的方法適用於這樣的任務:

return 'salad: {} hamburger: {} water: {}'.format(s, h, w) 

無關:您的計數的代碼是脆弱的。它碰巧能正確地使用這個數據集 ,因爲字母shw只在 每個字符中出現一次。但是,如果您添加了一個字詞,如'milkshake' ,則此代碼在每次出現時都會計入一次額外的sh

一個更好的辦法是分割字符串成的話,再看看每個 第一個字母:

for word in order.split(): 
    char = word[0] 
    if char == 's': 
    etc. 

更強大的是來算的話本身並返回一個 dict,但當你得到字典時,我會把它留給你;它看起來像你剛剛從Python開始的 。

+0

我意識到計算代碼很弱,但沒關係,因爲只有沙拉,漢堡和水是允許的。 – Cosimo

+0

@科西莫好吧。我希望這十行不相干的東西不會讓你忽略回答你問題的兩條線:) –