鱼C论坛

 找回密码
 立即注册
查看: 1898|回复: 3

[已解决]021的课后作业,求助各位大佬

[复制链接]
发表于 2022-9-30 16:56:24 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 Khayal 于 2022-9-30 16:55 编辑

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

我写出来的代码是:
  1. list1=[2,2,4,3,6,2,2]
  2. list1.sort()

  3. b=len(list1)//2

  4. for i in list1:
  5.     a=list1.count(i)
  6.     if a > b:
  7.         print('the major num is ',list1.index(b-1))
  8.         break
  9.     else:
  10.         b-=1
  11.         if b ==0:
  12.             print('there\'s no major num')
复制代码


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

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


得到的答案也是0


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


最佳答案
2022-9-30 16:56:25
本帖最后由 jackz007 于 2022-9-30 23:37 编辑
  1. d = [2, 2, 4, 2, 3, 6, 2]
  2. for x in set(d):
  3.     if d . count(x) > len(d) // 2:
  4.         print(x)
  5.         break
  6. else:
  7.     print('None')
复制代码

    运行实况:
  1. D:\[00.Exerciese.2022]\Python>python x.py
  2. 2

  3. D:\[00.Exerciese.2022]\Python>
复制代码

最佳答案

查看完整内容

运行实况:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-30 16:56:25 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-9-30 23:37 编辑
  1. d = [2, 2, 4, 2, 3, 6, 2]
  2. for x in set(d):
  3.     if d . count(x) > len(d) // 2:
  4.         print(x)
  5.         break
  6. else:
  7.     print('None')
复制代码

    运行实况:
  1. D:\[00.Exerciese.2022]\Python>python x.py
  2. 2

  3. D:\[00.Exerciese.2022]\Python>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-30 18:01:41 | 显示全部楼层
你打印索引那肯定是0啊,你把元素打印出来啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-30 22:45:31 | 显示全部楼层
本帖最后由 jhq999 于 2022-9-30 23:31 编辑
  1. list1=[2,2,4,3,6,2,2]
  2. d={}
  3. b=len(list1)//2
  4. for i in list1:
  5.     a=list1.count(i)
  6.     if a > b:
  7.         d[i]=a
  8. for i in d:
  9.     print('the major num is: ',i,'count is:',d[i])
复制代码
  1. list1=[2,2,4,3,6,2,2]
  2. a={}
  3. for i in list1:
  4.         if i in a:
  5.                 a[i]+=1
  6.         else:
  7.                 a[i]=1
  8. for i in a:
  9.         if(a[i]>len(list1)//2):
  10.                 print('%d\n'%i)
复制代码
  1. list1=[2,2,4,3,6,2,2]
  2. a={}
  3. for i in list1:
  4.     if i in a:
  5.         a[i]+=1
  6.     else:
  7.         a[i]=1
  8.     if(a[i]==len(list1)//2+1):
  9.         print(i,a[i],'\n')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 22:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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