我试图在python中使用replace函数,但遇到了一些问题
我正试图为我父亲制作一个程序,这样他就可以轻松地在工作中更改密码。他必须更改密码列表,使其模式类似于“abcde123”到“bcdef234”等等 我基本上知道了如何编写代码:我试图在python中使用replace函数,但遇到了一些问题,python,Python,我正试图为我父亲制作一个程序,这样他就可以轻松地在工作中更改密码。他必须更改密码列表,使其模式类似于“abcde123”到“bcdef234”等等 我基本上知道了如何编写代码: code = input("Enter code") code = code.replace("z", "a") code = code.replace("y", "z") code = code.replace("x", "y") code = code.replace("w", "x") code = code.r
code = input("Enter code")
code = code.replace("z", "a")
code = code.replace("y", "z")
code = code.replace("x", "y")
code = code.replace("w", "x")
code = code.replace("v", "w")
code = code.replace("u", "v")
code = code.replace("t", "u")
code = code.replace("s", "t")
code = code.replace("r", "s")
code = code.replace("q", "r")
code = code.replace("p", "q")
code = code.replace("o", "p")
code = code.replace("n", "o")
code = code.replace("m", "n")
code = code.replace("l", "m")
code = code.replace("k", "l")
code = code.replace("j", "k")
code = code.replace("i", "j")
code = code.replace("h", "i")
code = code.replace("g", "h")
code = code.replace("f", "g")
code = code.replace("e", "f")
code = code.replace("d", "e")
code = code.replace("c", "d")
code = code.replace("b", "c")
code = code.replace("a", "b")
print code
在第一行中,它表示将任何“z”更改为“a”。在第二行到最后一行中,它表示将任何“a”更改为“b”。当您尝试运行此代码时,当您键入“z”时,它将自动转到“b”。有人知道我怎么解决这个问题吗
编辑:是的,我也意识到这是因为我添加了最后一行代码,将前一行更改为b 您正在新数据上运行替换!下面是一个示例,我们迭代给定的字符并替换它们一次,这可以防止您描述的问题:
code = input("Enter code")
key = {'z': 'a',
'y': 'z',
'x': 'y',
'w': 'x',
'v': 'w',
'u': 'v',
't': 'u',
's': 't',
'r': 's',
'q': 'r',
'p': 'q',
'o': 'p',
'n': 'o',
'm': 'n',
'l': 'm',
'k': 'l',
'j': 'k',
'i': 'j',
'h': 'i',
'g': 'h',
'f': 'g',
'e': 'f',
'd': 'e',
'c': 'd',
'b': 'c',
'a': 'b'
}
new = list()
for c in list(code):
new.append(key[c])
print(''.join(new))
编辑:
更仔细地阅读您的示例,您似乎只想将字母旋转一个位置-无需使用键!我们现在可以很容易地调整它以支持数字、特殊字符。。。你要什么都行
from string import ascii_letters
code = input("Enter code")
charset = ascii_letters
new = list()
for c in list(code):
i = charset.find(c)
new.append(charset[i - 1])
print(''.join(new))
您正在新数据上运行替换!下面是一个示例,我们迭代给定的字符并替换它们一次,这可以防止您描述的问题:
code = input("Enter code")
key = {'z': 'a',
'y': 'z',
'x': 'y',
'w': 'x',
'v': 'w',
'u': 'v',
't': 'u',
's': 't',
'r': 's',
'q': 'r',
'p': 'q',
'o': 'p',
'n': 'o',
'm': 'n',
'l': 'm',
'k': 'l',
'j': 'k',
'i': 'j',
'h': 'i',
'g': 'h',
'f': 'g',
'e': 'f',
'd': 'e',
'c': 'd',
'b': 'c',
'a': 'b'
}
new = list()
for c in list(code):
new.append(key[c])
print(''.join(new))
编辑:
更仔细地阅读您的示例,您似乎只想将字母旋转一个位置-无需使用键!我们现在可以很容易地调整它以支持数字、特殊字符。。。你要什么都行
from string import ascii_letters
code = input("Enter code")
charset = ascii_letters
new = list()
for c in list(code):
i = charset.find(c)
new.append(charset[i - 1])
print(''.join(new))
这非常简单,只需一行即可完成:
new = [chr(ord(char) + 1) if char != 'z' else 'a' for char in code]
这会将每个字符的ascii值增加1。如果字符为“z”,则将其设置为“a”
函数的作用是:获取字符的ascii值
chr()
函数从ascii值返回相应的字符这非常简单,只需一行即可:
new = [chr(ord(char) + 1) if char != 'z' else 'a' for char in code]
这会将每个字符的ascii值增加1。如果字符为“z”,则将其设置为“a”
函数的作用是:获取字符的ascii值
chr()
函数从ascii值返回相应的字符,因为将“z”更改为“a”后,最后一行将遇到“a”(原来是“z”,但已经更改),并将其更改为“b”(这不是主题,但我应该提到,这听起来不像是一个好的密码练习!你最好每次都随机化)@JackParkinson我第一次意识到了这一点,但由于我还是一个初学者,我在理解我找到的许多答案时遇到了很多困难online@JackParkinson (是的,这是真的,但我爸爸必须更改一个字母,因为他使用的系统会这样做,并且会每月重置一次。因此他必须更改它以再次登录。我同意,最好只提供随机密码!)当然,因为在将“z”更改为“a”后,您的最后一行将遇到“a”(原来是“z”,但已经更改)将其改为“b”(这不是主题,但我应该指出,这听起来不是一个好的密码练习!你最好每次都随机)@JackParkinson我第一次意识到了这一点,但由于我还是一个初学者,我在理解我找到的许多答案时遇到了很多困难online@JackParkinson (是的,这是真的,但我爸爸必须更改一个字母,因为他使用的系统会这样做,并且每月重置一次。所以他必须更改它才能再次登录。我同意,最好只提供随机密码!)很好,没有想到!很好,没有想到!谢谢你,但与其做[I-1],不如做[I+1]@DeeDee[i+1]
你会遇到的一个问题是z-当你使用[i-1]时,你不会回到a
将返回到最后一项,如果你从a开始,实际上,当我这样做时,它确实返回到a,但只使其大写。仍在努力使其保持小写。啊,对了!ascii是a-Za-z…因此你可以只做降低('''.join(new))
而不是做[I-1])谢谢,但与其做[I-1],不如这样做[i+1]。@DeeDee使用[i+1]
时会遇到的一个问题是z-使用[i-1]时不会返回到a
如果你从a开始,它将返回到最后一项。实际上,当我这样做时,它确实返回到a,但只使其大写。仍在努力使其保持小写。啊,对了!ascii是a-Za-z…所以你可以改为小写('''.join(new))