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
我正在尝试创建一个程序,您可以在其中输入 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