我正在尝试的一个有趣的概念是计算模式(每行显示最多的数字)。当有多种模式时,我还想打印出最低编号的模式值。我发现了一个关于计算模式并尝试应用大量答案的问题,但我申请的所有答案都给了我一个值(我会告诉你)。
如您所见,我尝试了几种不同的方法来逐行计算模式。
关于为什么模式总是一个的任何建议?感谢。
更新: 使用下面的用户提供的手动输入代码输出如下:
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(' ')
添加到我的代码中,以便正确解析整数。这个建议给了我正确的值,但是当有多个模式时我想打印出最小的整数,并且当只有一个模式时仍然希望打印模式。
答案 0 :(得分:1)
我没有看到names_list的设置,所以我认为你省略了一些代码。无论如何,根据您的输出,您不会将文件行拆分为单独的数字。
也就是说,你的列表是[“一个字符串”],而不是[1,2,3,4,5,6,5,6]一堆数字。
模式计算本身看起来不错。尝试编写一个测试用例,如下所示:
print_mode([1,2,3,2,3,2])
手动提供列表将有助于将解析错误与逻辑错误分开。