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感谢您的检查!