[英]How to write an input asking the user to type using both letters and numbers?
[英]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.