Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 14, 2016 21:26:38

crazyma66ot
Зарегистрирован: 2016-10-12
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Задача "Две половинки"

Здравствуйте,
подскажите, пожалуйста, с решением

условие:
Дана строка. Разрежьте ее на две равные части (если длина строки — четная, а если длина строки нечетная, то длина первой части должна быть на один символ больше). Переставьте эти две части местами, результат запишите в новую строку и выведите на экран.

пример:
Hi - iH

решение

 s = input()
x = len(s)
l1 = x - x // 2
print(s[l1:] + s[:l1])


+ вопрос
решение должно использовать только файловый ввод/вывод, как это реализовать?

спасибо

Отредактировано crazyma66ot (Ноя. 14, 2016 21:54:47)

Офлайн

#2 Ноя. 14, 2016 21:55:05

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Задача "Две половинки"

целочисленное деление

 //

 s = '1234567'
h = sum(divmod(len(s), 2))
s[h:] + s[:h]



Отредактировано izekia (Ноя. 14, 2016 22:06:02)

Офлайн

#3 Ноя. 14, 2016 21:57:41

crazyma66ot
Зарегистрирован: 2016-10-12
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Задача "Две половинки"

izekia
целочисленное деление
ошибка? вроде при проверке сошлось с тестовым заданием

Офлайн

#4 Ноя. 14, 2016 22:07:09

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Задача "Две половинки"

crazyma66ot
ошибка? вроде при проверке сошлось с тестовым заданием
все правильно
просто код другой был



Офлайн

#5 Ноя. 14, 2016 22:10:27

crazyma66ot
Зарегистрирован: 2016-10-12
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Задача "Две половинки"

izekia
да, потом перерешалось.
но вопрос мой остается открытым (

принимается решение только на ввод/вывод файла, как это сделать?

Офлайн

#6 Ноя. 14, 2016 22:16:24

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Задача "Две половинки"

если это типа олимпиадных задачек, то там либо должны быть явно указаны имена файлов, либо стдин/стдоут



Офлайн

#7 Ноя. 14, 2016 22:26:55

crazyma66ot
Зарегистрирован: 2016-10-12
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Задача "Две половинки"

izekia
если это типа олимпиадных задачек, то там либо должны быть явно указаны имена файлов, либо стдин/стдоут
это домашняя задачка, имена файлов не указаны, условие полностью приведено в первом топике, но сказано, что решение принимается только через ввод-вывод файла

Офлайн

#8 Ноя. 14, 2016 22:50:00

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Задача "Две половинки"

 from contextlib import ExitStack
  
with ExitStack() as stack:
    fin = stack.enter_context(open('input.txt', 'r', encoding='utf8'))
    fout = stack.enter_context(open('output.txt', 'w', encoding='utf8'))
    while True:
        s = fin.readline()[:-1]
        if not s:
            break
        x = len(s)
        l1 = x - x // 2
        print(s[l1:] + s[:l1], file=fout)

это для записи тестового файла:
 with open('input.txt', 'w', encoding='utf8') as fout:
    print('123', file=fout)
    print('1234', file=fout)
    print('1', file=fout)
    print('12345', file=fout)
    print('123456', file=fout)

это для вывода результата:
 with open('output.txt', 'r', encoding='utf8') as fin:
    print(fin.read())



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version