如何在字符串中交替更改大写和小写?

时间:2019-01-17 08:43:41

标签: python python-3.x

我想从给定的字符串中创建一个新的字符串,并使用大写和小写字母。

我尝试遍历字符串,然后先将大写更改为新字符串,然后再将小写更改为另一个新字符串。

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)

由于我无法更改给定的字符串,因此需要一种创建新字符串备用大写字母的好方法。

8 个答案:

答案 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