Вывод строки "заборчиком" в python
Необходимо вывести строку таким образом, чтобы каждая вторая буква была заглавной. Пробовал использование среза и метода upper(), но получилось вывести только заглавные буквы.
text = input()
print(text[0:len(text):2].upper())
Ответы (3 шт):
import re
text = input('Введите текст: ')
zabor = re.sub(r'(\b|\w)(\w)', lambda x: x.group(1).lower()+x.group(2).upper(), text)
print(zabor)
Например, так:
text = input()
count = [i for i in range(len(text))]
print(''.join(text[i].upper() if (i % 2 != 0) else text[i] for i in count))
Дело в том, что командой print(text[0:len(text):2].upper()) вы пытаетесь вывести срез строки, состоящий из каждого второго символа исходной строки, к которому применён метод upper(). Поэтому и выводится только каждый второй символ (заглавный из-за upper()).
Можно пойти несколькими путями:
Во-первых, самый банальный, при помощи цикла for:
text = input()
for i in range(len(text)):
if i % 2 == 0:
print(text[i].upper(), end="")
else:
print(text[i], end="")
Во-вторых чуть более хитрый при помощи генератора-списка, в котором стоит условие, что i-й символ объекта, возвращаемого генератором (то бишь i-й символ исходной строки text) либо остаётся неизменным, либо его регистр становится верхним.
text = input()
new_text = "".join([text[i].upper() if i % 2 == 0 else text[i] for i in range(len(text))])
print(text)
Заметьте, что тут исправлен тот недостаток, что вы в своём примере "пробегали" на каждый символ исходной строки, а лишь каждый второй, и исходная строка text проходится полностью.