このコードでは、文字列に数字(isdigit
)または小文字(islower
)のみが含まれているかどうかを確認するisdigit()
およびislower()
が使用されます。数字がある場合でも、なぜislowerは常にtrueを返しますか?
パスワードによって与えられた文字列は、文字列はそれがないだけ文字が含まれている場合、文字列が数字のみか文字だけが含まれている場合、値がtrueと印刷数字だけを返すべき数字または小文字のみが含まれている場合。
しかしパスワードを例"12345qwerty"
のために数字と文字が含まれている場合、それは偽の値を返し、それは数字または文字を5ポイントを追加言い含まれているかどうかを確認するためにelif
文の上に移動し、まだそれならばなければなりませんしないでくださいもう一度試してくださいしかしそれはありません。パスワード"12345qwerty"
には文字と数字の両方が含まれており、falseとして返されるため、値はTrueとして返され、意味のないif
文の引数が表示されます。文字列には大文字が存在しないと、少なくともひとつの小文字がある真
import re
password = input("")
if password.isdigit():
print("only numbers ")
elif re.search("[1-9]", password):
print("thats 5 points")
else:
print("try again")
if password.islower():
print("only letters ")
elif re.search("[a-z]", password):
print("thats 5 points")
else:
print("try again")
ああ、私は感謝の人を参照してください – Zohir