我想从给定的字符串中创建一个新的字符串,并使用大写和小写字母。
我尝试遍历字符串,然后先将大写更改为新字符串,然后再将小写更改为另一个新字符串。
def myfunc(x):
even = x.upper()
lst = list(even)
for itemno in lst:
if (itemno % 2) !=0:
even1=lst[1::2].lowercase()
itemno=itemno+1
even2=str(even1)
print(even2)
由于我无法更改给定的字符串,因此需要一种创建新字符串备用大写字母的好方法。
答案 0 :(得分:6)
这是一个在线人
"".join([x.upper() if i%2 else x.lower() for i,x in enumerate(mystring)])
答案 1 :(得分:2)
您可以简单地为旧字符串中的每个字母随机选择小写或大写,就像这样:
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
答案 2 :(得分:2)
这是一个使用备用大写字母返回新字符串的
def myfunc(x):
seq = []
for i, v in enumerate(x):
seq.append(v.upper() if i % 2 == 0 else v.lower())
return ''.join(seq)
答案 3 :(得分:2)
这也可以完成工作
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
答案 4 :(得分:1)
使用字符串切片:
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
答案 5 :(得分:1)
这是使用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'
答案 6 :(得分:0)
此代码还返回替代的大写字符串:-
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"))
答案 7 :(得分:0)
with open(module_name) as f:
source = f.read()
source = tokens.tokenize(source)
module = types.ModuleType(module_name)
exec(source, module.__dict__)
sys.modules[module_name] = module
return module