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

问题:

许多用户创建的密码都很简单,很容易猜测.写一个

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

例如:如果输入为:

mypassword

输出为:

Myp@$$word!

提示:Python字符串是不可变的,但支持字符串连接.

代码:

word = input()
password = ()


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

print(password)

输入:线程

推荐答案

首先,您将密码初始化为错误的变量 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) + "!"

Python相关问答推荐

沿着数组中的轴计算真实条目

将图像拖到另一个图像

Julia CSV for Python中的等效性Pandas index_col参数

在Mac上安装ipython

SQLAlchemy Like ALL ORM analog

什么是最好的方法来切割一个相框到一个面具的第一个实例?

用渐近模计算含符号的矩阵乘法

在matplotlib中使用不同大小的标记顶部添加批注

干燥化与列姆化的比较

30个非DATETIME天内的累计金额

如何在一组行中找到循环?

有没有办法在不先将文件写入内存的情况下做到这一点?

PySpark:如何最有效地读取不同列位置的多个CSV文件

与同步和异步客户端兼容的Python函数

如何获取给定列中包含特定值的行号?

递归链表反转与打印语句挂起

如何从一个维基页面中抓取和存储多个表格?

如何删除剪裁圆的对角线的外部部分

将时间序列附加到数据帧

基于2级列表的Pandas 切片3级多索引