gpt4 book ai didi

关于选民投票率的Python分配问题: class and object and function

转载 作者:行者123 更新时间:2023-12-01 00:49:13 25 4
gpt4 key购买 nike

# 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!

我必须制作一个 python 函数,在其中返回最高的选民投票率我只是编程初学者,并且类(class)资源并没有真正的帮助。任何帮助将非常感激。谢谢。

路线:
● 首先,使用对象的人口和选民属性找到投票率最高的县,即投票人口百分比最高的县
● 然后,返回一个元组,其中包含投票率最高的县名称和投票率按顺序投票的人口百分比;百分比应该是表示为 0 到 1 之间的数字

我已经写好了类(class)。

TypeError: '>' not supported between instances of 'float' and 'County'

我收到了这个错误。我认为我的类(class)是正确的,但我不太确定如何处理这个函数。该指令还说以元组形式返回县名和最高选民投票率,但我不太确定如何做。请帮忙。谢谢。

最佳答案

这是你的问题:

highest_turnout = (data[0].voters)/(data[0].population)
for county in data:
if (county.voters/county.population) > highest_turnout:
highest_turnout= county

因此,让我们考虑第一个迭代(好吧,第二个 - 涉及 data[1] 的迭代,因为 data[0] 迭代与此处无关)迭代这个循环的。 highest_turnout 只是定义为选民/人口的 float 。您正在将其与另一个国家的选民/人口的另一个 float 进行比较。有道理。

现在让我们考虑 data[1]选民/人口 高于 data[0]。因此,if 条件被触发。 highest_turnout 设置为 data[1],它是 county 的当前值。

我们继续进行下一次迭代,对于 data[2],您会收到错误:

TypeError: '>' not supported between instances of 'float' and 'County'

在第一次迭代中,highest_turnout 是一个 float,并且您在两个 float 之间使用运算符 > >。但现在,highest_turnout 是一个 County,而不是 float - 当您在 中为其分配新值时code>if 语句,您更改了它的类型。由于 County 不是一种数字,Python 不知道如何将它与 float 进行比较。因此,您在这里看到的错误。

解决方案是将 highest_turnout 设为与之比较的值,而不是这些值来自的国家/地区:

highest_turnout = county.voters / county.population

另一种解决方案是始终保留highest_turnout一个国家/地区:

highest_turnout = data[0]
for county in data:
if (county.voters/county.population) > (highest_turnout.voters/highest_turnout.population):
highest_turnout = county

您只需确保不会在没有意识到的情况下更改任何变量的类型。

关于关于选民投票率的Python分配问题: class and object and function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56707932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com