Python 为什么不';我不能得到输出吗

Python 为什么不';我不能得到输出吗,python,Python,此代码用于检查用户名是否有效。即使调用该函数,也不会得到任何输出 """ for the password to be valid; must have only 10 characters have at least 1 uppercase letters must have 6 lowercase letters others must be numeric """ ucase=0 lcase=0 num=0 #length

此代码用于检查用户名是否有效。即使调用该函数,也不会得到任何输出

"""
for the password to be valid;
 must have only 10 characters
 have at least 1 uppercase letters
 must have 6 lowercase letters
 others must be numeric
"""
ucase=0
lcase=0
num=0
#length check
def lencheck():
    global length
    length=len(uname)

#Ucase check
def uppercase():
    for x in range(length):
        if uname[x]>='A' or  uname<='Z':
            global ucase
            ucase=ucase+1

#Lcase check
def lowercase():
    for x in range(length):
        if uname[x]>='a' or uname[x]<='z':
            global lcase
            lcase=lcase+1

#numeric check
def numeric():
    for x in range(length):
        if (uname[x])>='0' or (uname[x])<='9':
            global num
            num=num+1

#main program
def main():
    lencheck()
    if length==10:
        uppercase()
        lowercase()
        numeric()
        numcheck=length-(ucase+lcase)
        if ucase>=1 and lcase>=6 and num==numcheck:
            print ("username valid")
            valid=True
            return valid
    else:
        valid=False
        print("username invalid")
        return valid

uname=str(input("enter username:"))
main() 
“”“
密码是否有效;
必须只有10个字符
至少有1个大写字母
必须有6个小写字母
其他必须是数字
"""
ucase=0
lcase=0
num=0
#长度检查
def lencheck():
全局长度
长度=长度(uname)
#Ucase检查
def大写()
对于范围内的x(长度):
如果uname[x]>='A'或uname='A'或uname[x]='0'或(uname[x])=1且lcase>=6且num==numcheck:
打印(“用户名有效”)
有效=真
返回有效
其他:
有效=错误
打印(“用户名无效”)
返回有效
uname=str(输入(“输入用户名:”)
main()

我用几个条目尝试了您的代码,至少在给定的情况下,它正确地输出了结果。
但是,问题是,如果ucase>=1和lcase>=6且num==numcheck:
则嵌套条件缺少
else:
为了避免这种情况,最好在函数上只有一个退出点(return)

"""
for the password to be valid;
 must have only 10 characters
 have at least 1 uppercase letters
 must have 6 lowercase letters
 others must be numeric
"""
ucase=0
lcase=0
num=0
#length check
def lencheck():
    global length
    length=len(uname)

#Ucase check
def uppercase():
    for x in range(length):
        if uname[x]>='A' or  uname<='Z':
            global ucase
            ucase=ucase+1

#Lcase check
def lowercase():
    for x in range(length):
        if uname[x]>='a' or uname[x]<='z':
            global lcase
            lcase=lcase+1

#numeric check
def numeric():
    for x in range(length):
        if (uname[x])>='0' or (uname[x])<='9':
            global num
            num=num+1

#main program
def main():
    lencheck()
    if length==10:
        uppercase()
        lowercase()
        numeric()
        numcheck=length-(ucase+lcase)
        if ucase>=1 and lcase>=6 and num==numcheck:
            print ("username valid")
            valid=True
            return valid
    else:
        valid=False
        print("username invalid")
        return valid

uname=str(input("enter username:"))
main() 
def main():
valid=False#除非满足所有条件,否则将保持为False
伦切克()
如果长度==10:
大写()
小写()
数字()
numcheck=长度-(ucase+lcase)
如果ucase>=1,lcase>=6,num==numcheck:
有效=真
打印(“用户名%s%”(如果有效,则为“有效”,否则为“无效”)
返回有效

另外,在其他函数中将所有
更改为

我用几个条目尝试了您的代码,至少在给定的情况下,它会正确输出结果。
但是,问题是,如果ucase>=1和lcase>=6且num==numcheck:
则嵌套条件缺少
else:
为了避免这种情况,最好在函数上只有一个退出点(return)

"""
for the password to be valid;
 must have only 10 characters
 have at least 1 uppercase letters
 must have 6 lowercase letters
 others must be numeric
"""
ucase=0
lcase=0
num=0
#length check
def lencheck():
    global length
    length=len(uname)

#Ucase check
def uppercase():
    for x in range(length):
        if uname[x]>='A' or  uname<='Z':
            global ucase
            ucase=ucase+1

#Lcase check
def lowercase():
    for x in range(length):
        if uname[x]>='a' or uname[x]<='z':
            global lcase
            lcase=lcase+1

#numeric check
def numeric():
    for x in range(length):
        if (uname[x])>='0' or (uname[x])<='9':
            global num
            num=num+1

#main program
def main():
    lencheck()
    if length==10:
        uppercase()
        lowercase()
        numeric()
        numcheck=length-(ucase+lcase)
        if ucase>=1 and lcase>=6 and num==numcheck:
            print ("username valid")
            valid=True
            return valid
    else:
        valid=False
        print("username invalid")
        return valid

uname=str(input("enter username:"))
main() 
def main():
valid=False#除非满足所有条件,否则将保持为False
伦切克()
如果长度==10:
大写()
小写()
数字()
numcheck=长度-(ucase+lcase)
如果ucase>=1,lcase>=6,num==numcheck:
有效=真
打印(“用户名%s%”(如果有效,则为“有效”,否则为“无效”)
返回有效
另外,将其他函数中的所有
更改为

问题在于:

if ucase>=1 and lcase>=6 and num==numcheck:
如果我们将
qwertyuiop
作为随机输入,
num
为10,
numcheck
为-10,两者不相等,因此程序不会进入其中的代码块。 由于没有它的
else
块,程序退出
main
功能而没有任何输出

如果您想检查所提供的输入是否为数字,我建议您使用
.isdigit
,如果(uname[x])>='0'或(uname[x])问题在这里:

if ucase>=1 and lcase>=6 and num==numcheck:
如果我们将
qwertyuiop
作为随机输入,
num
为10,
numcheck
为-10,两者不相等,因此程序不会进入其中的代码块。 由于没有它的
else
块,程序退出
main
功能而没有任何输出


如果您想检查所提供的输入是否为数字,我建议您使用
.isdigit
,如果(uname[x])>='0'或(uname[x]),如果您限制大小写字符数和数字数,则它不是安全密码。您可以尝试
打印(ucase)
打印(lcase)
print(num)
main()
中进行调试,您会发现任何输入都是10。您的if语句当前匹配任何字符,例如
“A”(65)
等于
“A”
,小于
“z”(122)
,大于
“0”(48)
,因此所有变量都将+1。如果您限制大小写字符数和位数,则这不是安全密码。您可以尝试打印
(ucase)
print(lcase)
print(num)
在您的
main()
中进行调试,您会发现所有输入都是10。您的if语句当前匹配任何字符,例如
“A”(65)
等于
“A”
,小于
“z”(122)
,大于
“0”(48)
,因此所有变量都将+1。如果无效,您可能会忘记在编辑中删除
。此外,即使用户名有效,它似乎也会返回无效。@adamkwm感谢您的检查!如果无效,您可能会忘记在编辑中删除
。此外,即使用户名有效,它似乎也会返回无效。@adamkwm感谢您的检查!