Я новичок в python и многого не знаю, но я попытался создать программу, которая видит, насколько быстро она может угадать строку в этом случае пароль. Я попытался создать отдельную переменную для каждой буквы, сделав цикл, который устанавливает переменную. (Я добавил печатную букву 1 ... в конце, чтобы я мог видеть, работает ли она). Затем, когда я пошел проверять ее, я получил эту ошибку.

буква [x] = пароль [x - 1 :-( len (пароль) -1)]

NameError: имя 'буква' не определено

print "Password guesser"

password = raw_input('Enter Password (1-30 carechters only): ')
passwordLength= len(password)

for x in range(0,passwordLength):
    letter[x] = password[x - 1:-(len(password)-1)]

print letter1
print letter2
print letter3   
0
T-Man58 23 Дек 2016 в 04:52
Что, черт возьми, такое letter, letter1, letter2 и letter3? Они не определены в коде ... прочтите ошибку
 – 
Andrew Li
23 Дек 2016 в 04:58
letter не объявляется до того, как вы попытаетесь назначить ему. Для такого задания на работу письмо должно быть списком длиной не менее x + 1 пунктов.
 – 
Paul Rooney
23 Дек 2016 в 05:01
Когда я пытался добавить letter = '', чтобы объявить его, прежде чем он выдал мне эту ошибку:
 – 
T-Man58
23 Дек 2016 в 05:06
Это даст мне TypeError: объект 'str' не поддерживает назначение элемента
 – 
T-Man58
23 Дек 2016 в 05:07
Он не будет работать со строкой. строки неизменяемы, вы не можете изменять значения символов. Вот почему это должен быть список. Вы также можете изменить его на letter.append(password[x - 1:-(len(password)-1)]), где буква определяется как letter = [] перед вашим циклом. Если вы можете получить правильное значение в своем списке, вы можете join превратить его в строку в конце.
 – 
Paul Rooney
23 Дек 2016 в 05:08

1 ответ

Лучший ответ

Поскольку вы назначаете буквы с помощью словарного синтаксиса, вы можете объявить переменную letter как словарь: letter = {}, а затем вывести ее как словарь. Это может привести вас в том направлении, в котором вы хотите двигаться:

letter = {}

for x in range(passwordLength):
    letter[x] = password[x - 1:-(passwordLength-1)]

print letter[0]
print letter[1]
print letter[2]  
0
chickity china chinese chicken 23 Дек 2016 в 05:09
Хорошо, это сработало, но когда я ввел строку, она выводила только первую букву, а остальные просто пустые: /
 – 
T-Man58
23 Дек 2016 в 05:17
Это просто из-за присвоения, которое вы даете букве, эти другие значения не устанавливаются. может ты хочешь letter[x] = password[x]? но это будет только копирование строки пароля в буквенную строку ..
 – 
chickity china chinese chicken
23 Дек 2016 в 05:19
О да, теперь это работает, мне просто нужно было добавить -1 к x, но теперь все в порядке. Благодарность
 – 
T-Man58
23 Дек 2016 в 05:22