鱼C论坛

 找回密码
 立即注册
楼主: 有益

[技术交流] 面试的一道编程题

[复制链接]
发表于 2017-4-27 22:31:53 | 显示全部楼层
本帖最后由 pure_pure 于 2017-4-27 22:34 编辑

刚好学到列表,学以致用!
  1. temp=''
  2. list1=[]
  3. while not(temp.isnumeric()):
  4.     temp = input('请输入一串数字:')
  5. #思路:
  6. #1.将字符串转成列表并排升序。
  7. for each in temp:
  8.     list1.append(each)
  9. list1.sort()
  10. print(list1)
  11. #2.遍历list1,如果不等于1,说明该元素重复。
  12. for each in list1:
  13.     numCount = list1.count(each)
  14.     if numCount != 1:
  15. #3.如果该元素重复,把列表中该元素的多余元素都删掉,只留下一个。
  16.         while list1.count(each) != 1:
  17.             list1.remove(each)
  18.         print(each + "出现了" + str(numCount) + "次")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-28 09:58:11 | 显示全部楼层

item 本来是空值,用了 in 成员列表,就赋值了。这种赋值方式好简单。
dic.key()本来没有值,用了item in dic.key () ,dic.key()就有值了。
看来in可以左右赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-28 11:10:16 | 显示全部楼层

这个最简单,最好看明白。大师
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-28 13:05:30 | 显示全部楼层
可以用字典推导式,一行代码就解决了嘛。
  1. a = list('12312245532432543508932743284724532098349320320676965765')
  2. print({i: a.count(i) for i in set(a)})
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-4-28 20:14:25 | 显示全部楼层
  1. a=1234564512451
  2. aa=list(str(a))
  3. ab=sorted(list(set(aa)))
  4. pr=[[int(i),aa.count(i)] for i in ab]
  5. print(pr)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-2 11:25:12 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-2 12:58:09 | 显示全部楼层

num = input('输入:')
list1 = []
list2 = []
for i in num:
    if i not in list1:
        list1.append(i)
    else:
        if i not in list2:
            list2.append(i)
            a = num.count(i)
            print(i,end = ' ')
            print(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-13 20:40:45 From FishC Mobile | 显示全部楼层
这种题没什么难度啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-20 20:39:25 | 显示全部楼层
用字典来记录

  1. # 想到一行字典推导式搞定
  2. nums = [1,2,3,5,6,4,22,33,11,11,11,2,3,4,5,66]
  3. outputs = {i:nums.count(i) for i in nums if nums.count(i)>1}
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-14 05:43:50 | 显示全部楼层
  1. def getRepeat():
  2.     """ 用户输入重复数字"""
  3.     while True:
  4.         string = input('请输入重复的数字:')
  5.         if not string.isdigit():
  6.             print('输入有误,请重新输入:')
  7.             continue
  8.         else:
  9.             break
  10.    

  11.     type_dict = dict()

  12.     type_set = set(string)  # 将string赋给一个集合变量
  13.      

  14.     #if len(string) == len({string}): # 不可以这么写,会把string看成一个整体,输出的长度为1
  15.       

  16.     if len(string) == len(type_set):  # 集合是无序且唯一,如果长度还相等就说明没重复数字
  17.         print('没有重复数字')


  18.     for i in string:
  19.         type_dict.setdefault(i,0) # 如果i键不存在,默认给对应值赋为0,如果i存在则输出其对应的值
  20.         type_dict[i] += 1  # 对应的重复次数加1
  21.         
  22.     for each_key in type_dict:
  23.         if  type_dict[each_key] > 1 : #  ==1时,即不是重复的数字
  24.             print('重复的数字为%s,重复次数为%d' % (each_key,type_dict[each_key]))
  25.         


  26. if __name__ == '__main__':   # 主入口
  27.     getRepeat()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-20 14:56:44 | 显示全部楼层
  1. str1 = '12312245532432543508932743284724532098349320320676965765'
  2. L = []
  3. for i in str1:
  4.         if i not in L:
  5.                 if str1.count(i)>1:
  6.                         L.append(i)
  7. for i in L:
  8.         print('数字%s重复,次数%d次'%(i,str1.count(i)))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-14 19:05:22 | 显示全部楼层
def find(a):
    for i in range(0,10):
        count = 0
        for j in a:
            if i == int(j):
                count += 1
        if count > 1:
            print("重复的数字是%d,重复次数为%d" % (i,count))

a = input("请输入一串数字:")
find(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 21:08:29 | 显示全部楼层
  1. import random
  2. number = []
  3. for i in range(0,25):
  4.         number.append(random.randint(0,10))
  5. print(number)

  6. list1 =set(number)
  7. out = []
  8. for x in list1:
  9.         del_number = number[:]
  10.         del_number.remove(x)
  11.         if x in del_number:
  12.                 out.append([x,number.count(x)])
  13. print(out)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-7 20:50:18 | 显示全部楼层
  1. s = 46287392739173
  2. count = [0,0,0,0,0,0,0,0,0,0]
  3. for i in str(s):
  4.         count[int(i)] +=1
  5. for j in range(10):
  6.         if count[j] > 1:
  7.                 print('数字%d共出现了%d次'%(j,count[j]))
  8.        
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-25 17:21:21 | 显示全部楼层
本帖最后由 萧丹夜 于 2018-5-25 17:23 编辑

表示还可以
  1. x = input('请输入一组数字:')
  2. y = {}
  3. if x.isdigit():
  4.     for i in range(10):
  5.         y[i] = x.count(str(i))
  6.     for i in range(10):
  7.         if  y[i] != 0 and y[i] != 1:
  8.             print('%d重复次数为:%s' %(i,y[i]))
  9. else:
  10.     print('输入有误!')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-25 23:12:58 | 显示全部楼层
不用count:
  1. #假设给定的一串数字为列表,字符串也一样:
  2. lis = [1, 2, 3, 2, 4, 6, 5, 4, 3, 1, 7, 3, 6, 0, 9]
  3. a = {}
  4. for i in lis:
  5.         a[i] = a.get(i, 0) + 1        #列表推导式: a = {i:a.get(i, 0)+1 for i in lis}
  6.         #get()函数可以获得键值,第二个参数返回找不到键后返回的默认值
  7. print(a)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-27 11:25:24 | 显示全部楼层
#!/usr/bin/env python3
#-*- coding:utf-8 -*-

'''
    统计一串数字中每个数字重复出现的次数
'''

L = {}
l = []
n = 0
sii = '25466884513384513134545635164463523254866232313'
for i in sii:
    if i not in l:
        l.append(i)
        L = sii.count(i)
        print('sii中',l[n],'出现的次数为',L)
        n += 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-17 17:58:44 | 显示全部楼层
  1. num = list(input('请输入一串数字,空格隔开:').split())
  2. snum=set(num)
  3. vnum = [x*0 for x in range(len(snum)) ]
  4. dnum = dict(zip(snum,vnum))
  5. s = dnum.keys()
  6. for i in num:
  7.     if i in s:
  8.         dnum[i]+=1
  9. for x in s:
  10.     if dnum[x]>1:
  11.         print('输入的数字中%s重复%d次'%(x,dnum[x]))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-17 18:15:51 | 显示全部楼层
str.find() 不就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-5 16:00:46 | 显示全部楼层
看了前面发现搞不懂一串数字是怎么样哈哈哈
  1. #题目:对给出的一串数字找出重复的数字和重复的次数~
  2. '''

  3. str1 = "16354944845845998"
  4. dict1 = dict()

  5. for each in range(10):
  6.     dict1[each] = str1.count(str(each))

  7. for key,value in dict1.items():
  8.     if value > 1:
  9.         print("数字%s重复出现%s次" % (key,value))
  10. '''

  11. #或者

  12. list1 = [8,4,4,4,11,8,11,11,12]
  13. dict2 = dict()

  14. for each in list1:
  15.     if each not in dict2:
  16.         dict2[each] = list1.count(each)

  17. for key,value in dict2.items():
  18.     if value > 1:
  19.         print("数字%s重复出现%s次" % (key,value))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 02:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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