从函数返回字符串和int

时间:2016-01-24 07:36:12

标签: python json string

我有一个名为item_order(order)的函数,它按顺序计算char的数量,然后返回如下内容:

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

我可以正确找到每个单词的列出次数,但我无法使用上述格式返回。

2 个答案:

答案 0 :(得分:1)

return 'salad: {} hamburger: {} water: {}'.format(s, h, w) 字符串方法适用于此类任务:

shw

无关:您的点钞代码很脆弱。它碰巧工作正常 使用此数据集,因为字母'milkshake'每次只显示一次 整套词。但是,如果您添加了s之类的字词 每次出现时,此代码都会计算额外的hfor word in order.split(): char = word[0] if char == 's': etc.

更好的方法是将字符串拆分为单词,然后查看 每个人的第一个字母:

dict

更强大的是计算单词本身并返回a connect.php,但是当你接受决定时,我会把它留给你;看起来像 你刚刚开始使用Python。

答案 1 :(得分:-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();
        }

注意:这也包括重复字母。