如何获取我在 python 中创建的字典中的值,而不是字符串?

Posted

技术标签:

【中文标题】如何获取我在 python 中创建的字典中的值,而不是字符串?【英文标题】:How do I get the values in my dictionary that I have created in python, to be used, instead of the strings? 【发布时间】:2019-04-24 15:08:00 【问题描述】:

以下是我的代码的缩短版本,没有经过所有验证。我正在编写一个程序,通过最后查看他们的总分来告诉用户他们的密码有多强。如果密码连续有 3 个字母,并且这三个字母在“qwerty”键盘上也相邻,那么它们的总分会下降 5。我创建了一个字典来分配每个字母给键盘一个值,然后如果密码中连续的2个字母相差1,则表示键盘上连续有3个字母。 但是,我不断收到一个

ValueError: invalid literal for int() with base 10:

我真的不知道如何使用字典,所以非常感谢任何帮助!

password=str(input("Please enter a password with more than 4 digits, and it should only be letters:"))
score=0
keyboard='Q':1,'q':1,'W':2,'w':2,'E':3,'e':3,'R':4,'r':4,'T':5,'t':5,'Y':6,'y':6,'U':7,'u':7,'I':8,'i':8,'O':9,'o':9,'P':10,'p':10,'A':12,'a':12,'S':13,'s':13,'D':14,'d':14,'F':15,'f':15,'G':16,'g':16,'H':17,'h':17,'J':18,'j':18,'K':19,'k':19,'L':20,'l':20,'Z':22,'z':22,'X':23,'x':23,'C':24,'c':24,'V':25,'v':25,'B':26,'b':26,'N':27,'n':27,'M':28,'m':28
for n in range ((len(password))-2):
    if (int(password[n+1])-int(password[n])==1) and (int(password[n+2])-int(password[n+1]==1)):
        score=score-5
        print(score)

【问题讨论】:

您的意思是检查您的字典中的值吗?现在,您在第 5 行将字符直接转换为 int,而无需通过您的 dict 将它们映射到一个数字,这会给您所看到的错误。 【参考方案1】:

如果您的password 输入只有字母,那么下面这行将引发错误。

int(password[n+1])

int(password[n]) 和你所有其他的 int 演员也将如此。原因是您将非数字字符转换为int。这就是导致您看到的错误的原因。

相信,你的意图就是这样做

int(keyboard[password[n+1]]) - int(keyboard[password[n]]) == 1

但是由于您的 keyboard 字典的值已经是 int 的,因此不需要在 if 语句中进行 int 强制转换。

keyboard[password[n+1]] - keyboard[password[n]] == 1

【讨论】:

以上是关于如何获取我在 python 中创建的字典中的值,而不是字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何清除在 Xcode 中创建的 plist 中的数据?

如何收听我在 Python 中创建的音频?

如何将数据框中的值分配给在另一个数据框中创建的十分位数?

Java中的Hashtable如何根据值获取键?

如何使用 javascript 中的 mouseover 事件删除我在 javascript 中创建的 DOM 节点?

在python中操作DataFrame特定列中单个字符的方法?