Spotify Tech Puzzle - стандартный ввод в Python - PullRequest
0 голосов
/ 05 февраля 2012

Я пытаюсь решить двустороннюю проблему в Spotify Tech Puzzles.http://www.spotify.com/us/jobs/tech/bilateral-projects/ У меня есть кое-что, что работает на моем компьютере, который читает ввод из файла input.txt и выводит его в ouput.txt.Моя проблема в том, что я не могу понять, как заставить мой код работать, когда я отправляю его туда, где он должен читать из стандартного ввода.Я просмотрел несколько других постов и не вижу ничего, что имеет для меня смысл.Я вижу, что некоторые люди просто используют raw_input - но это вызывает приглашение пользователя ??Не уверен, что делать.Вот пример моего кода, который предназначен для чтения ввода и записи вывода.Любые предложения о том, как это может потребоваться изменить?Кроме того, как я могу проверить код, как только он будет изменен для чтения из стандартного ввода?Как я могу поместить тестовые данные в стандартный ввод?Ошибка, которую я получаю от spotify, говорит Run Time Error - NameError.

import sys

# Read input
Input = []
for line in sys.stdin.readlines():
    if len(line) <9:
        teamCount = int(line)
    if len(line) > 8:
        subList = []
        a = line[0:4]
        b = line[5:9]
        subList.append(a)
        subList.append(b)
        Input.append(subList)

##### algorithm here

#write output
print listLength
for empWin in win:
    print empWin

1 Ответ

0 голосов
/ 07 февраля 2012

У тебя все хорошо.

for line in sys.stdin.readlines():

будет читать строки из стандартного ввода. Однако его можно сократить до:

for line in sys.stdin:

Я не использую Windows, но чтобы протестировать ваше решение из командной строки, вы должны запустить его следующим образом:

python bilateral.py < input.txt > output.txt

Если я запускаю ваш код выше, я вижу сообщение об ошибке

Traceback (most recent call last):
  File "bilateral.py", line 20, in <module>
    print listLength
NameError: name 'listLength' is not defined

которая случайно (потому что я полагаю, что вы не отправили это) была ошибкой, обнаруженной пазлом Spotify. Возможно, вы где-то ошиблись в переменной.

...