Python 如何获取用户输入列表的模式?

Python 如何获取用户输入列表的模式?,python,Python,对于学校的python作业,我需要获取用户输入的数字列表,并计算数字的模式。我有一个主函数,它请求列表,然后将该列表分割成一个可变列表,然后将它们按从最小到最大的顺序排列。然而,我的模式功能似乎不能正常工作。当我运行它时,它提供了几个结果,其中只有一些是正确的。我是否在代码中遗漏了导致返回太多的内容 def CalculateMode(数字): 字典={} 对于数字中的num: number=dictionary.get(num,None) 如果数字==无: 字典[num]=1 其他: 字典[

对于学校的python作业,我需要获取用户输入的数字列表,并计算数字的模式。我有一个主函数,它请求列表,然后将该列表分割成一个可变列表,然后将它们按从最小到最大的顺序排列。然而,我的模式功能似乎不能正常工作。当我运行它时,它提供了几个结果,其中只有一些是正确的。我是否在代码中遗漏了导致返回太多的内容

def CalculateMode(数字):
字典={}
对于数字中的num:
number=dictionary.get(num,None)
如果数字==无:
字典[num]=1
其他:
字典[num]=数字+1
最大值=最大值(dictionary.values())
对于输入字典:
如果字典[键]==1:
打印(“没有模式”)
如果字典[键]==最大值:

打印(“模式为“+num+”)
查找模式时只需打印一次:

for key in dictionary:
    if dictionary[key] == 1:
        print("There is no mode.")    # This will print for every key with count of 1
    if dictionary[key] == maximum:
        print("The mode is " + num + ".") # This will print for every key with count of "maximum"
你可以做:

for key in dictionary:
    if dictionary[key] == maximum:
        print("The mode is " + num + ".")
        break # A for/else that breaks won't run else
else:
        print("There is no mode.") # prints if never hit break

但是考虑如果有两个最大值,比如<代码> [1,2,2,3,3,4] < /代码>或者如果最大值是1,“没有模式”…[1,2,3,4,5]……仍然会用计数1和中断来打印第一个值。所以逻辑有点缺陷。当存在多个最大值时,您的作业说明模式应该是什么?或者它应该打印所有最大值:

for key in dictionary:
    if dictionary[key] == maximum:
        print("A mode is " + num + ".")

您可以使用。我不应该从其他函数导入,我应该在本章中编写自己的def函数,因为本章是关于编写函数的。请参阅发布指南,并提供一个[最小、可复制的示例]()。非网站链接和图片是不可接受的。谢谢你的帮助!这有助于解决我返回错误模式的问题,但是程序在到达模式之前仍然会计算每个数字,并在打印实际模式之前打印没有模式。它也没有考虑我还没有完全弄清楚的多种模式。如果列表中没有模式[1,2,3,4,5],应该说没有模式。如果列表有两种模式[1,2,2,3,3,4],则应同时打印两种模式。