2024-07-05 09:36:23 发布
网友
string = input("Enter your string ") for i in string: alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" cipher = "ZYXWVUTSRQPONMLKJIHGFEDCBA" char = alphabet.find(i) ciphered = string.replace(i,cipher[char]) print(ciphered)
知道为什么这个只返回字符串的最后一个字母吗
每次遍历循环时,都要替换string中的一个字母,然后将该单个字母替换的结果分配给ciphered,覆盖它以前具有的任何值。最后得到的值是上次循环迭代期间分配的值
string
ciphered
实际上,通过replace在适当的位置修改字符串是一个坏主意,因为最终会来回翻转相同的字母。相反,您可以迭代地构建加密字符串:
replace
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" cipher = "ZYXWVUTSRQPONMLKJIHGFEDCBA" ciphered = "" for char in string: i = alphabet.find(char) ciphered += cipher[i]
仅更改最后一个字母,因为您正在从原始输入字符串在每个循环上创建ciphered字符串,因此在最后一个循环上,仅更改最后一个元素
string = input("Enter your string ") ciphered = "" alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" cipher = "ZYXWVUTSRQPONMLKJIHGFEDCBA" for i in string: char = alphabet.find(i) ciphered += cipher[char] print(ciphered)
这应该行得通
也许您还应该将字符串转换为大写字母,否则,find()函数可以返回值-1
string = string.capitalize()
每次遍历循环时,都要替换
string
中的一个字母,然后将该单个字母替换的结果分配给ciphered
,覆盖它以前具有的任何值。最后得到的值是上次循环迭代期间分配的值实际上,通过
replace
在适当的位置修改字符串是一个坏主意,因为最终会来回翻转相同的字母。相反,您可以迭代地构建加密字符串:仅更改最后一个字母,因为您正在从原始输入字符串在每个循环上创建
ciphered
字符串,因此在最后一个循环上,仅更改最后一个元素这应该行得通
也许您还应该将字符串转换为大写字母,否则,find()函数可以返回值-1
相关问题 更多 >
编程相关推荐