簡體   English   中英

“切片”和“替換”作業的字符串

[英]"Slicing" and "Replacing" a string for homework

我的 class 遇到了問題。 問題的圖片在下面。 我正在嘗試使用序數函數/值將這個字符串“abcd efgh ijkl”轉換為這個“AbCd eFgH IjKl”以大寫偶數索引號。

這是我到目前為止得到的:

def mock(string):
    index = 0
    for i in string:
        if string.find(i, index) % 2 == 0:
            string.replace(i,(chr(ord(i) - 32)))
        index = string.find(i) + 1
    return string

print(mock("abcd efgh ijkl"))

任何幫助表示贊賞。

問題圖片

str.replace返回字符串,但您沒有將返回值分配給任何內容。 您還需要正確處理空格(感謝@JacobStrauss 進一步簡化!)

def mock(string):
    for i in string:
        if i != ' ' and string.find(i) % 2 == 0:
            string = string.replace(i, (chr(ord(i) - 32)))
    return string

print(mock("abcd efgh ijkl"))

印刷:

AbCd eFgH IjKl

感謝 Andrej Kesely 提供了一個解決方案,但我只是想稍微改進一下。 由於您已經在遍歷字符串,並且 .find() 方法返回索引 position,因此您不需要跟蹤索引。 我已經測試了下面的代碼,它也可以正常工作。

def mock(string):
    for i in string:
        if i != ' ' and string.find(i) % 2 == 0:
            string = string.replace(i, (chr(ord(i) - 32)))
    return string

以上返回“AbCd eFgH IjKl”

使用 for 循環和按索引字符排列字符串

def capitalize(string):
    result=""
    for i in range(len(string)):
        if i%2==0:
            result+=string[i].upper()
        else:
            result+=string[i]
    return result

string="abcd efgaah ijklaaa"
print(capitalize(string))

output:

AbCd eFgAaH IjKlAaA

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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