【问题标题】:Python - Using a created list as a parameterPython - 使用创建的列表作为参数
【发布时间】:2015-08-30 12:25:30
【问题描述】:

当我运行我的代码时,它告诉我:类型错误:不可排序的类型:str()

    def countGasGuzzlers(list1, list2):   
        total = 0
        CCount = 0
        HCount = 0
        for line in list1:
            if num < 22.0:
                total = total + 1
                CCount = CCount + 1
        for line in list2:
            if num < 27.0:
                total = total + 1
                Hcount = Hcount = 1
        print('City Gas Guzzlers: ',CCount)
        print('Highway Gas Guzzlers: ',HCount)
        print('Total Gas Guzzlers: ',total)

这是我的列表定义。我很确定它没问题,但也许这里也有一些错误?

     CityFile = open('F://SSC/Spring 2015/CSC 110/PythonCode/Chapter 8/HW 4/carModelData_city','r')
    for line in CityFile:
            CityData = CityFile.readlines()
            for num in CityData:
                numCityData = float(num)
                CityList = numCityData
    HwyFile = open('F://SSC/Spring 2015/CSC 110/PythonCode/Chapter 8/HW 4/carModelData_hwy','r')
    for line in HwyFile:
            HwyData = HwyFile.readlines()
            for num in HwyData:
                    numHwyData = float(num)
                    HwyList = numHwyData

【问题讨论】:

  • 什么是num,它在哪里定义
  • 未定义。我正在尝试将列表中的数字与 22 或 27 进行比较。
  • 所以你应该将我列表中的数字分配给num,对吗?

标签: python list loops if-statement compare


【解决方案1】:

我相信您错误地引用了 num 而不是 line 这是您的 for 循环中的计数器变量,您要么需要使用 num 作为计数器变量,要么使用 lineif 条件。

def countGasGuzzlers(list1, list2):   
    total = 0
    CCount = 0
    HCount = 0
    for line in list1:
        if float(line) < 22.0:
            total = total + 1
            CCount = CCount + 1
    for line in list2:
        if float(line) < 27.0:
            total = total + 1
            Hcount = Hcount = 1
    print('City Gas Guzzlers: ',CCount)
    print('Highway Gas Guzzlers: ',HCount)
    print('Total Gas Guzzlers: ',total)

我看到的另一个问题是您创建列表的方式。问题是您将文件中的每个 num 转换为浮点数,然后将其直接存储在列表变量中,这导致列表变量实际存储浮点值而不是列表,您需要将每个值附加到列表中,而不是执行 @ 987654328@

代码看起来像 -

CityFile = open('F://SSC/Spring 2015/CSC 110/PythonCode/Chapter 8/HW 4/carModelData_city','r')
for line in CityFile:
        CityData = CityFile.readlines()
        for num in CityData:
            numCityData = float(num)
            CityList.append(numCityData)
HwyFile = open('F://SSC/Spring 2015/CSC 110/PythonCode/Chapter 8/HW 4/carModelData_hwy','r')
for line in HwyFile:
        HwyData = HwyFile.readlines()
        for num in HwyData:
                numHwyData = float(num)
                HwyList.append(numHwyData)

还请确保在此代码之前将 CityList 和 HwyList 初始化为列表。如下 -

CityList = []
HwyList = []

【讨论】:

  • 我试过用 line 代替 num 还是不行。它给出了同样的错误。
  • 你能把list1和list2打印出来给我们看看吗?
  • 刚刚更新了答案,您可以使用float(line) 以防列表包含字符串而不是浮点数
  • 说它不可迭代。
  • 请编辑问题中的完整代码,我发现您创建列表的代码存在问题。
猜你喜欢
  • 2011-06-26
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
相关资源
最近更新 更多