2014-10-13 2 views
1

Мне нужна помощь в школьном проекте, который изменяет слабые пароли, чтобы иметь равное количество прописных и строчных букв.Как изменить элементы списка в верхнем регистре?

Я попытался с помощью for петлю, чтобы предназначаться каждую букву между 0 и половину длины:

lengthhalf=length/2 
if upcount != lowcount: 
    str.lower(psswd[0:lengthhalf]) 

    print psswd 

Я также целевой lengthhalf+1 к length -

str.upper(psswd[lengthhalf+1::length]) 

Это ничего не влияет , хоть.

+0

как вы хотите изменить эти пароли? – Kasramvd

+0

В каких случаях вы должны иметь дело? Предположите ли вы, что пароль изначально запускает все прописные, все строчные, некоторые комбинации, включая числа/символы ...? – jonrsharpe

+0

Что вы хотите, когда в пароле есть неравное количество символов ... или нечетное количество писем ... или вообще никаких писем? – martineau

ответ

1
psswd = psswd[:lengthhalf].lower() + psswd[lengthhalf:].upper() 

должно делать то, что вы, возможно, имели ввиду.

Я не уверен, что вы хотите делать с паролями нечетной длины.

Проблемы в коде были:

  • результат ниже()/верхний() не был назначен ни к чему, так что было потеряно
  • some_list [начать :: шаг], например, с двумя colons, но последним значением является не исходный код
+0

Это нормально, если пароль - все альфа, но это не обязательно даст соотношение 50:50, если пароль содержит символы не альфы. –

+0

не чередующиеся колпачки и нижние – Joop

0

Здесь могут быть разные интерпретации вашей спецификации, но следующее должно сделать трюк путем 1-го разбиения на два списка с альтернативными элементами, а затем чередовать они снова вместе:

pwd = "absdef" 
pwd = list(pwd) 
l1 = pwd[::2] 
l1 = [c.upper() for c in l1] 
l2 = pwd[1::2] 
l2 = [c.lower() for c in l2] 
new_pwd_list = [val for pair in zip(l1, l2) for val in pair] 
print "".join(new_pwd_list) 

, вероятно, не будет обрабатывать не числовые символы в пути, что бы имеет смысл, но это gices вы чередуя случай.

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