用Python打印函数输出

时间:2019-02-01 03:03:10

标签: python

我正在尝试调用两个函数:randompassword()validPassword()randompassword()函数向用户返回随机密码。 validPassword()函数检查密码是否在2到8个字符之间。我正在尝试创建使用这两个功能的第三个程序来生成随机密码,然后检查密码是否有效。如果不是,程序应再次运行该程序并跟踪其运行了多少次。

#EX7P1
import string
import random
import sys

from ex7p1 import randompassword
from ex7p2 import validPassword
count = 0
def main():
    def randompassword():
        while password != 'true':
            count = count + 1
            print ("Hello!", password)
            print (count)


main()   

这些是功能所在的程序。

#EX7P1
import string
import random
import sys

def randompassword(): #function randompassword
    password = ''
    chars = string.ascii_uppercase + string.ascii_lowercase + string.digits
    size = random.randint(7, 10) #set range from 7 to 10
    for x in range(size):
        y = random.randint(33,126)
        password += chr(y)
    return password

这是两个单独的程序。

from ex7p1 import randompassword
password = randompassword()
def validPassword(password):
    if len(password) >= 8:
        print("true")
        return True
    print("false")
    return False
validPassword(password)

1 个答案:

答案 0 :(得分:0)

哦,男孩,这段代码我看错了很多……

1)可以很容易地将它们组合成一个脚本,如下所示,这使整个过程变得不太混乱。

2)您在字符串上调用方法isalnum(),并返回TrueFalse ...这两个值都不会大于或等于2。 >

3)就个人而言,我喜欢使用尽可能少的填充变量。您可以看到,在random_password()中,您可以取出y并将呼叫随机放在下一行

4)为什么要浪费时间测试密码至少为8个字符???只需将其更改为仅生成至少8个字符的密码即可,如下所示。

5)您的代码中有未使用的导入和变量。如果您将它们取出来(IDE是您的朋友),您的代码将更加简单明了。

6)您的变量名应该比在任何地方都使用password更具体。当您尝试重复使用代码时,这将使调试变得更容易,并且在几个月/几年后变得更容易阅读。

7)我还调整了以122结尾的ascii代码,以消除没人想要输入密码的奇怪括号

import random


def random_password():
    generated_password = ''
    for x in range(random.randint(8, 13)):
        generated_password += chr(random.randint(33, 122))
    return generated_password


def validate_password(password_being_tested):
    if password_being_tested.isalnum():
        return True
    else:
        return False


if __name__ == '__main__':
    count = 0
    while True:
        count += 1
        password = random_password()
        test = validate_password(password)
        if test:
            break
    print("It took {} tries to make a password".format(count))
    print("Resulting password was: '{}'".format(password))

此脚本在我的计算机上进行22次尝试后生成了“ 7nLGxDFeqf”,这对我来说似乎是一个合理且随机的密码!