繁体   English   中英

Python 3 - 如何创建允许用户在输入密码时同时输入字母和数字的代码

[英]Python 3 - How to create a code that allows the user to input both letters and numbers when entering their password

我对 python 非常陌生,并且已经分配了作业,我的教授希望我们在用户输入他们的密码(必须是数字)登录时创建一个循环。代码必须只允许 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

我目前遇到的问题是,如果用户输入一个字母,我会收到此错误消息(我输入了“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'

你必须改变两件事:

首先,您需要将引脚存储为字符串而不是 integer。 您可以通过将其括在单引号或双引号中来执行此操作:

original_pin = "1122"  # or '1122'

其次,您需要删除input() int() ) ,因为这会将用户的输入转换为 integer。

因此,如果您希望引脚为"1122d" ,代码将如下所示:

original_pin = "1122d"

count=0

while count < 3:

    secret_pin = input('Enter Your Pin: ')

    if secret_pin == original_pin:

        print('DOOR UNLOCKED!!')
        break

    else:
        print('WRONG PIN!! (TRY AGAIN!)')
        count += 1

重新编辑:“必须将用户锁定 10 秒(如果密码错误)”

您可以通过调用time.sleep(10)来完成此操作,这会导致程序在继续之前等待 10 秒。 因此添加的最终代码如下所示:

import time  # so we can call time.sleep()

original_pin = "1122d"

count=0

while count < 3:

    secret_pin = input('Enter Your Pin: ')

    if secret_pin == original_pin:

        print('DOOR UNLOCKED!!')
        break

    else:
        print('WRONG PIN!! (TRY AGAIN!)')
        count += 1
        time.sleep(10)  # timeout for 10 seconds

删除第 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 = 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

不要将您的输入转换为 integer。 您仍然可以使用两个字符串执行相同的比较语句,就像您目前使用两个整数一样。

pin_pass = input("Put pin in")

correct = "1234"
count = 0

if pin_pass == correct:
    print("Correct")
else:
    count += 1
    print("Wrong")
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM