Python 3-如何创建一个代码,允许用户在输入密码时同时输入字母和数字
我对python非常陌生,教授给我布置了一个家庭作业,让我们在用户输入pin(必须是数字)登录时创建一个循环。代码必须只允许3次尝试,并且必须将用户锁定10秒(如果PW错误),然后再循环允许他们再次尝试登录 到目前为止,我已经成功地创建了允许3次尝试的基本代码Python 3-如何创建一个代码,允许用户在输入密码时同时输入字母和数字,python,python-3.x,python-requests,Python,Python 3.x,Python Requests,我对python非常陌生,教授给我布置了一个家庭作业,让我们在用户输入pin(必须是数字)登录时创建一个循环。代码必须只允许3次尝试,并且必须将用户锁定10秒(如果PW错误),然后再循环允许他们再次尝试登录 到目前为止,我已经成功地创建了允许3次尝试的基本代码 original_pin = 1122 count=0 while count < 3: secret_pin = int(input('Enter Your Pin: ')) if secret_pin =
original_pin = 1122
count=0
while count < 3:
secret_pin = int(input('Enter Your Pin: '))
if secret_pin == original_pin:
print('DOOR UNLOCKED!!')
break
else:
print('WRONG PIN!! (TRY AGAIN!)')
count += 1
original_pin=1122
计数=0
当计数小于3时:
secret_pin=int(输入('输入您的pin:'))
如果机密密码=原始密码:
打印('车门已解锁!!')
打破
其他:
打印('错误的PIN!!(重试!))
计数+=1
我目前遇到的问题是,如果用户输入一封信,我会收到这个错误消息(我输入了“d”),我不确定在第7行中要更改什么,以便可以接受这些信作为输入
Traceback (most recent call last):
File "C:/Users/Indias/AppData/Local/Programs/Python/Python39/test.py", line 7, in <module>
secret_pin = int(input('Enter Your Pin: '))
ValueError: invalid literal for int() with base 10: 'd'
回溯(最近一次呼叫最后一次):
文件“C:/Users/Indias/AppData/Local/Programs/Python/Python39/test.py”,第7行,在
secret_pin=int(输入('输入您的pin:'))
ValueError:基数为10的int()的文本无效:“d”
删除第7行的“int(”,它告诉你的程序只接受整数,不接受字母,所以你抛出了一个错误。这个错误只是告诉你字母本质上不是整数
original_pin = "1122d" #added a 'd' and made the variable a string!
count=0
while count < 3:
secret_pin = input('Enter Your Pin: ') #removed 'int'
if secret_pin == original_pin:
print('DOOR UNLOCKED!!')
break
else:
print('WRONG PIN!! (TRY AGAIN!)')
count += 1
original_pin=“1122d”#添加了一个“d”,并将变量设置为字符串!
计数=0
当计数小于3时:
secret_pin=input('Enter Your pin:')#删除了'int'
如果机密密码=原始密码:
打印('车门已解锁!!')
打破
其他:
打印('错误的PIN!!(重试!))
计数+=1
您必须更改两件事:
首先,您需要将pin存储为字符串而不是整数。您可以将其括在单引号或双引号中:
original_pin = "1122" # or '1122'
其次,您需要删除int()
周围的input()
,因为这会将用户的输入转换为整数
因此,如果希望pin为“1122d”
,则代码如下所示:
original\u pin=“1122d”
计数=0
当计数小于3时:
密码=输入('输入密码:')
如果机密密码=原始密码:
打印('车门已解锁!!')
打破
其他:
打印('错误的PIN!!(重试!))
计数+=1
重新编辑:“必须锁定用户10秒(如果PW错误)”
您可以通过调用time.sleep(10)
来实现这一点,这会导致程序在继续之前等待10秒。因此,添加该命令的最终代码如下所示:
导入时间#这样我们就可以调用time.sleep()
原始pin=“1122d”
计数=0
当计数小于3时:
密码=输入('输入密码:')
如果机密密码=原始密码:
打印('车门已解锁!!')
打破
其他:
打印('错误的PIN!!(重试!))
计数+=1
时间。睡眠(10)#超时10秒
在输入数据时使用错误处理,因为用户可以进行任何输入。代码可能会引发错误和崩溃
original_pin = 1122
count=0
while count < 3:
try:
secret_pin = (input('Enter Your Pin: '))
except ValueError:
print("Enter Digits only")
finally:
if secret_pin == str(original_pin):
print('DOOR UNLOCKED!!')
break
else:
print('WRONG PIN!! (TRY AGAIN!)')
count += 1
original_pin=1122
计数=0
当计数小于3时:
尝试:
密码=(输入('输入密码:'))
除值错误外:
打印(“仅输入数字”)
最后:
如果机密密码==str(原始密码):
打印('车门已解锁!!')
打破
其他:
打印('错误的PIN!!(重试!))
计数+=1
不要将输入转换为整数。您仍然可以使用两个字符串执行相同的比较语句,就像您当前使用的两个整数一样
pin_pass = input("Put pin in")
correct = "1234"
count = 0
if pin_pass == correct:
print("Correct")
else:
count += 1
print("Wrong")
original_pin=1122
计数=0
当计数小于3时:
secret_pin=input(“输入pin:)#删除int
尝试:
secret_pin=int(secret_pin)#将输入转换为int
除:
打印(“输入整数值”)#如果不是,则打印原因
“”“正在检查secret\u pin是否为int,secret\u pin==原始\u pin”“”
如果isinstance(secret_pin,int)和secret_pin==原始_pin:
打印(“车门已解锁!!”)
打破
其他:
打印(“PIN错误!!(重试!)”)
计数+=1
original_pin = 1122
count = 0
while count < 3:
secret_pin = input("Enter Your Pin: ")#remove int
try:
secret_pin = int(secret_pin)#convert input to int
except:
print("Enter Integer Value")#if not then print reason
"""Checking if secret_pin is int. and secret_pin == original_pin"""
if isinstance(secret_pin, int) and secret_pin == original_pin:
print("DOOR UNLOCKED!!")
break
else:
print("WRONG PIN!! (TRY AGAIN!)")
count += 1