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

时间:2019-03-06 22:08:55

标签: 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。

2 个答案:

答案 0 :(得分:1)

您正在对新数据进行替换!这是一个示例,其中我们遍历给定的字符并替换一次,以防止您描述的问题:

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))

答案 1 :(得分:1)

这很简单,只需一行即可完成:

first_name = input('first name only: ')
if len(first_name) >= 5:
  if first_name[-1] == 'a':
    print('you won $1000!!')
  else:
    print('you did not win $1000')
else:
  print('you did not win $1000')

这会将每个字符的ascii值增加1。如果字符为“ z”,则将其设置为“ a”。

new = [chr(ord(char) + 1) if char != 'z' else 'a' for char in code] 函数获取字符的ascii值

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