Немного изменил ваш код. Я проверял пересечение множеств символов пароля и символов которые в нем должны быть.
import string
s1 = set(string.ascii_letters)
s2 = set(string.digits)
s3 = set(string.punctuation)
while True:
s = input('password >>> ')
if len(s) <= 5:
print("Short password")
elif not set(s).intersection(s3):
print('Not punctuation in password')
elif not set(s).intersection({'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}):
print('Not numbers in password')
else:
print('Good password')