Python:循环和编辑字符串字符

发布于 2022-07-28 22:57:30

我是 python 和一般编码的新手。这是我的作业中的一个问题,以及我当前的代码。我知道我只有其中一个部分,但我想先弄清楚这一部分,然后再继续其他部分。通过我的循环,我可以找到并识别字母 i,但我不知道如何将 i 更改为 1。

问题:

许多用户创建的密码简单易猜。编写一个程序,该程序接受一个简单的密码,并通过使用下面的键替换字符并附加“!”来使其更强大 到输入字符串的末尾。

py i becomes 1 a becomes @ m becomes M B becomes 8 s becomes $

例如:如果输入是:

py mypassword

输出是:

py Myp@$$word!

提示:Python 字符串是不可变的,但支持字符串连接。在给定的密码变量中存储和构建更强的密码。

代码:

word = input()
password = ()


for letter in word:
    if letter == 'i':
        password = password+'1'
    else: password = password+letter

print(password)

输入:igigigig 输出:igigigig

关注者
0
被浏览
43
1 个回答
  • 面试哥
    面试哥 2022-07-28
    为面试而生,有面试问题,就找面试哥。

    首先,您将密码初始化为错误的变量选择。password = ()将密码设置为元组。尝试将字符添加到元组变量将导致异常:

    >>> password = ()
    >>> password = password + '1'
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    TypeError: can only concatenate tuple (not "str") to tuple
    

    接下来,您有问题中提供的字符映射。您可以首先创建一个字典来表示此映射。

    mapping = {
        'i': '1',
        'a': '@',
        'm': 'M',
        'B': '8',
        's': '$',
    }
    

    在循环字母时,您可以使用映射来确定是否应该进行替换:

    for letter in word:
        if letter in mapping:
            password = password + mapping.get(letter)
        else:
            password = password + letter
    

    您还忘记!在末尾添加 。

    最后结果:

    mapping = {
        'i': '1',
        'a': '@',
        'm': 'M',
        'B': '8',
        's': '$',
    }
    
    word = "mypassword"
    password = ""
    
    for letter in word:
        if letter in mapping:
            password = password + mapping[letter]
        else:
            password = password + letter
    password += "!"
    
    print(password)
    

    进一步简化:

    for letter in word:
        password += mapping.get(letter, letter)
    password += "!"
    

    更进一步的理解!:

    password = ''.join(mapping.get(l, l) for l in word) + "!"
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看