如何删除字符串前指定可变数量字符?替换密码程序输出优化求助
替换密码程序问题解决
一、解决原始字符串与编码结果拼接的问题
你的代码问题出在直接修改了输入的user_string——遍历原字符串时,你把编码后的字符不断追加到原字符串末尾,最终输出自然是原内容+编码内容的拼接体。
修正方案是新建一个空字符串专门存储编码结果,不要碰输入的原始字符串:
english_alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' al_bhed_alphabet = 'YPLTAVKREZGMSHUBXNCDIJFQOWypltavkrezgmshubxncdijfqow' def encode(user_string): result = "" # 用新字符串存编码结果 for letter in user_string: if letter in english_alphabet: # 找到对应替换字符,追加到result result += al_bhed_alphabet[english_alphabet.find(letter)] else: # 非字母字符直接保留 result += letter print(result) # 测试输入 encode("hello world") # 输出:rammu funmt
二、移除字符串前指定数量的可变字符
完全可以实现,用Python的字符串切片就能搞定,语法为字符串[起始索引:]。比如要移除前n个字符,就取字符串[n:]。
你可以把这个逻辑整合到函数里,加一个可选参数控制移除数量:
english_alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' al_bhed_alphabet = 'YPLTAVKREZGMSHUBXNCDIJFQOWypltavkrezgmshubxncdijfqow' def encode(user_string, remove_first_n=0): result = "" for letter in user_string: if letter in english_alphabet: result += al_bhed_alphabet[english_alphabet.find(letter)] else: result += letter # 移除前n个字符,若n超过字符串长度则返回空 if remove_first_n > 0: result = result[remove_first_n:] print(result) # 测试:移除前2个字符 encode("hello world", remove_first_n=2) # 输出:mmu funmt
内容的提问来源于stack exchange,提问作者Nathan Lockhart
相关产品推荐
相关产品推荐

