Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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 - Fatal编程技术网

Python 我的输出显示不正确我是否正确调用了我的定义,以及我是否正确返回了这些定义的值?

Python 我的输出显示不正确我是否正确调用了我的定义,以及我是否正确返回了这些定义的值?,python,Python,我的代码有几个问题。我希望它张贴的日期和价格列表的最高和最低的价值。现在它没有发布列,我尝试调用我的定义作为final_list,并在发布请求的列时在print语句中实现。它在输出中返回“None”。它不起作用。现在我想知道我的定义是否返回了正确的值 我是否在定义中返回了正确的值 我是否正确调用了要在输出中显示的列的定义 对于“最低”和“最低”,我必须在打印语句中实现什么 “highest”用于显示列,如果我没有变量 实施。忽略这一点,但请让我知道,这样我可以修复它 我当前的输出是: En

我的代码有几个问题。我希望它张贴的日期和价格列表的最高和最低的价值。现在它没有发布列,我尝试调用我的定义作为final_list,并在发布请求的列时在print语句中实现。它在输出中返回“None”。它不起作用。现在我想知道我的定义是否返回了正确的值

  • 我是否在定义中返回了正确的值

  • 我是否正确调用了要在输出中显示的列的定义

  • 对于“最低”和“最低”,我必须在打印语句中实现什么 “highest”用于显示列,如果我没有变量 实施。忽略这一点,但请让我知道,这样我可以修复它

  • 我当前的输出是:

    Enter a file name: table.csv
    Which column: 5
    Lowest 5:
    Highest 5:
    do you want to continue? 
    
    我希望我的输出是:

    Which column: 6
    Lowest 6 for column 6
    Date:08-1985, Value: 1.70
    Date:09-1985, Value: 1.77
    Date:06-1985, Value: 1.84
    Date:10-1985, Value: 1.90
    Date:07-1985, Value: 1.93
    Date:11-1985, Value: 2.19
    Highest 6 for column 6
    Date:09-2012, Value:674.54
    Date:08-2012, Value:635.39
    Date:10-2012, Value:628.17
    Date:04-2012, Value:597.19
    Date:07-2012, Value:592.33
    Date:03-2012, Value:569.11
    
    csv.file如下所示(前几行,共1700行):


    谢谢,希望这是详细和简洁的。

    那么您的CSV文件有六列?每个数据中的数据是什么?输入整数的人如何知道哪些数据可用

    显然,您只对日期和值感兴趣,而忽略其他列中的数据

    因此,我可能会在逐行读取CSV文件时尝试将其写入字典,如下所示:

    dict = {
      "08-1985": "1.70",
      "06-1985": "1.77", 
      "09-1985": "1.84"
    }
    
    01-1678, 1.34
    03-1678, 1.54
    02-1567, 1.92
    10-1267, 1.89
    11-1567, 1.90
    12-1679, 1.06
    03-1465, 1.78
    04-1577, 1.38
    05-1898, 1.22
    06-1966, 1.66
    
    然后,您可以轻松返回六个键值对,它们要么是最新的日期,要么是最旧的日期,要么是最大值,要么是最小值

    如果重要的是告诉用户该对是“date:value”,那么您只需在调用字典中的键或值之前打印信息即可


    保存整个
    “日期:08-1985”
    “值:1.70”
    字符串似乎会导致不必要的复杂化。第一次读取CSV数据时,我会使用分隔符“:”和“,”,只保留您想要使用的实际信息。

    根据对上一个答案的评论,这里有一种不同的方法,假设
    “日期:”
    “值:”
    是列标题,而不是CSV文件中的行数据的一部分:

    # script for sorting nested lists
    # adapted from https://www.geeksforgeeks.org/python-sort-list-according-second-element-sublist/
    
    
    import csv
    
    mycsv="C:\\Users\\mobarget\\Google Drive\\mycsv.csv"
    
    table=[row for row in csv.reader(open(mycsv)) if row]
    print(table)
    # output should look like this:
    # [['08-1985', '1.70'], ['07-1966', '1.57'], ['01-1982', '1.89']]
    
    # Sort first element in nested lists
    
    def sortdate(nested):
        l = len(nested)
        for i in range(0, l):
            for j in range(0, l-i-1):
                if (nested[j][0] > nested[j + 1][0]):
                    tempo = nested[j]
                    nested[j]= nested[j + 1]
                    nested[j + 1]= tempo
        return nested
    
    
    # Sort second element in nested lists 
    
    def sortvalue(nested):
        l = len(nested)
        for i in range(0, l):
            for j in range(0, l-i-1):
                if (nested[j][1] > nested[j + 1][1]):
                    tempo = nested[j]
                    nested[j]= nested[j + 1]
                    nested[j + 1]= tempo
        return nested
    
    # Print first six items in sorted lists
    
    print(sortdate(table)[:6])
    print(sortvalue(table)[:6])
    
    我的输入文件有2列10行,如下所示:

    dict = {
      "08-1985": "1.70",
      "06-1985": "1.77", 
      "09-1985": "1.84"
    }
    
    01-1678, 1.34
    03-1678, 1.54
    02-1567, 1.92
    10-1267, 1.89
    11-1567, 1.90
    12-1679, 1.06
    03-1465, 1.78
    04-1577, 1.38
    05-1898, 1.22
    06-1966, 1.66
    
    我得到的按日期排序的输出是:

    [['01-1678', ' 1.34'], ['02-1567', ' 1.92'], ['03-1465', ' 1.78'], ['03-1678', ' 1.54'], ['04-1577', ' 1.38'], ['05-1898', ' 1.22']]
    
    
    按值排序的输出为:

    [['12-1679', ' 1.06'], ['05-1898', ' 1.22'], ['01-1678', ' 1.34'], ['04-1577', ' 1.38'], ['03-1678', ' 1.54'], ['06-1966', ' 1.66']]
    

    按值排序效果很好,但日期当然是作为字符串读取的,因此排序不正确。因此,此列中的数据首先需要转换为YYYY-MM格式,此脚本才能工作。但这可能是需要处理的…

    所需的输出很重要,但您忘记发布实际输出…您在def get_input_descriptor()中返回的文件对象是什么?您没有在该方法中定义它,它将始终作为空文件发送_object=()@Programmer,我在我的描述中描述了实际输出。。。我试着实现的。不过,我将对问题进行编辑,使其更加具体。@Neeraj感谢您的输入。请共享一个示例输入和示例输出。如果您仍然在csv.file显示的内容中获得空值,则没有6列,而我要求显示数字1-6列。你的解决方法不是硬编码吗?而不是从文件中读取。我的缺点是不理解和没有发布足够的细节。我不想发布太多。我想你的意思是行多于列。您想显示两个不同列中的六行,一行是日期,一行是值?并且“date://”值是否为:“仅列标题?”?这会让事情变得容易得多。如果您可以共享实际CSV文件中的一些示例行,我们将更好地理解您的问题。PS:如果让Python为您计算行数,您还可以通过相应地调用最后六项来获得每列中的最大数。