关于投票率的Python赋值问题:类、对象和函数
我必须制作一个python函数,其中返回的投票率最高。我只是一个编程初学者,而类资源并没有真正起到帮助作用。任何帮助都将不胜感激。谢谢 说明:关于投票率的Python赋值问题:类、对象和函数,python,function,class,object,Python,Function,Class,Object,我必须制作一个python函数,其中返回的投票率最高。我只是一个编程初学者,而类资源并没有真正起到帮助作用。任何帮助都将不胜感激。谢谢 说明: ● 首先,使用对象的人口和选民属性,找到投票率最高的县,即投票率最高的人口百分比 ● 然后,返回一个元组,其中包含投票率最高的县的名称和 按此顺序投票的人口百分比;百分比应为 表示为介于0和1之间的数字 我已经写好了这堂课 TypeError:“float”和“County”实例之间不支持“>” 我犯了这个错误。我认为我的类是正确的,但我不太确定如何处理
● 首先,使用对象的人口和选民属性,找到投票率最高的县,即投票率最高的人口百分比
● 然后,返回一个元组,其中包含投票率最高的县的名称和 按此顺序投票的人口百分比;百分比应为 表示为介于0和1之间的数字 我已经写好了这堂课 TypeError:“float”和“County”实例之间不支持“>” 我犯了这个错误。我认为我的类是正确的,但我不太确定如何处理这个函数。指令还要求返回县名和最高投票率,但我不确定如何返回。请帮忙。谢谢。这是您的问题:
# implement County class here
class County:
def __init__(self, name,population,voters):
self.name=name
self.population=population
self.voters=voters
# implement the function here
def highest_turnout(data):
highest_turnout = (data[0].voters)/(data[0].population)
for county in data:
if (county.voters/county.population) > highest_turnout:
highest_turnout= county
return highest_turnout
allegheny = County("allegheny", 1000490, 645469)
philadelphia = County("philadelphia", 1134081, 539069)
montgomery = County("montgomery", 568952, 399591)
lancaster = County("lancaster", 345367, 230278)
delaware = County("delaware", 414031, 284538)
chester = County("chester", 319919, 230823)
bucks = County("bucks", 444149, 319816)
data = [allegheny, philadelphia, montgomery, lancaster, delaware, chester, bucks]
result = highest_turnout(data) # do not change this line!
print(result) # prints the output of the function
# do not remove this line!
>让我们考虑第一个(第二个-关于<代码>数据[1 ] < /代码>,因为<代码>数据[0 ] < /代码>此处迭代不相关)这个循环的迭代。code>最高投票率仅定义为选民/人口的
浮动
。你把它与另一个国家的选民/人口的另一个浮动相比较。有道理
<>现在我们考虑<>代码>选民/人口< /代码>对于<代码>数据[1 ] < /代码>比<<代码>数据[0 ] < /代码>要高。因此,触发了if
条件最高道岔
设置为数据[1]
,这是县
的当前值
我们继续下一次迭代,对于数据[2]
,您会得到错误:
highest_turnout = (data[0].voters)/(data[0].population)
for county in data:
if (county.voters/county.population) > highest_turnout:
highest_turnout= county
在第一次迭代中,最高的
是一个浮点数
,您在两个浮点数之间使用操作符
。但是现在,最高投票率
是一个县
,而不是一个浮动
——当您在if
语句中为它指定一个新值时,您更改了它的类型。由于County
不是一种数字,python不知道如何将其与float
进行比较。这就是你在这里看到的错误
解决方案是将最高\u道岔
与之进行比较的值,而不是这些值来自的国家:
TypeError: '>' not supported between instances of 'float' and 'County'
另一种解决方案是在整个时间内保持一个国家的最高投票率:
highest_turnout = county.voters / county.population
您只需确保在未意识到的情况下不会更改任何变量的类型。或者,不要使用循环来查找最大投票率,而是使用max函数:
highest_turnout = data[0]
for county in data:
if (county.voters/county.population) > (highest_turnout.voters/highest_turnout.population):
highest_turnout = county
尝试从以下变量开始:
class County:
def __init__(self, name, population, voters):
self.name = name
self.population = population
self.voters = voters
def get_turnout(self):
# return the turnout as a number between 0 - 1.
return self.voters / self.population
def highest_turnout(counties):
max_county = max(counties, key=lambda c: c.get_turnout())
return (max_county.name, max_county.get_turnout())
然后呼吁:
highest_county = data[0].name
highest_turnout = data[0].voters / data[0].population
如果你不向我们展示你的代码,我们将无法帮助你。你好,詹妮弗,欢迎来到StackOverflow。对于寻求调试帮助的问题,请提供。既然你是新来的,我建议你也退房。一般来说,您应该提供一些代码来重现问题,将问题本身中不必要的细节作为格式化文本删除。下面是一些关于如何在降价中设置问题格式的信息:如果您遇到错误,请同时发布完整的错误消息。我尝试添加代码已有一段时间了,但由于这是我第一次尝试添加代码,因此有点混乱。请稍等一会儿好吗?我更改了我的最高投票率=数据[0],但仍然收到错误消息,我无法在浮动上使用<操作。你建议我做什么?另外,如何在末尾返回一个包含县名称和最高投票率的元组?谢谢你的帮助。看看我给你的整个代码块-你需要确保
的两边都是数字。手动运行代码,甚至可以使用调试器,并在任何给定时间准确记录每个变量的类型。至于返回元组,您可能希望保留两个变量(highest\u tropper
和highest\u tropper\u county
),并同时更改这两个变量。然后,在最后,把它们都还给我。谢谢。你的回答也很有帮助。
return highest_county, highest_turnout