Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 13, 2013 20:50:34

sanya_rnd
Зарегистрирован: 2013-02-13
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Решение задачи

Всем привет.

Так случилось, что начал изучать питон, да не просто так, а чтобы на нем еще и ЕГЭ сдать, а в дальнейшем и в Maya работать легче было. С языками программирования знаком на уровне Паскаля и своеобразной модификации Си++.
Начал читать книгу, прочел про основные типы объектов. Решил глянуть глянуть, а что можно из С части сделать, используя это.

На вход программе подаются сведения о пассажирах, желающих сдать свой багаж в камеру хранения на заранее известное время до полуночи. В первой строке сообщается число пассажиров N, которое не меньше 3, но не превосходит 1000; во второй строке – количество ячеек в камере хранения K, которое не меньше 10, но не превосходит 1000.
Каждая из следующих N строк имеет следующий формат:

<Фамилия> <время сдачи багажа> <время освобождения ячейки>,
где <Фамилия> – строка, состоящая не более чем из 20 непробельных символов;
<время сдачи багажа> – через двоеточие два целых числа, соответствующие часам (от 00 до 23 – ровно 2 символа) и минутам (от 00 до 59 – ровно 2 символа);
<время освобождения ячейки> имеет тот же формат.
<Фамилия>, <время сдачи багажа> и <время освобождения ячейки> разделены одним пробелом.
Время освобождения больше времени сдачи.
Сведения отсортированы в порядке времени сдачи багажа. Каждому из пассажиров в камере хранения выделяется свободная ячейка с минимальным номером. Если в момент сдачи багажа свободных ячеек нет, то пассажир уходит, не дожидаясь освобождения одной из них.
Требуется написать программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая будет выводить на экран для каждого пассажира номер ему предоставленной ячейки (можно сразу после ввода данных очередного пассажира). Если ячейка пассажиру не предоставлена, то его фамилия не печатается.
Пример входных данных:
3
10
Иванов 09:45 12:00
Петров 10:00 11:00
Сидоров 12:00 13:12
Результат работы программы на этих входных данных:
Иванов 1
Петров 2
Сидоров 1

Сама задача.

У меня вопросы касательно пары вещей:
K, которое не меньше 10, но не превосходит 1000
как это можно обозначить для input? int(input()) а дальше?

не более чем из 20 непробельных символов;
тоже самое str(input()) - ?

Используем словарь для получения данных с клавиатуры о фамилии и времени

Data = {}
data{'Фамилия' = ‘str(input())’, ‘Время’ = ‘int(input().split())’, ‘Время_2’ = int(input().split())}

причем нам бы это время перевести в минуты, т.е. первое число из split * 60 + второе число, да и эта data должна быть в цикле, и с каждым новым проходом - новые данные вводить, а старые ведь сохранять куда-то надо? В общем я потерян. Буду читать дальше, но буду благодарен, если кто-нибудь поможет с информацией, где найти примеры и прочее под уровень, потому что остается толком 4 месяца, а примеры решения на стандартных языках не радуют.

Отредактировано sanya_rnd (Фев. 13, 2013 20:50:57)

Офлайн

#2 Фев. 14, 2013 15:18:06

warik
Зарегистрирован: 2013-02-06
Сообщения: 23
Репутация: +  1  -
Профиль   Отправить e-mail  

Решение задачи

Однозначно нужно парсить входные данные, для этого читайте про RE.
Не понял про каждый новый проход. У вас же вроде один ввод, а потом вывод результата для всех входных данных. По крайней мере так в примере. Можно использовать конечно базу для хранения результатов, но это излишне.

Почитайте про основные возможности языка хотя бы здесь. Задание простое, можно сделать в течении дня. А за 4 месяца так и гуй написть и вордовские отчеты прикрутить)

Офлайн

#3 Фев. 14, 2013 16:15:15

sanya_rnd
Зарегистрирован: 2013-02-13
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Решение задачи

warik
Однозначно нужно парсить входные данные, для этого читайте про RE.Не понял про каждый новый проход. У вас же вроде один ввод, а потом вывод результата для всех входных данных. По крайней мере так в примере. Можно использовать конечно базу для хранения результатов, но это излишне.Почитайте про основные возможности языка хотя бы здесь. Задание простое, можно сделать в течении дня. А за 4 месяца так и гуй написть и вордовские отчеты прикрутить)


warik
Однозначно нужно парсить входные данные, для этого читайте про RE.
Начну в обязательном порядке

warik
Не понял про каждый новый проход. У вас же вроде один ввод, а потом вывод результата для всех входных данных. По крайней мере так в примере. Можно использовать конечно базу для хранения результатов, но это излишне.
У меня в голове складывается образец БД: входные данные, каждое значение записывается, типа:
Иванов 23:00 12:00

№ Фамилия Время_1 Время_2
1 Иванов 23:00 12:00


И в зависимости от необходимости выгружается и сортируется. Но видимо я все усложнил.


warik
Почитайте про основные возможности языка хотя бы здесь. Задание простое, можно сделать в течении дня. А за 4 месяца так и гуй написть и вордовские отчеты прикрутить)

Читаю Лутца, уже на 150-й странице, но просто уже “руки чешутся” что-нибудь делать Я бы рад 4 месяца один питон изучать, да только сдаю 5 экзаменов, вот и пригорает. Да и никто не гарантирует, что такое на ЭГЕ дадут.

Офлайн

#4 Фев. 14, 2013 17:40:19

warik
Зарегистрирован: 2013-02-06
Сообщения: 23
Репутация: +  1  -
Профиль   Отправить e-mail  

Решение задачи

Не думаю, что Лутц будет лучшим выбором если нужно относительно быстро освоить питон.
Лично я бы на Вашем месте посмотрел скринкасты по питону от Google Python Class, там вся необходимая информация для решения данной задачи есть. Видео в сумме на 2 часа и 4-5 домашних заданий, выходных более чем достаточно.
Можно в базу все писать, а потом сортировать и доставать, но зачем? Если нет смысла долгосрочно (более одного запуска) хранить данные, то в базе смысла нет.

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

Офлайн

#5 Фев. 14, 2013 18:40:58

moron
Зарегистрирован: 2012-10-17
Сообщения: 8
Репутация: +  1  -
Профиль   Отправить e-mail  

Решение задачи

чтобы на нем еще и ЕГЭ сдать
brainFuck учи



Стучу по клаве как пианист по фортепьяно.

Офлайн

#6 Фев. 14, 2013 23:11:06

GaiveR
От:
Зарегистрирован: 2011-08-13
Сообщения: 122
Репутация: +  16  -
Профиль   Отправить e-mail  

Решение задачи

Обрабатывайте данные во время чтения. За вариант “сначала все прочитать, а потом обрабатывать” снимут баллы :)
Регулярки использовать конечно можно, но имхо излишне это, и не уверен что их оценят проверяющие ЕГЭ.

sanya_rnd
которое не меньше 10, но не превосходит 1000
sanya_rnd
не более чем из 20 непробельных символов;
Ограничения указаны больше для тех, кто будет писать на каком-нибудь С и статически выделять память под переменные. На питоне это не так важно. Проверять выполнение этих ограничений при чтении данных дополнительно не нужно.



Офлайн

#7 Фев. 21, 2013 21:13:40

sanya_rnd
Зарегистрирован: 2013-02-13
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Решение задачи

Чтобы не создавать новую тему:

По введенному натуральному числу определите его последнюю цифру.


print(“Введите число: ”)
N = int(input())
result = str(N)
print(“Последняя цифра: ”, result)

Но такого в принципе не должно быть, потому что пример рассматривается в основных арифм. операциях.
Можно использовать %, но как узнать сколько нулей во втором операторе нужно (1…0)? Ведь len() для int не работает.

Офлайн

#8 Фев. 21, 2013 21:58:54

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Решение задачи

Ничче не понял. Может так?

num = input()
if num.isalnum():
    print('последняя цифра', num[-1])

Офлайн

#9 Фев. 22, 2013 08:12:25

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Решение задачи

ему вроде без преобразования надо

print('last - {}'.format(int(input())%10))

Офлайн

#10 Фев. 22, 2013 10:27:04

sanya_rnd
Зарегистрирован: 2013-02-13
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Решение задачи

numsL = list(input().split())
mx = numsL.index(max(numsL))
#print(mx)
print(numsL[mx])

При использовании малых чисел все нормально, а при 5+ знаков и выше - бред. С чем такое связано?

100 4353465 3465734 2345236 67858
67858
12 10000 5450
5450
неверно

5 5500 7600 100
7600
а здесь нормально.

sergeek
ему вроде без преобразования надо
Я это вчера и имел ввиду. Видимо поехал совсем немного не так понял. Сам же про это и написал. Утром проснулся и все исправил сам.

Отредактировано sanya_rnd (Фев. 22, 2013 10:34:13)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version