在for循环中使用.opper()后字符串中的奇数大写字母



正如标题所说,输出包含一些大写字母,但就我而言,我不知道为什么<===阅读整篇文章以理解问题。这是我认为导致"错误"的代码片段。

def translate(s):
i = 0
word = ""
for letter in s:
word += letter.upper() + (letter * i) + "-"
i += 1

该函数以一个字符串作为输入,并返回一个字符串,其中第一个字母为大写,后面的字母乘以1+=1(每组不同的字母为+1(,然后是"1"-&";。示例:

输入和输出

输入:";ZpglnRxqenU";

预期输出:";Z-Pp-GG-Llll-Nnnnn-Rrrrrr-Xxxxxxx-Qqqqqq-Eeeeeeee-Nnnnnnnn-Uuuuuuuuu";

实际输出:";Z-Pp-GG-Llll-Nnnnn-RRRRR-Xxxxxxx-Qqqqqq-Eeeeeeee-Nnnnnnnn-UUUUUUUUU";

问题

正如你所看到的,R:s都是大写的,U:s也是大写的。我的问题是:为什么它们是大写的?我知道为什么第一个字母是,这是有意的,但每个部分(在"-"one_answers"-"的界域内的部分(的大写字母(第一个字母(永远不应该超过一个。

进一步参考:https://www.codewars.com/kata/5667e8f4e3f572a8f2000039/

OBS:我这样做并不是为了得到代码战争挑战的答案。

这是整个代码。

def translate(s):
i = 0
word = ""
for letter in s:
word += letter.upper() + (letter * i) + "-"
i += 1
eq1 = list(word)
eq1.reverse()
eq1.remove("-")
eq1.reverse()
word = ""
for y in eq1:
word += y
return word

第7-12行只是我处理去除最后一个"-&";。输出将具有"0"-"如果它不在的话。我知道这是一种糟糕的处理方式,但我只想尽快完成。

R和U是大写的,因为在初始字符串中,它们是大写的。除非您尝试将它们更改为小写,否则它们将保持大写
这是您的更新代码:

def translate(s):
i = 0
word = ""
for letter in s:
word += letter.upper() + (letter.lower() * i) + "-"
i += 1

注意(letter * i)letter之后的.lower()

R:s和U:s是大写的,因为我们将给定字符的第一个字母相乘。我完全忘记了这个字符可能是大写的,因此字母的倍数也将是大写的。

相关内容

最新更新