QQ登录

只需一步,快速开始

搜索
鱼C论坛笔记大赛成绩公示
查看: 420|回复: 35

[技术交流] Python:每日一题 95(答题领鱼币)

[复制链接]
最佳答案
445 
累计签到:661 天
连续签到:36 天
发表于 2017-9-8 07:55:40 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
有一个多行的字符串,要给每行的开头加上数字,这个数字代表其后紧接着的与本行内容相同的行数。例如
  1. FishC
  2. FishC
  3. FishC
  4. FishC
  5. Little turtle
  6. Little turtle
  7. Python
  8. FishC
复制代码

结果为
  1. (3)FishC
  2. (2)FishC
  3. (1)FishC
  4. (0)FishC
  5. (1)Little turtle
  6. (0)Little turtle
  7. (0)Python
  8. (0)FishC
复制代码



我的解法:
游客,如果您要查看本帖隐藏内容请回复

本帖被以下淘专辑推荐:

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:21 天
连续签到:12 天
发表于 2017-9-8 08:49:40 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
11 
累计签到:166 天
连续签到:1 天
发表于 2017-9-8 08:52:13 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
4 
累计签到:102 天
连续签到:3 天
发表于 2017-9-8 09:47:03 | 显示全部楼层
  1. def addhead(list1):
  2.     count = 0
  3.     for i in range(0,len(list1)):
  4.         for j in range(i + 1,len(list1)):
  5.             if list1[j] == list1[i]:
  6.                 count += 1
  7.         print('(' + str(count) + ')' + list1[i])
  8.         count = 0


  9. list2 = ['FishC', 'FishC', 'FishC', 'FishC', 'Little turtle', 'Little turtle', 'Python', 'FishC']
  10. addhead(list2)
  11.         
复制代码

点评

有点小问题,前一个FishC应该是3、2、1、0  发表于 2017-9-8 12:14
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:115 天
连续签到:3 天
发表于 2017-9-8 09:49:46 | 显示全部楼层
本帖最后由 白牙 于 2017-9-8 10:58 编辑

list0= ['FishC', 'FishC', 'FishC', 'FishC', 'Little turtle', 'Little turtle', 'Python', 'FishC']
fuben_list=list0.split(',')
next = list1[-1]
list[-1]='(0)'+list1[-1]
for i in range(-2,-len(list1)-1,-1):
    if list1==next:
        count+=1
    else:
        count=0
    next=list1
    list0='(%d)'%conut+list
print('\n'.join(list1))

点评

这行报错:fuben_list=list0.split(',')  发表于 2017-9-8 12:15
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 

尚未签到

发表于 2017-9-8 10:21:28 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
7 
累计签到:10 天
连续签到:1 天
发表于 2017-9-8 11:02:17 | 显示全部楼层
  1. from itertools import groupby
  2. a = '''
  3. FishC
  4. FishC
  5. FishC
  6. FishC
  7. Little turtle
  8. Little turtle
  9. Python
  10. FishC
  11. '''
  12. s = [i for i in a.split('\n') if i != '']
  13. b = [list(g) for k, g in groupby(s)]
  14. for i in range(len(b)):
  15.     for j in range(len(b[i])):
  16.         print(len(b[i])-1-j,b[i][j])
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
冬雪雪冬 + 5 + 5

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
5 
累计签到:1233 天
连续签到:1 天
发表于 2017-9-8 11:05:16 | 显示全部楼层
  1. print("\n".join(f"({s[i+1:].count(c)}){c}" for i,c in enumerate(s)))
复制代码

你看我屌不屌
py3.6以上

点评

有点小问题,前一个FishC应该是3、2、1、0  发表于 2017-9-8 12:18
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
1 
累计签到:37 天
连续签到:1 天
发表于 2017-9-8 11:27:04 | 显示全部楼层
  1. s='''FishC
  2. FishC
  3. FishC
  4. FishC
  5. Little turtle
  6. Little turtle
  7. Python\nFishC'''
  8. ss=s.split('\n')
  9. t=[]#全是0
  10. for i in range(len(ss)):
  11.     t.append(0)


  12. for i in range(1,len(ss)):   
  13.     if ss[-i-1]==ss[-i]:
  14.         t[-i-1]=1+t[-i]
  15.         
  16. for i in range(len(ss)):
  17.     print("("+str(t[i])+")"+str(ss[i]))

  18. ————————————————————————————————
  19. 运行结果
  20. ===================== RESTART: D:\Python36-32\caogao.py =====================
  21. (3)FishC
  22. (2)FishC
  23. (1)FishC
  24. (0)FishC
  25. (1)Little turtle
  26. (0)Little turtle
  27. (0)Python
  28. (0)FishC
  29. >>>
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
4 
累计签到:102 天
连续签到:3 天
发表于 2017-9-8 13:15:32 | 显示全部楼层
  1. def addhead(list1):
  2.     count = 0
  3.     for i in range(0,len(list1)):
  4.         for j in range(i + 1,len(list1)):
  5.             if list1[j] == list1[i]:
  6.                 count += 1
  7.             else:
  8.                 break
  9.         print('(' + str(count) + ')' + list1[i])
  10.         count = 0


  11. list2 = ['FishC', 'FishC', 'FishC', 'FishC', 'Little turtle', 'Little turtle', 'Python', 'FishC']
  12. addhead(list2)
复制代码


之前没看到题目要求是紧跟着的

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
47 
累计签到:303 天
连续签到:10 天
发表于 2017-9-8 18:12:48 | 显示全部楼层
本帖最后由 jerryxjr1220 于 2017-9-8 18:17 编辑
  1. from itertools import groupby
  2. [print('(%d)%s' % (i, m)) for m,n in groupby(str1.split('\n')) for i in range(len(list(n))-1,-1,-1)]
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
1 
累计签到:250 天
连续签到:5 天
发表于 2017-9-8 18:46:18 | 显示全部楼层
按换行符拆分,分组,按成员的数量贴上数字,再拼接起来
  1. import itertools as it

  2. def fun(s):
  3.     lst = ["".join(("(%d)"%k, i,"\n")) for i,j in it.groupby(s.split('\n')) for k in range(len(list(j))-1,-1,-1)]
  4.     return "".join(lst)[:-1]
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
1 
累计签到:37 天
连续签到:1 天
发表于 2017-9-8 18:56:33 | 显示全部楼层
哈哈,天天都有鱼币那
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:23 天
连续签到:1 天
发表于 2017-9-9 00:19:16 | 显示全部楼层
  1. a = '''
  2. FishC
  3. FishC
  4. FishC
  5. FishC
  6. Little turtle
  7. Little turtle
  8. Python
  9. FishC
  10. '''
  11. list1 = a.split(sep='\n')[1:-1]
  12. list2 = ['(0)' + list1[-1]]
  13. for i in range(2,len(list1)+1):
  14.     if list1[-i] != list1[-i+1]:
  15.         list2.append('(0)' + list1[-i])
  16.         n = 0
  17.     else:
  18.         n += 1
  19.         list2.append('('+str(n)+')'+list1[-i])
  20. for each in list2[::-1]:
  21.     print(each)
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:14 天
连续签到:1 天
发表于 2017-9-9 13:48:35 | 显示全部楼层
  1. s1='''FishC
  2. FishC
  3. FishC
  4. FishC
  5. Little turtle
  6. Little turtle
  7. Python
  8. FishC'''
  9. s1=s1.split('\n')
  10. num=len(s1)
  11. for i in range(num):
  12.     count=0
  13.     for j in range(i+1,num):
  14.         if s1[i]==s1[j]:
  15.             count+=1
  16.         else:
  17.             break
  18.     s1[i]='('+str(count)+')'+s1[i]
  19. print('\n'.join(s1))
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:27 天
连续签到:1 天
发表于 2017-9-9 16:36:37 | 显示全部楼层
  1. def num(list,n):
  2.     m=0
  3.     if n==len(list)-1:
  4.         return m
  5.     for i in range(n+1,len(list)):
  6.         if list[i]==list[n]:
  7.             m+=1
  8.         else:
  9.             return m


  10. list='''FishC
  11. FishC
  12. FishC
  13. FishC
  14. Little turtle
  15. Little turtle
  16. Python
  17. FishC'''
  18. list=list.split('\n')
  19. for i in range(0,len(list)):
  20.       print '('+str(num(list,i))+')'+list[i]
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
2 
累计签到:1 天
连续签到:1 天
发表于 2017-9-9 18:03:42 | 显示全部楼层
(3)FishC
(2)FishC
(1)FishC
(0)FishC
(1)Little turtle
(0)Little turtle
(0)Python
(0)FishC
为什么FishC有两个0?
怎样换成升(降)序不要零?
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
22 
累计签到:113 天
连续签到:11 天
发表于 2017-9-9 21:37:03 | 显示全部楼层
  1. words='''Fishc
  2. Fishc
  3. Fishc
  4. Fishc
  5. Little turtle
  6. Little turtle
  7. Python
  8. FishC'''
  9. from collections import Counter
  10. ss= dict(Counter(words.split('\n')))
  11. for keys in ss:
  12.         for i in range(ss[keys]):
  13.                 print('(%s)'%str(ss[keys]-i-1),keys)
复制代码


结果
  1. (3) Fishc
  2. (2) Fishc
  3. (1) Fishc
  4. (0) Fishc
  5. (1) Little turtle
  6. (0) Little turtle
  7. (0) Python
  8. (0) FishC
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:21 天
连续签到:21 天
发表于 2017-9-10 02:36:55 | 显示全部楼层
  1. strVal = """
  2.     FishC
  3.     FishC
  4.     FishC
  5.     FishC
  6.     Little turtle
  7.     Little turtle
  8.     Python
  9.     FishC
  10. """
  11. newStrVal = strVal.split('\n')
  12. strlist = [value.strip() for value in newStrVal if value.strip() is not '']
  13. length = len(strlist)

  14. for i in range(length):
  15.     j = i+1 if i+1<length else length
  16.     n = 0
  17.     for j in range(j,length):
  18.         if strlist[i] == strlist[j]:
  19.             n += 1
  20.         else:
  21.             break
  22.     print("(%d)%s" % (n,strlist[i]))
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
6 
累计签到:3 天
连续签到:1 天
发表于 2017-9-10 10:53:59 | 显示全部楼层
  1. def counteRepeatedLines(string):
  2.     '给多行字符串的每行开头加上紧随其后重复的行数'
  3.     counter = 0
  4.     lines = []
  5.     splits = string.split('\n')
  6.     for i in range(len(splits)):
  7.         if i+1 == len(splits) or splits[i] != splits[i+1]:
  8.             while counter > 0:
  9.                 lines.append('(%d)'% counter + splits[i])
  10.                 counter -= 1
  11.             lines.append('(0)' + splits[i])
  12.         else:
  13.             counter += 1
  14.     return '\n'.join(lines)

  15. print(counteRepeatedLines('FishC\nFishC\nFishC\nFishC\nLittle turtle\nLittle turtle\nPython\nFishC'))
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-9-26 16:59 Powered by Discuz! X2.5 Theme by dreambred

快速回复 返回顶部 返回列表