Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于投票率的Python赋值问题:类、对象和函数_Python_Function_Class_Object - Fatal编程技术网

关于投票率的Python赋值问题:类、对象和函数

关于投票率的Python赋值问题:类、对象和函数,python,function,class,object,Python,Function,Class,Object,我必须制作一个python函数,其中返回的投票率最高。我只是一个编程初学者,而类资源并没有真正起到帮助作用。任何帮助都将不胜感激。谢谢 说明: ● 首先,使用对象的人口和选民属性,找到投票率最高的县,即投票率最高的人口百分比 ● 然后,返回一个元组,其中包含投票率最高的县的名称和 按此顺序投票的人口百分比;百分比应为 表示为介于0和1之间的数字 我已经写好了这堂课 TypeError:“float”和“County”实例之间不支持“>” 我犯了这个错误。我认为我的类是正确的,但我不太确定如何处理

我必须制作一个python函数,其中返回的投票率最高。我只是一个编程初学者,而类资源并没有真正起到帮助作用。任何帮助都将不胜感激。谢谢

说明:
● 首先,使用对象的人口和选民属性,找到投票率最高的县,即投票率最高的人口百分比
● 然后,返回一个元组,其中包含投票率最高的县的名称和 按此顺序投票的人口百分比;百分比应为 表示为介于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