我试图在python中使用replace函数,但是遇到了一些问题

2024-05-13 20:25:23 发布

您现在位置: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.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


Tags: 代码程序密码列表input模式codereplace
2条回答

您正在运行新数据的替换!下面是一个示例,我们迭代给定的字符并替换它们一次,这可以防止出现您描述的问题:

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”。你知道吗

ord()函数获取字符的ascii值

chr()函数从ascii值返回相应的字符

相关问题 更多 >