Найти - Пользователи
Полная версия: Открытая олимпиада школьников по программированию, 2010/11 учебный го
Начало » Python для новичков » Открытая олимпиада школьников по программированию, 2010/11 учебный го
1
HAW
из разъяснений:

http://www.olympiads.ru/zaoch/2010/lang.shtml
В скриптовых языках perl, php, python, ruby отсутствует возможность потокового ввода данных, свойственного для языков Pascal, C и C++, то есть в этих языках нельзя простыми методами считать из входного файла последовательность целых чисел (действительных чисел, строк и т.д.), если неизвестно, находятся ли эти числа в одной строке или в разных строках.

Для ввода данных в этих языках предлагается считывать содержимое всего файла сразу в строковую переменную, а затем использовать стандартную функцию split для разбивки этой переменной на поля. Функция split игнорирует все начальные и конечные пробельные символы (то есть пробелы, символы табуляции и символы новой строки), а все прочие символы разбиваются на последовательности, состоящие из непробельных символов, пробельные символы являются разделителями для полученных последовательностей. В результате получается список, состоящий из строк непробельных символов, содержащихся в исходном файле. Например, если в исходном файле записана строка “1 2 abc” (количество пробелов неважно), то в полученном списке будет три элемента - “1”, “2” и “abc”.

В языке php имеется небольшое отличие - функция называется preg_split, при ее вызове в качестве аргумента необходимо явно указать регулярное выражение, которое задает разделитель полей (это /\s+/, в языках perl, python и ruby такое значение разделителя используется по умолчанию), и перед вызовом функции preg_split необходимо явно удалить начальные и концевые пробелы из строки функцией trim (в языках perl, python и ruby это делает сама функция split).

Можно пользоваться и другими способами ввода-вывода данных, поддерживаемых данными языками.
#!/usr/bin/python

# Объявляем файлы FIN и FOUT для ввода-вывода данных
FIN = open("sum.in", "r")
FOUT = open("sum.out", "w")

# Считываем весь файл при помощи метода read(),
# результат разбиваем на поля по пробельным символам методом split()
# и записываем в список InputData
InputData = FIN.read().split()

# Теперь в элементах списка InputData[0] и InputData[1]
# записаны два входных числа в виде строк.
# Преобразуем их к типу int и запишем их сумму в переменную Answer
Answer = int(InputData[0]) + int(InputData[1])

# Выведем результат в файл
print >> FOUT, Answer

# Закроем файлы FIN и FOUT
FIN.close()
FOUT.close()
наш ответ Чемберлену?
guranvir
Ну а почему нет? ) В принципе для системы сайта codeforces.ru python проблемой не был))
HAW
в этих языках нельзя простыми методами считать из входного файла последовательность целых чисел (действительных чисел, строк и т.д.), если неизвестно, находятся ли эти числа в одной строке или в разных строках.
т.е. по любому читать весь файл?

Задачи там такого плана
http://informatics.mccme.ru/moodle/mod/statements/view3.php?id=1083&chapterid=1371

вроде ничего сложного. параметры в одном файле задаются, результат надо вывести в другой.
Тогда к чему предупреждение, что задания можно выполнить не на всех языках?

ага, есть и такое:
В первой строке входного файла целое число n (2 =< n =< 100) — число планет. Далее следуют
n строк, по четыре целых числа x, y, s и p в каждой. Числа x и y (jxj, jyj < 20) — координаты
соответствующей планеты, s (0 =< s =< 10) — скорость производства кораблей, p (0 =< p =< 100) —
количество кораблей на планете в начале игры. В следующей строке следуют два целых числа —
номера планет первого и второго игроков. Планеты нумеруются с единицы в порядке появления во
входном файле. Гарантируется, что координаты всех планет различны.
>>http://neerc.ifmo.ru/school/io/archive/20101009/problems-basic-20101009.pdf
Rodegast
>Для ввода данных в этих языках предлагается считывать содержимое всего файла сразу в строковую переменную, а затем использовать стандартную функцию split для разбивки этой переменной на поля.

Составитель памятки выпей яду! Тебе не место в этом мире если ты не освоил метод readline().
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB