首先,您将密码初始化为错误的变量 Select .password = ()
将密码设置为元组.try 向元组变量添加字符将导致异常:
>>> 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) + "!"