Khayal 发表于 2022-9-30 16:56:24

021的课后作业,求助各位大佬

本帖最后由 Khayal 于 2022-9-30 16:55 编辑

题目:
0. 如果有一个列表,其中占比超过一半的元素称之为主要元素,那么如何获取一个列表的主要元素呢?
题目给定的列表是:
请根据解题思路进行编程。

我写出来的代码是:list1=
list1.sort()

b=len(list1)//2

for i in list1:
    a=list1.count(i)
    if a > b:
      print('the major num is ',list1.index(b-1))
      break
    else:
      b-=1
      if b ==0:
            print('there\'s no major num')

输出结果却是the major num is 0
这题可不可以这样写?该怎么修改?

在list的返回值这里也遇到了问题.我在编辑器模式下(我用的pycharm)尝试按索引值找列表里的元素,list1=
print(list.index(2))

得到的答案也是0
{:9_220:}

这个问题已经困扰我一整天了,望有大佬解答,谢谢!


jackz007 发表于 2022-9-30 16:56:25

本帖最后由 jackz007 于 2022-9-30 23:37 编辑

d =
for x in set(d):
    if d . count(x) > len(d) // 2:
      print(x)
      break
else:
    print('None')
    运行实况:
D:\\Python>python x.py
2

D:\\Python>

specail 发表于 2022-9-30 18:01:41

你打印索引那肯定是0啊,你把元素打印出来啊

jhq999 发表于 2022-9-30 22:45:31

本帖最后由 jhq999 于 2022-9-30 23:31 编辑

list1=
d={}
b=len(list1)//2
for i in list1:
    a=list1.count(i)
    if a > b:
      d=a
for i in d:
    print('the major num is: ',i,'count is:',d)
list1=
a={}
for i in list1:
        if i in a:
                a+=1
        else:
                a=1
for i in a:
        if(a>len(list1)//2):
                print('%d\n'%i)
list1=
a={}
for i in list1:
    if i in a:
      a+=1
    else:
      a=1
    if(a==len(list1)//2+1):
      print(i,a,'\n')
页: [1]
查看完整版本: 021的课后作业,求助各位大佬