【发布时间】:2024-01-22 17:41:01
【问题描述】:
我已经使用 wxFormBuilder 创建了一个 GUI,它应该允许用户将“企业访问者”的名称输入到列表中,然后单击两个按钮中的一个来返回访问该企业的最频繁和最不频繁访问者。下面看一下 GUI:http://imgur.com/XJnvo0U
不幸的是,Most 和 Least 按钮都抛出相同的值(Most)。我认为这与频率如何加权输入有关,并且可能与 clkFindMost 和 clkFindLeast 事件的定义重叠有关。任何帮助将不胜感激。
**编辑:我对 Python 非常陌生,学习曲线很陡
import wx
import myLoopGUI
import commands
class MyLoopFrame(myLoopGUI.MyFrame1):
def __init__(self, parent):
myLoopGUI.MyFrame1.__init__(self, parent)
def clkAddData(self,parent):
if len(self.txtAddData.Value) != 0:
try:
myname = str(self.txtAddData.Value)
self.listMyData.Append(str(myname))
except:
wx.MessageBox("This has to be a name!")
else:
wx.MessageBox("This can't be empty")
def clkFindMost(self, parent):
name_list = set(self.listMyData.GetStrings())
unique_names = set(name_list)
frequencies = {}
for name in unique_names:
if frequencies.get(name):
frequencies[name] += 1
else:
frequencies[name] = 0
counts = list(frequencies.values())
names = list(frequencies.keys())
max_count_index = counts.index(max(counts))
min_count_index = counts.index(min(counts))
most_frequent = names[max_count_index]
least_frequent = names[min_count_index]
self.txtResults.Value = most_frequent
def clkFindLeast(self, parent):
name_list = set(self.listMyData.GetStrings())
unique_names = set(name_list)
frequencies = {}
for name in unique_names:
if frequencies.get(name):
frequencies[name] += 1
else:
frequencies[name] = 0
counts = list(frequencies.values())
names = list(frequencies.keys())
max_count_index = counts.index(max(counts))
min_count_index = counts.index(min(counts))
most_frequent = names[max_count_index]
least_frequent = names[min_count_index]
self.txtResults.Value = least_frequent
def clkClear (self, parent):
self.txtResults.SetValue("")
#Needed to ensure the program runs
myApp = wx.App(False)
myFrame = MyLoopFrame(None)
myFrame.Show()
myApp.MainLoop()
【问题讨论】:
标签: python loops max frequency min