咸鱼仔001 发表于 2021-7-5 11:23:34

Python最新版课后作业022动动手01提问:摩尔投票法的进阶操作

这道题我的思路是第一个超过 1/3 的数出来(我把它标记为major1),然后再重复对抗阶段 碰到major1就跳过,这样就把第二个超过 1/3 的数筛出来了(major2)
代码如下:(我写的作业被版主删掉了,在群里问是因为我作业写错了,我对了下答案只有这里有出入,想问一下我的代码哪里错了)
具体代码如下:
list1 =
major = list1
counts = 0
for i in list1:
    if counts == 0:
          major = i
    if i == major:
          counts += 1
    else:
          counts -= 1
if list1.count(major) >= len(list1)/3:
    print('major1=',major)
else:
    print('no')

a = major
major = list1
for i in list1:
    if i == a: #碰到major1就跳过#
      continue
    if counts == 0:
          major = i
    if i == major:
          counts += 1
    else:
          counts -= 1

if list1.count(major) >= len(list1)/3:
    print('major2=',major)
else:
    print('nope')

Jin_Yu 发表于 2021-7-6 18:53:22

你的代码怎么写的这么乱
两段for循环一模一样,用个函数封装下
把题目发出来给我看下
页: [1]
查看完整版本: Python最新版课后作业022动动手01提问:摩尔投票法的进阶操作