目前我正在做 Cordwarrior 中的奇怪案例问题。问题是编写一个接受字符串的函数 toWeirdCase(Ruby 中的奇怪大小写),并返回相同的字符串,每个单词中的所有偶数索引字符都大写,每个单词中的所有奇数索引字符都小写。刚刚解释的索引是从零开始的,所以第零索引是偶数,因此该字符应该是大写的。
我写了这个函数。它成功地交换了单个单词的大小写,但不适用于多个单词或一个句子,所以我想应用 swapcase 但它交换了句子的所有单词,这是不可取的。所以我可以不知道哪种条件可能适合这个::
def to_weird_case(string):
tot=""
for i in range(len(string)):
if i%2==0:
tot+=string[i].upper()
if i%2==1:
tot+=string[i].lower()
if string[i]==" " or i%2==1:
to_weird_case(string[i:])
return tot
错误我得到了这种类型:
toWeirdCase
should return the correct value for a single word (8 of 8 Assertions)
should return the correct value for multiple words
'ThIs iS A TeSt' should equal 'ThIs Is A TeSt'
'LoOkS LiKe yOu pAsSeD' should equal 'LoOkS LiKe YoU PaSsEd'
'ThIs iS ThE FiNaL TeSt cAsE' should equal 'ThIs Is ThE FiNaL TeSt CaSe'
'JuSt kIdDiNg' should equal 'JuSt KiDdInG'
'Ok fInE YoU ArE DoNe nOw' should equal 'Ok FiNe YoU ArE DoNe NoW'\
问题链接:https ://www.codewars.com/kata/52b757663a95b11b3d00062d/train/python
我想到了另一种方法来划分句子并将函数应用于每个单词。
def swap(string):
tot=""
for i in range(len(string)):
if i%2==0:
tot+=string[i].upper()
if i%2==1:
tot+=string[i].lower()
if i%2==0:
swap(string[i])
return tot
def to_weird_case(string):
new=""
for j in string:
print(swap(j))
print(to_weird_case('ThIs iS A TeSt'))
但它使所有单词都大写。