Python 四位密码查找器

Python four-digit password finder

我正在尝试创建一个程序,您可以在其中输入 4 位或 3 位的数字密码,并且 for 循环总是将“i”增加 1,直到达到密码的数字,所有这些都有效,但是如果例如,我写 0001 for 循环进入无穷大,因为它从 0 而不是从 0000 开始,而如果我写 1234,密码是 1234 我该怎么做才能确保:0000、0001、0011、0111 不使for循环去无穷大但是0000或0001等

# import only system from os
from os import system, name
  
# define our clear function
def clear():
  
    # for windows
    if name == 'nt':
        _ = system('cls')
  
    # for mac and linux(here, os.name is 'posix')
    else:
        _ = system('clear')

strpw = input()

#check if the number is 4-digit or 3-digit
if len(strpw) <= 4 and len(strpw) >= 3:
    i = 0
    #add 1 to i until i equals strpw
    while i != strpw:
        print(i)
        clear()
        i = i + 1
        if str(i) == strpw:
            print("the password is: " + str(i))
            break
else:
    print("the password is too short or too long")

从代码 strpw = int(input()) 的这一行开始,您正在获取 string 输入并将其转换为 int。这导致了问题。 例如

如果我们将输入 0111 转换为 int,它将变为 111。而如果我们将它保持为 string,它仍然是 0111

因此您只需将密码保留为字符串格式即可。

您可以将密码保持为整数。当您需要显示它时,才将其转换为所需的字符串格式。这将简化一切。一个最小的例子:

strpw = "0003"

pass_length = len(strpw)
pw = int(strpw)

i = 0

while i != pw: # keep as int for comparint and incrementing
    # convert to string for printing
    print(str(i).zfill(pass_length))
    i += 1

打印:

0000
0001
0002