我正在尝试创建一个程序,在该程序中,您使用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 = "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
从代码strpw = int(input())
中的这一行,您将接受string
输入并将其转换为int
。这就是问题的根源。例如
取输入0111
,如果我们将其转换为int
,则它变为111
。而如果我们把它保持为string
,它仍然是0111
。
因此,您只需要将密码保持为字符串格式即可。