Python 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 =

我对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:

        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