#code
testcases=int(input())
while testcases!=0:
s=input()
lower,upper,numeric=0,0,0
for i in s:
if ord(i)>=49 and ord(i)<=57:
numeric+=1
elif ord(i)>=65 and ord(i)<=90:
upper+=1
elif ord(i)>=97 and ord(i)<=122:
lower+=1
if(upper>=1 and lower>=1 and numeric>=1):
print("YES")
else:
print("NO")
testcases-=1问题是:给定一个字符串,我必须说明字符串是否有效。
要使字符串成为有效的密码,需要完全填充以下内容:1.至少有一个大写字母2.至少一个小写字母3.至少一个数字。
如果这是一个有效的pasword打印“是”,则打印"NO“
我无法理解为什么我得到“错误的答案”在提交在GFG。当我运行自定义测试用例时,我得到了想要的结果,但在提交时,它显示了“错误的答案”。有人能帮忙吗,我的密码出什么问题了?
我可以弄清楚,但是gfg的ide没有告诉错误号码背后的原因,它只是说错误的answer..how,我能找出吗?
制约因素:
1<=T<=10^4
1<=|S|<=4*10^5
所有tc的S之和不超过4*10^5
发布于 2022-07-14 13:59:25
你不是在检查零。为了避免这种错误,请使用字符,这样代码所做的事情就更清楚了。
错误的原因是反模式“幻数”。程序员应该避免在代码中直接写数字,因为人类很难理解代码,而且容易出错,就像这样。
testcases = int(input())
while testcases != 0:
s = input()
lower, upper, numeric = 0, 0, 0
for i in s:
if ord(i) >= ord("0") and ord(i) <= ord("9"):
numeric += 1
elif ord(i) >= ord("A") and ord(i) <= ord("Z"):
upper += 1
elif ord(i) >= ord("a") and ord(i) <= ord("z"):
lower += 1
if upper >= 1 and lower >= 1 and numeric >= 1:
print("YES")
else:
print("NO")
testcases -= 1发布于 2022-07-14 14:07:15
编辑:
我误读了测试案例部分,看到你想要测试多个.仍然将此代码留给任何认为有用的人:
您可以执行一个while True循环,然后在发生所需结果时执行break循环。这将停止双input(),因此您不必输入密码两次(就像在代码中所做的那样)。此外,如果使用isnumeric(), isupper(), and islower(),它看起来更干净:
while True:
s=input()
lower,upper,numeric=0,0,0
for i in s:
if i.isnumeric():
numeric+=1
elif i.isupper():
upper+=1
elif i.islower():
lower+=1
if(upper>=1 and lower>=1 and numeric>=1):
print("YES")
break
else:
print("NO")https://stackoverflow.com/questions/72981558
复制相似问题