鱼C论坛

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

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

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

刚好学到列表,学以致用!
temp=''
list1=[]
while not(temp.isnumeric()):
    temp = input('请输入一串数字:')
#思路:
#1.将字符串转成列表并排升序。
for each in temp:
    list1.append(each)
list1.sort()
print(list1)
#2.遍历list1,如果不等于1,说明该元素重复。
for each in list1:
    numCount = list1.count(each)
    if numCount != 1:
#3.如果该元素重复,把列表中该元素的多余元素都删掉,只留下一个。
        while list1.count(each) != 1:
            list1.remove(each)
        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 | 显示全部楼层
可以用字典推导式,一行代码就解决了嘛。
a = list('12312245532432543508932743284724532098349320320676965765')
print({i: a.count(i) for i in set(a)})
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-4-28 20:14:25 | 显示全部楼层
a=1234564512451
aa=list(str(a))
ab=sorted(list(set(aa)))
pr=[[int(i),aa.count(i)] for i in ab]
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 | 显示全部楼层
用字典来记录
# 想到一行字典推导式搞定
nums = [1,2,3,5,6,4,22,33,11,11,11,2,3,4,5,66]
outputs = {i:nums.count(i) for i in nums if nums.count(i)>1}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

    type_dict = dict()

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

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

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


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


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

使用道具 举报

发表于 2017-9-20 14:56:44 | 显示全部楼层
str1 = '12312245532432543508932743284724532098349320320676965765'
L = []
for i in str1:
        if i not in L:
                if str1.count(i)>1:
                        L.append(i)
for i in L:
        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 | 显示全部楼层
import random
number = []
for i in range(0,25):
        number.append(random.randint(0,10))
print(number)

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

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

发表于 2018-5-25 23:12:58 | 显示全部楼层
不用count:
#假设给定的一串数字为列表,字符串也一样:
lis = [1, 2, 3, 2, 4, 6, 5, 4, 3, 1, 7, 3, 6, 0, 9]
a = {}
for i in lis:
        a[i] = a.get(i, 0) + 1        #列表推导式: a = {i:a.get(i, 0)+1 for i in lis} 
        #get()函数可以获得键值,第二个参数返回找不到键后返回的默认值
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 | 显示全部楼层
num = list(input('请输入一串数字,空格隔开:').split())
snum=set(num)
vnum = [x*0 for x in range(len(snum)) ]
dnum = dict(zip(snum,vnum))
s = dnum.keys()
for i in num:
    if i in s:
        dnum[i]+=1
for x in s:
    if dnum[x]>1:
        print('输入的数字中%s重复%d次'%(x,dnum[x]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

str1 = "16354944845845998"
dict1 = dict()

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

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

#或者

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

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 20:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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