Для меня (Ubuntu 16.04, R 3.4.2) была использована смесь из вышеперечисленных решений:
sudo apt-get install libudunits2-dev libgdal-dev libgeos-dev libproj-dev
Затем просто установили rgdal
из CRAN.
Вот онлайнер
"".join([x.upper() if i%2 else x.lower() for i,x in enumerate(mystring)])
Это делает работу также
def foo(input_message):
c = 0
output_message = ""
for m in input_message:
if (c%2==0):
output_message = output_message + m.lower()
else:
output_message = output_message + m.upper()
c = c + 1
return output_message
Вы можете просто случайным образом выбрать каждую букву в старой строке, если вы должны использовать строчные или прописные буквы, например:
import random
def myfunc2(old):
new = ''
for c in old:
lower = random.randint(0, 1)
if lower:
new += c.lower()
else:
new += c.upper()
return new
Вот решение с использованием itertools
, которое использует нарезку строк:
from itertools import chain, zip_longest
x = 'inputstring'
zipper = zip_longest(x[::2].lower(), x[1::2].upper(), fillvalue='')
res = ''.join(chain.from_iterable(zipper))
# 'iNpUtStRiNg'
Использование среза строки:
from itertools import zip_longest
s = 'example'
new_s = ''.join(x.upper() + y.lower()
for x, y in zip_longest(s[::2], s[1::2], fillvalue=''))
# ExAmPlE
Использование итератора:
s_iter = iter(s)
new_s = ''.join(x.upper() + y.lower()
for x, y in zip_longest(s_iter, s_iter, fillvalue=''))
# ExAmPlE
Использование функции reduce()
:
def func(x, y):
if x[-1].islower():
return x + y.upper()
else:
return x + y.lower()
new_s = reduce(func, s) # eXaMpLe
Этот код также возвращает строку альтернативных прописных букв: -
def alternative_strings(strings):
for i,x in enumerate(strings):
if i % 2 == 0:
print(x.upper(), end="")
else:
print(x.lower(), end= "")
return ''
print(alternative_strings("Testing String"))