簡體   English   中英

在 for 循環中使用.upper() 后字符串中的奇數大寫字母

[英]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),然后是“-”。 例子:

輸入和 Output

輸入:“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM