У меня есть эта функция, и я не уверен, что я должен связать с оператором возврата, чтобы получить то, что требуется - PullRequest
0 голосов
/ 25 октября 2019
    import csv
    f = open('C:\\Users\\keshabg\\Desktop\\sql_testing\\table_1.csv')
    csv_f = csv.reader(f)

    def try1(data,process,shift,lc):
        lev1=[]
        lev2=[]
        lev3=[]
        lev4=[]
        lev5=[]
        for row in csv_f:
            if data=='units':
                if row[3]=='KILO':
                    process='KILO'
                    if row[2]=='A':
                        shift='A'
                        if row[4]=='Level 1':
                            lc=='Level 1'
                            lev1.append(row[5])
                        if row[4]=='Level 2':
                            lc=='Level 2'
                            lev2.append(row[5])
                        if row[4]=='Level 3':
                            lc=='Level 3'
                            lev3.append(row[5])
                        if row[4]=='Level 4':
                            lc=='Level 4'
                            lev4.append(row[5])
                        if row[4]=='Level 5':
                            lc=='Level 5'
                            lev5.append(row[5])
            if data=='hours':
                if row[3]=='KILO':
                    process='KILO'
                    if row[2]=='A':
                        shift='A'
                        if row[4]=='Level 1':
                            lc=='Level 1'
                            lev1.append(row[6])
                        if row[4]=='Level 2':
                            lc=='Level 2'
                            lev2.append(row[6])
                        if row[4]=='Level 3':
                            lc=='Level 3'
                            lev3.append(row[6])
                        if row[4]=='Level 4':
                            lc=='Level 4'
                            lev4.append(row[6])
                       if row[4]=='Level 5':
                            lc=='Level 5'
                            lev5.append(row[6])
        return lev1,lev2,lev3,lev4,lev5
    a = try1("units","KILO","A","Level 1")
    print(a)

Всякий раз, когда эта функция запускается и когда пользователь вводит эти четыре аргумента, чтобы получить вывод, я хочу, чтобы он возвращал единицы измерения в этот сдвиг этого процесса и этого конкретного уровня, но прямо сейчас, даже когда я добавляю уровень 1,это дает мне все от уровня 1 до уровня. Я почти уверен, что это из-за оператора возврата, который возвращает все. Итак, чтобы получить результат, я хочу, как бы я изменил это? Любая помощь будет принята с благодарностью enter image description here

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Я бы посоветовал вам посмотреть некоторые учебники по питону и начать с этого. В вашем коде много ошибок, и я подозреваю, что несколько базовых руководств очень помогут.

Редактировать: Узнайте больше о python и о том, как он работает. Например, вы используете знак сравнения == в строке и ничего не делаете с выводом. Например, строка lc=='Level 1'. Я думаю, что вы пытаетесь сделать несколько операторов if? Вы можете сделать это с if cond1 and cond2:.

Вы жестко запрограммировали много ключевых слов, когда хотите передать их по функции. И вы перезаписываете эти ключевые слова в каждой строке. См. process='KILO' всякий раз, когда row[3] == 'KILO'.

Так что попробуйте сделать больше уроков и примеров, чтобы улучшить кодирование.

Мой ответ:

 import csv
    f = open('C:\\Users\\keshabg\\Desktop\\sql_testing\\table_1.csv')
    csv_f = csv.reader(f)

    def try1(data,process,shift,lc):
        result = []
        if data == 'units':
            result_column = 5
        elif data == 'hours':
            result_column = 6
        else:
            raise NotImplementedError
        for row in csv_f:
            if row[2] == shift and row[3] == process and row[4] == lc:
                result.append(row[result_column])
        return result
    a = try1("units","KILO","A","Level 1")
    print(a)
0 голосов
/ 25 октября 2019

Как сказал Encrypted, вам, возможно, стоит узнать немного больше о python,

, например

lc=='Level 1'

, это сравнение, и вы ничего с ним не делаете. может быть, это должно быть в вашем if?

отметьте здесь https://docs.python.org/2/library/stdtypes.html, чтобы узнать больше о сравнениях

что-то еще: В конце вы пытаетесь объединить 5 результатов в один

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...