为什么模式总是1?

时间:2016-01-24 16:41:04

标签: python algorithm python-2.7 statistics

我正在尝试的一个有趣的概念是计算模式(每行显示最多的数字)。当有多种模式时,我还想打印出最低编号的模式值。我发现了一个关于计算模式并尝试应用大量答案的问题,但我申请的所有答案都给了我一个值(我会告诉你)。

如您所见,我尝试了几种不同的方法来逐行计算模式。

关于为什么模式总是一个的任何建议?感谢。

更新: 使用下面的用户提供的手动输入代码输出如下:

item 1
item 2
item 3
item 2
item 3
item 2
maxitem 1
maxitem 2
Mode of list: 2
None
item 1
item 2
item 3
item 2
item 3
item 2
maxitem 1
maxitem 2
Mode of list: 2
None
item 1
item 2
item 3
item 2
item 3
item 2
maxitem 1
maxitem 2
Mode of list: 2
None
item 1
item 2
item 3
item 2
item 3
item 2
maxitem 1
maxitem 2
Mode of list: 2
None
item 1
item 2
item 3
item 2
item 3
item 2
maxitem 1
maxitem 2
Mode of list: 2
None
item 1
item 2
item 3
item 2
item 3
item 2
maxitem 1
maxitem 2
Mode of list: 2
None
item 1
item 2
item 3
item 2
item 3
item 2
maxitem 1
maxitem 2
Mode of list: 2
None

由于列表的模式实际上是2,我相信模式功能正常工作。我更新了我的代码和原始names_list的输出,因为我意识到代码和输出不匹配(对不起)。 所以我的理解是,我设置names_list的方式不正确,无法计算模式。我真的不明白这是怎么回事,并且会感激任何建议。

UPDATE2:

我接受了下面一个用户的建议,将names_list = line.split(' ')添加到我的代码中,以便正确解析整数。这个建议给了我正确的值,但是当有多个模式时我想打印出最小的整数,并且当只有一个模式时仍然希望打印模式。

1 个答案:

答案 0 :(得分:1)

我没有看到names_list的设置,所以我认为你省略了一些代码。无论如何,根据您的输出,您不会将文件行拆分为单独的数字。

也就是说,你的列表是[“一个字符串”],而不是[1,2,3,4,5,6,5,6]一堆数字。

模式计算本身看起来不错。尝试编写一个测试用例,如下所示:

print_mode([1,2,3,2,3,2])

手动提供列表将有助于将解析错误与逻辑错误分开。