2013-12-14 4 views
-3

Моей программой является силой пароля симулятора и всякий раз, когда я ввожу пароль, то всегда выводит оценку 1.Возникают проблемы с использованием .isupper()

def upper_case(): 
    points = int(0) 
    limit = 3 
    for each in pword: 
     if each.isupper(): 
      points = points + 1 
     if points > limit: 
      points = limit 
     else: 
      points = points + 0 
     return points 

pword = raw_input("ENTER: ") 
upper_case() 

points = 0 
points += upper_case() 

print points 
+2

Вы возвращаете точки из цикла for, поэтому он всегда возвращается после первого символа. – RemcoGerlich

+0

Отклоните свои «возвратные точки» на один уровень отступов. –

ответ

2

Вы возвращающийся points слишком рано, потому что вы с отступом слишком далеко. Удалить отступа:

def upper_case(): 
    points = int(0) 
    limit = 3 
    for each in pword: 
     if each.isupper(): 
      points = points + 1 
     if points > limit: 
      points = limit 
     else: 
      points = points + 0 
    return points 

Вы можете упростить это:

def upper_case(pword): 
    return min((sum(1 for each in pword if each.isupper()), 3)) 

где я изменил функцию, чтобы принять аргумент вместо того, чтобы использовать глобальный.

+0

Спасибо, очень много! ЭТО ПОМОЩИ! – USER1

+0

@ USER1 Если вы обратили внимание на свой последний идентичный вопрос, вам были представлены несколько совершенно правильных решений для оценки пароля, в том числе о том, как правильно перебирать, вычислять значение и возвращать его. –

Смежные вопросы