[英]Odd uppercase letters in string after using .upper() in a for loop
正如標題所說,output 包含一些大寫字母,但對於我來說,我無法弄清楚為什么。 <=== 閱讀整篇文章以了解問題。 這是我假設導致“錯誤”的代碼片段。
def translate(s):
i = 0
word = ""
for letter in s:
word += letter.upper() + (letter * i) + "-"
i += 1
function 將字符串作為輸入並返回一個字符串,其中第一個字母為大寫字母,后面的字母乘以 1 += 1(每組不同的字母 +1),然后是“-”。 例子:
輸入:“ZpglnRxqenU”
預期 Output:“Z-Pp-Ggg-Lllll-Nnnnn-Rrrrrr-Xxxxxxx-Qqqqqqqq-Eeeeeeeee-Nnnnnnnnnn-Uuuuuuuuuuu”
實際Output:“Z-Pp-Ggg-Lllll-Nnnnn-RRRRRR-Xxxxxxx-Qqqqqqqq-Eeeeeeeee-Nnnnnnnnnn-UUUUUUUUUUU”
如您所見,R:s 都是大寫的,U:s 也是如此。 我的問題是:為什么它們是大寫的? 我知道為什么第一個字母是,這是有意的,但每個部分(一個部分在“-”和“-”的邊界內)不應該超過一個大寫字母(第一個字母)。
如需進一步參考: 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 行只是我處理刪除最后一個“-”的方式。 如果 output 不存在,則其末尾將有一個“-”。 我知道這是一種不好的處理方式,但我只是想盡快完成它。
R:s 和 U:s 是大寫的,因為我們將給定字符的第一個字母相乘。 我完全忘記了這個字符可能是大寫的,因此字母的倍數也將是大寫的。
R 和 U 是大寫的,因為在初始字符串中,它們是大寫的。 除非您嘗試將它們更改為小寫,否則它們將保持大寫。
這是您更新的代碼:
def translate(s):
i = 0
word = ""
for letter in s:
word += letter.upper() + (letter.lower() * i) + "-"
i += 1
注意(letter * i)
中的letter
后面的.lower()
) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.