鱼C论坛

 找回密码
 立即注册
查看: 2768|回复: 2

第21讲 课后练习题,这么写可以吗

[复制链接]
发表于 2022-9-19 16:52:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
如果有一个列表,其中占比超过一半的元素称之为主要元素,那么如何获取一个列表的主要元素呢?
题目给定的列表是:[2, 2, 4, 2, 3, 6, 2]
请根据解题思路进行编程。
解题思路:
根据主要元素的定义,对列表进行排序操作之后,主要元素必然会出现在列表长度一半之后的一个位置上。
所以,我们只需要判断列表中是否有超过一半的元素与中间元素相同即可(如果有,中间元素为主要元素;否则,不存在主要元素)

看一下我的有什么问题吗

我的代码
m2 = [2, 5, 2, 2, 2, 3, 6, 2]
a = len(m2)
for i in m2:
    print(i)
    if m2.count(i) > a/2 :
        print(i,'是主要元素')
        break
else:
    print('不存在主要元素')
答案
nums = [2, 2, 4, 2, 3, 6, 2, 1]
nums.sort()  # 进行列表排序
length = len(nums)  # 列表的数量
half = nums[length // 2]  # 一半的值对应的数字
count = 0  # 有多少个
for each in nums:
    print(each)
    if each == half:  # 如果循环的值是一半的值对应的数字
        count += 1  # 个数+1
if count > length / 2:   # 如果个数大于 全部数的一半
    print("存在主要元素,是:", half)
else:
    print("不存在主要元素!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-19 18:14:42 | 显示全部楼层
我觉得没毛病,只是没按他的解题思路而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-19 20:17:49 | 显示全部楼层


当然可以,你使用了 count 函数,以及利用了 for-else 结构进行实现

答案的代码是在对应课时下所学,且 count 函数,自己实现统计

另外 for-else 在 21 课时还没学到,当然不会在这答案中使用

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-10 18:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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