Дублирование вывода - PullRequest
0 голосов
/ 14 мая 2018

Я столкнулся с проблемой, так как мои результаты были продублированы.

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

В настоящее время выходные данные дублируются на 3 (количество значений, содержащихся в массиве gen_coms.

Следующие фрагменты кода относятся к этой проблеме (Пожалуйста, не обращайте внимания на ВСЕ комментарии вкод):

Первая функция:

 gen_coms = []
    def getCommands():
        for file in os.listdir(com_dir):
            if file.endswith(com_ext):
                global gen_coms
                a = gen_coms.append(file[:-len(com_ext)]) # Looks good however formats output as ['a','b','c'] is there a way to format it as 'a','b','c' or a,b,c ?

Вторая функция:

def genTerm():
while True:
    gin = raw_input('> ')
    for commands in gen_coms: # Prints out 3 vars. This didn't happen before but I am assuming thats because gen_coms now technically has a value of 3?
        if gin in gen_coms:
            print gin
        else:
            print('Unrecognized command!')

Пример ввода / вывода, помогающий показать, какую проблему я получаювыглядит так:

> a # This is the input -> a
a  # Here down is output
a
a

Введен ввод a и печатается правильный вывод, который также является a, а не один раз, как я ожидал, он стал 3. Это не ограничивается толькоa но каждый вывод.

Не важные примечания:

Извините, если формат этого вопроса не самый лучший, мне очень трудно сосредоточиться и думать в целомна данный момент из-за отсутствия слиp и выполнит редактирование, исправляющее грамматику, орфографию и общий макет через минуту или две.

Спасибо, что нашли время прочитать этот длинный и, скорее всего, повторяющийся вопрос.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

После просмотра комментариев и просмотра моего кода я нашел исправление:

def genTerm():
    while True:
        gin = raw_input('> ')
        if gin in gen_coms:
            print gin
        else:
            print("Invalid command!")

Это решает мою проблему и делает функцию короче. Спасибо всем, кто потратил время на изучение этого вопроса.

0 голосов
/ 14 мая 2018
def genTerm():
    while True:
          gin = raw_input('> ')
          for commands in gen_coms: 
              if gin in gen_coms:
                 print gin
              else:
                 print('Unrecognized command!')

это происходит из-за 4-й строки рекламной строки 5 позвольте мне объяснить, поскольку длина gen_coms равна 3, цикл выполняется здесь три раза, и на каждой итерации цикла for условие выполняется, и каждый раз печатается первый символ.

так, что печатает а трижды;

в пятой строке замените gen_coms командами.

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