密码生成器Python列表 该程序应提示用户输入密码,但仅限于 允许使用某些字符。 def密码(z): n=0 w=0 a=0 b=['!'、'@'、'#'、'$'、'%'、'^'、'&'、'*'、'?'] c=['、'、'、':'、';'、'['、']'、'{'、'}'、'('、')'、'、'、'、'、'~'、'- ','=','+','_'] 对于ch in z: 如果有(c中的通道代表z中的通道): z=原始输入(“非法字符。请重试:”) 返回密码(z) 其他: 如果有(ch.isdigit()表示ch in z): n+=1 如果有(通道b代表通道z): w+=1 如果有(ch.isalpha()表示ch in z): a+=1 如果n==0或w==0或a==0: m=原始输入(“请至少使用一个字母、数字和特殊字符:\n”) 返回密码(m) 如果n>0,w>0,a>0: y=原始输入(“请重新键入密码:”) 如果y==z: 打印“密码确认” 打破 其他: y=原始输入(“密码不同。请创建新密码:”) 返回密码(y) z=原始输入('输入密码:') 打印密码(z)

密码生成器Python列表 该程序应提示用户输入密码,但仅限于 允许使用某些字符。 def密码(z): n=0 w=0 a=0 b=['!'、'@'、'#'、'$'、'%'、'^'、'&'、'*'、'?'] c=['、'、'、':'、';'、'['、']'、'{'、'}'、'('、')'、'、'、'、'、'~'、'- ','=','+','_'] 对于ch in z: 如果有(c中的通道代表z中的通道): z=原始输入(“非法字符。请重试:”) 返回密码(z) 其他: 如果有(ch.isdigit()表示ch in z): n+=1 如果有(通道b代表通道z): w+=1 如果有(ch.isalpha()表示ch in z): a+=1 如果n==0或w==0或a==0: m=原始输入(“请至少使用一个字母、数字和特殊字符:\n”) 返回密码(m) 如果n>0,w>0,a>0: y=原始输入(“请重新键入密码:”) 如果y==z: 打印“密码确认” 打破 其他: y=原始输入(“密码不同。请创建新密码:”) 返回密码(y) z=原始输入('输入密码:') 打印密码(z),python,for-loop,passwords,Python,For Loop,Passwords,更新:现在可以了。然而,我有点困惑它为什么会这样,因为我不知道为什么我需要把ch的any方法放在b中,因为我认为如果ch在b中意味着如果任何ch在列表b中。不管怎样,它现在起作用了 函数返回None,因为您根本没有return语句无是默认返回值。您的逻辑有些复杂,尤其是多余的递归,但我认为您可以通过简单地添加 This program is supposed to prompt the user to make a password, however only certain characte

更新:现在可以了。然而,我有点困惑它为什么会这样,因为我不知道为什么我需要把ch的any方法放在b中,因为我认为如果ch在b中意味着如果任何ch在列表b中。不管怎样,它现在起作用了

函数返回
None
,因为您根本没有
return
语句<代码>无是默认返回值。您的逻辑有些复杂,尤其是多余的递归,但我认为您可以通过简单地添加

This program is supposed to prompt the user to make a password, however only 
certain characters are allowed to be used. 
def password(z):
    n=0
    w=0
    a=0
    b=['!','@','#','$','%','^','&','*','?']
    c=['.',',',':',';','[',']','{','}','(',')','<','>','|','~','-
       ','=','+','_']
    for ch in z:
        if any(ch in c for ch in z):
            z=raw_input("Illegal characters. Please try again: ")
            return password(z)
        else:
            if any(ch.isdigit() for ch in z):
                n+=1
            if any(ch in b for ch in z):
                w+=1
            if any(ch.isalpha() for ch in z):
                a+=1
            if n==0 or w==0 or a==0:
                m=raw_input("Please use at least one letter, number, and special character: \n")
                return password(m)
            if n>0 and w>0 and a>0:
                y=raw_input("Please retype password: ")
            if y==z:
                print "Password confirmed"
                break
            else:
                y=raw_input("Not the same password. Please create a new password: ")
                return password(y)

z=raw_input('Enter a password: ')
print password(z)
到函数的底部


后续行动

我重温了这个。。。你的逻辑似乎有各种各样的问题

  • 你的缩进是错误的接近底部的循环;此代码无法执行
  • int()始终返回0。我想你想让我来这里
  • 检查每个字符是否为0,然后在“b”列表中,然后在“c”列表中。。。一旦你找到这三个密码,你就开始确认密码。这就是你想要的逻辑流程吗
还有

  • 单字母变量名的信息非常少。使用描述性的
  • 对于简单存在/不存在变量,请使用布尔值,而不是0和1。同样,这将使您的代码更易于阅读
  • 如果将
    b
    c
    更改为字符串,则代码将更易于阅读,并且您的
    in
    语句仍然有效

函数返回
None
,因为您根本没有
return
语句<代码>无是默认返回值。您的逻辑有些复杂,尤其是多余的递归,但我认为您可以通过简单地添加

This program is supposed to prompt the user to make a password, however only 
certain characters are allowed to be used. 
def password(z):
    n=0
    w=0
    a=0
    b=['!','@','#','$','%','^','&','*','?']
    c=['.',',',':',';','[',']','{','}','(',')','<','>','|','~','-
       ','=','+','_']
    for ch in z:
        if any(ch in c for ch in z):
            z=raw_input("Illegal characters. Please try again: ")
            return password(z)
        else:
            if any(ch.isdigit() for ch in z):
                n+=1
            if any(ch in b for ch in z):
                w+=1
            if any(ch.isalpha() for ch in z):
                a+=1
            if n==0 or w==0 or a==0:
                m=raw_input("Please use at least one letter, number, and special character: \n")
                return password(m)
            if n>0 and w>0 and a>0:
                y=raw_input("Please retype password: ")
            if y==z:
                print "Password confirmed"
                break
            else:
                y=raw_input("Not the same password. Please create a new password: ")
                return password(y)

z=raw_input('Enter a password: ')
print password(z)
到函数的底部


后续行动

我重温了这个。。。你的逻辑似乎有各种各样的问题

  • 你的缩进是错误的接近底部的循环;此代码无法执行
  • int()始终返回0。我想你想让我来这里
  • 检查每个字符是否为0,然后在“b”列表中,然后在“c”列表中。。。一旦你找到这三个密码,你就开始确认密码。这就是你想要的逻辑流程吗
还有

  • 单字母变量名的信息非常少。使用描述性的
  • 对于简单存在/不存在变量,请使用布尔值,而不是0和1。同样,这将使您的代码更易于阅读
  • 如果将
    b
    c
    更改为字符串,则代码将更易于阅读,并且您的
    in
    语句仍然有效

函数不返回任何内容的原因是函数成功时不返回任何内容


此外,即使添加了return语句,对整数的检查也不正确。检查这一点的一个正确方法是ch.isdigit()

函数返回None的原因是函数成功时不返回任何内容


此外,即使添加了return语句,对整数的检查也不正确。检查这一点的一个正确方法是ch.isdigit()

问题中的代码缩进不正确(如果y==z,则从
开始),它不会在Python解释器中运行。请在问题中包含您正在使用的确切代码。此函数有太多问题,您可能应该从头重写它,而不是尝试修复它。您对递归和循环的使用非常混乱。你在这个循环中做的太多了。一个简单的密码检查函数应该不需要超过3个缩进,而且绝对不需要递归。您所问的代码缩进不正确(如果y==z,则从
开始),它不会在Python解释器中运行。请在问题中包含您正在使用的确切代码。此函数有太多问题,您可能应该从头重写它,而不是尝试修复它。您对递归和循环的使用非常混乱。你在这个循环中做的太多了。一个简单的密码检查函数应该不需要超过3个缩进,而且它肯定不需要递归。