Я пытаюсь сделать угадывание пароля, используя python для проекта. Однако я застрял. Вот код, который я использую в настоящее время.Проблема с Python с глобальным?
dictfile = open('c:/PC/wordsEn.txt', 'r')
DictionaryWords = dictfile.readlines()
Password = 'zygote10'
Intadd = 0
def Number_Finder():
for x in DictionaryWords:
global Intadd
print(x .replace("\n", str(Intadd)))
if x .replace("\n", str(Intadd)) == Password:
print("Congrats, you found the password!")
break
else:
while Intadd < 10:
Intadd += 1
print(x.replace("\n", " ") + str(Intadd))
def Password_Tester():
for x in DictionaryWords:
if x .replace("\n", "") == Password:
print('Found it!', x, 'is the password!')
break
else:
Number_Finder()
Password_Tester()
Когда я запускаю код, я хочу, чтобы увидеть что-то вроде этого:
apple1
apple2
apple3
apple4
apple5
apple6
apple7
apple8
apple9
apple10
ate1
ate2
и так далее. (В основном я хочу, чтобы код запускал слово, каждый раз меняя число, пока число в нем не достигнет 10, затем измените слово, а затем повторите этот процесс).
Однако, когда я запускаю код, я вижу это:
apple1
apple2
apple3
apple4
apple5
apple6
apple7
apple8
apple9
apple10
ate10
aviation10
(После того, как яблоко, слова не повторять процесс перехода от 1 до 10, а слово просто меняется с числом 10 после него)
Я думаю, что проблема кроется в глобальной команде. Я довольно новичок в Python, поэтому мне жаль, если это очевидное решение. Спасибо, парни!
Итак, где вы настройки 'Intadd' обратно в 0, снова? Вы ожидали, что он вернется к 0 самостоятельно, когда функция закончится? Это не так, как работают глобальные группы. –
Какое содержимое 'wordsEn.txt'? Возможно, было бы полезно написать упрощенную версию этого кода, которая работает с небольшим количеством строк, содержащихся в списке глобальных переменных. – Tagc