【发布时间】:2021-09-30 09:49:19
【问题描述】:
我正在尝试使用 python 制作一个 OTP 生成器和验证器。但是我没有得到想要的输出,即使我输入了错误的 OTP,它也会考虑第一个打印语句并打印“欢迎先生”。这不仅发生在这个项目上——每个项目都会发生在我身上。我在这里做错了什么?
这是我的代码:
import math, random
import smtplib
def sendEmail(to, content):
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login('your mail', 'your password')
server.sendmail('your mail', to, content)
server.close()#please allow less secure app to access this
# function to generate OTP
def generateOTP() :
# Declare a digits variable
# which stores all digits
digits = "0123456789"
OTP = ""
# length of password can be chaged
# by changing value in range
for i in range(4) :
OTP += digits[math.floor(random.random() * 10)]
return OTP
# Driver code
if __name__ == "__main__" :
#print(generateOTP())
content = generateOTP()
to = 'your mail'
sendEmail(to, content)
print('mail sent !!')
userinput = input('enter your otp')
if (userinput!= generateOTP()):
print('welcome sir')
else:
print('otp not recognized please enter valid otp!')
【问题讨论】:
-
您正在
generateOTP中生成一个随机字符串,您认为您输入的输入是否正确? -
您正在检查是否不相等(用户输入!= generateOTP)。但这里的逻辑是什么?您生成一个新的 OTP 并与输入进行比较。我不明白你的代码的目的
-
content不会等于if语句中generateOTP的返回值,会在那里生成一个新的OTP