3种情况:1、无元音
2.1、元音后有辅音
2.2、元音后无辅音
用re,找元音后第一个辅音import re
def fun(string):
s = string.lower()
if set(s).intersection(set("aeiou")):
m = re.search(r"(?<=[aeiou])[^aeiou]", s)
return s[:m.start()]+s[m.start():].capitalize() if m else s.upper()
else:
return s.capitalize().swapcase()
如果不用 re 的话
我想先找出所有辅音,然后用字母外的东东拼长,
再与原string对比,,元素不同且不为元音的就是目标,取其索引def fun2(string):
s = string.lower()
cons = [i for i in s if i not in "aeiou"]
nums = {k for i,j,k in zip(cons+list('。'*len(s)),s,range(len(s))) if i!=j and j not in "aeiou"}
if cons == list(s):
return s.capitalize().swapcase()
else:
return s[:min(nums)]+s[min(nums):].capitalize() if nums else s.upper()
|