如何获取我在 python 中创建的字典中的值,而不是字符串?
How do I get the values in my dictionary that I have created in python, to be used, instead of the strings?
下面是我的代码的简化版本,没有进行所有验证。我正在编写一个程序,通过在最后查看他们的总分来告诉用户他们的密码有多强。如果密码有 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)
如果您的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
下面是我的代码的简化版本,没有进行所有验证。我正在编写一个程序,通过在最后查看他们的总分来告诉用户他们的密码有多强。如果密码有 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)
如果您的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