2013-10-05 3 views
0

*** Я не объясняю это хорошо, поэтому, надеюсь, это изменение имеет больше смысла: в основном мне приходится писать код, который будет работать на тонну тестовых примеров, приведенный ниже пример является лишь примером. Поэтому я не могу вручную ввести вход в мою функциюКак обрабатывать необработанные данные (в python)?

Скажем, у меня есть следующий входной сигнал:

0 
    4 
    0,2,2,3 

и мне нужно создать какой-то выход, как

1 

Как я могу сделай это?

Что я имею в виду, если у меня обычно возникает проблема, я могу просто определить функцию, а затем ввести значения вручную, но как я могу прочитать необработанные данные (выполнить ряд функций/операций с данными) ?

(Для задания я должен получить вход на STDIN -> и напечатать правильный вывод на STDOUT

+3

'print 1' '-) Вы ничего не сказали о том, как входы относятся к ожидаемому результату. –

+0

Python 3: 'print (1)'. Задача решена! – aIKid

ответ

2

STDIN - это просто файл (или файл-подобный объект), представленный sys.stdin; вы можете рассматривать его как обычный файл и читать данные из него.Вы можете даже перебирать его; например:

sum = 0 
for line in sys.stdin: 
    item = int(line.strip()) 
    sum += item 
print sum 

или просто

entire_raw_data = sys.stdin.read() 
lines = entire_raw_data.split() 
... # do something with lines 

Кроме того, вы можете итеративно назвать raw_input(), который возвращает последовательные строки, отправленные на STDIN, или даже превратить его в итератор:

for line in iter(raw_input, ''): # will iterate until an empty line 
    # so something with line 

что эквивалентно:

while True: 
    line = raw_input() 
    if not line: 
     break 
    # so something with line 

Смотрите также: https://en.wikibooks.org/wiki/Python_Programming/Input_and_output

+0

Да, я сформулировал свой вопрос плохо, но это в основном то, что я спрашивал, как я могу «прочитать» данные на python, а sys.stdin выполняет работу –

1

Вы можете использовать функцию raw_input() для чтения из стандартного ввода, а затем процесс, как вам нужно

1
.

использовать эту raw_input() это основная функция ввода питона

myInput = raw_input() 

для получения дополнительной информации о сырье на входе, пожалуйста, см. в:

http://docs.python.org/2/library/functions.html#raw_input

1

Обычно вы хотите сделать:

the_input = input(prompt)  # Python 3.x 

или

the_input = raw_input(prompt)  # Python 2.x 

А потом:

print(output)  # Python 3.x 

или

print output  # Python 2.x 

Однако, вы можете также (но, вероятно, не хотят) сделать это:

import sys 
the_input = sys.stdin.readline() 
bytes_written = sys.stdout.write(output) 

Это более или менее то, что print и input делают за кулисами. sys.stdin, sys.stdoutsys.stderr) работают как файлы - вы можете читать и писать им и т. Д. В терминологии Python они называются файлоподобными объектами.

Из того, что я понимаю, вы хотите что-то вроде этого:

def f(x, y, z): 
    return 2*x + y + z + 1 

a = int(input("Enter a number: "))  # presuming Python 3.x 
b = int(input("Enter another number: ")) 
c = int(input("Enter the final number: ")) 
print(f(a, b, c)) 

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

>>> Enter a number: 7 
>>> Enter another number: 8 
>>> Enter the final number: 9 
>>> 32 
2

Мы можем легко использовать raw_input() для этого случая:

text_input = raw_input("Enter text:") 

Если вы используете Python 3, вы можете использовать input() в Точно так же:

text_input = input("Enter text:") 

Или, если вы предпочитаете, чтобы запустить программу с аргументами командной строки, используйте sys.argv

import sys 
for i in sys.argv: 
    if i >= 1: 
     command = i 
     #do something with your command 

Вот хорошо читать: http://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch06s03.html

EDIT

Хорошо, просто поймите реальный вопрос здесь.

Простой способ: вы сохраняете данные в текстовом файле и читаете его с помощью своей программы.

f = open("path/to/command.txt", 'r') 
commmands = f.read() 

Таким образом, вы можете быстро обрабатывать свои данные. После обработки вы можете записать его в другой файл:

output_file = open("path/to/output.txt", 'w') 
output_file.write(result) 

Как что делать с командным файлом, вы можете структурировать ее самостоятельно и обработать его с str.split() методом и петли через него.

Советы: Так вы не забудьте закрыть файл, рекомендуется использовать with заявление:

with open('file.txt', 'w') as f: 
    #do things 
    f.write(result) 

Подробнее об обработке файла:

http://docs.python.org/3.3/tutorial/inputoutput.html#reading-and-writing-files

Надежда, которая помогает !

Смежные вопросы