微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果密码以数字开头,是否有更简单的方法来重新生成密码?

如何解决如果密码以数字开头,是否有更简单的方法来重新生成密码?

我正在尝试构建这个非常简单的“密码生成器”,我想知道如果密码以整数开头,是否有更简单的方法生成密码

choices = string.ascii_letters + string.digits

randomPass = random.sample(choices,length)

password = "".join(randomPass)
password1 = "".join(randomPass)

#checks password

if password[0].isdigit():
  print("password started with number generating another password...")

  if password1[0].isdigit():
    print("started with a number again,trying again...")

  else:
    print(password1)

else:
  print(password)

我这样做的方式根本没有效率,无论我这样做多少次,我仍然有机会在开头生成一个带有数字的密码,但我确信使用循环会消除数字可能是密码中的第一个字符,这会让生活变得更轻松,我只是不知道如何,有人可以帮忙吗?

解决方法

代码的直接修复是循环:

while password[0].isdigit():
    print("password started with number generating another password...")
    password = "".join(random.sample(choices,length))

然而,更好的是首先构造一个合法的密码:仅从字母中获取第一个字符:

choices = string.ascii_letters + string.digits

first_letter = random.choice(string.ascii_letters)
randomPass = first_letter + ''.join(random.sample(choices,length-1))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。