![]() |
Not adding and assigning? - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Not adding and assigning? (/thread-13335.html) |
Not adding and assigning? - 00712411 - Oct-10-2018 *Newb post, once again* I was wondering why my code could not add and assign to a set variable. It seems that if the variable is outside a while True: loop, it cant add and assign. What is my mistake? I cannot seem to find what is wrong with it. Any help is greatly appreciated. import string import time chars = string.printable import sys number1 = 0 number2 = 0 number3 = 0 number4 = 0 number5 = 0 number6 = 0 number7 = 0 number8 = 0 number9 = 0 number10 = 0 number11 = 0 number12 = 0 number13 = 0 number14 = 0 number15 = 0 number16 = 0 number17 = 0 number18 = 0 number19 = 0 number20 = 0 number21 = 0 number22 = 0 number23 = 0 number24 = 0 char_list1 = chars[number1][0] char_list2 = chars[number2][0] char_list3 = chars[number3][0] char_list4 = chars[number4][0] char_list5 = chars[number5][0] char_list6 = chars[number6][0] char_list7 = chars[number7][0] char_list8 = chars[number8][0] char_list9 = chars[number9][0] char_list10 = chars[number10][0] char_list11 = chars[number11][0] char_list12 = chars[number12][0] char_list13 = chars[number13][0] char_list14 = chars[number14][0] char_list15 = chars[number15][0] char_list16 = chars[number16][0] char_list17 = chars[number17][0] char_list18 = chars[number18][0] char_list19 = chars[number19][0] char_list20 = chars[number20][0] char_list21 = chars[number21][0] char_list22 = chars[number22][0] char_list23 = chars[number23][0] char_list24 = chars[number24][0] pwattempts = 0 password = input("Enter the password to crack (Between 8 and 24 characters please):") y = len(password) while True: if 7 < y < 25: print("You have an acceptable amount of characters.") break; else: print("Error. Closure of program.") sys.exit(0) #To start at 000000: io = 0 print("Start") attempts = 0 while True: attempts = char_list1 + char_list2 + char_list3 + char_list4 + char_list5 + char_list6 + char_list7 + char_list8 pwattempts += 1 if attempts == password: io += 1 print("The password is" + attempts) break; else: print(attempts) if number2 == 100: number1 += 1 number2 = 0 number3 = 0 number4 = 0 number5 = 0 number6 = 0 number7 = 0 number8 = 0 elif number3 == 100: number2 += 1 number3 = 0 number4 = 0 number5 = 0 number6 = 0 number7 = 0 number8 = 0 elif number4 == 100: number3 += 1 number4 = 0 number5 = 0 number6 = 0 number7 = 0 number8 = 0 elif number5 == 100: number4 += 1 number5 = 0 number6 = 0 number7 = 0 number8 = 0 elif number6 == 100: number5 += 1 number6 = 0 number7 = 0 number8 = 0 elif number7 == 100: number6 += 1 number7 = 0 number8 = 0 elif number8 == 100: number7 += 1 number8 = 0 else: number8 += 1So it doesnt give me an error code. It just prints 00000000 forever, but i want it to print 00000001, 00000002, and so on. Can anybody relate or help me? Thanks a lot. Also, if you see any other errors or have suggestions, anything is greatly appreciated. Thank you so much! ![]() ![]() RE: Not adding and assigning? - nilamo - Oct-10-2018 (Oct-10-2018, 03:47 PM)00712411 Wrote: attempts = char_list1 + char_list2 + char_list3 + char_list4 + char_list5 + char_list6 + char_list7 + char_list8 So you re-assign attempts every iteration, but never change what any of the char_list s are, so attempts will always be the same.Why would you expect attempts to change, if you're not doing anything that would change it?
RE: Not adding and assigning? - volcano63 - Oct-10-2018 Using index as a part of a variable name is extremely inefficient - and un-needed - since you have lists numbers = [0] * 24 char_list = [chars[0]] * 24You write a lot of code that masks your intention BTW, chars[<index>] returns a string of 1 character, second index is redundant
RE: Not adding and assigning? - 00712411 - Oct-10-2018 else: number8 += 1on line 118-119, I add 1 to number 8. On line 36, I state that number 8 will define the character in the output of char_list8 as such: char_list8 = chars[number8][0]Is this unclear to you? Sorry, i dont mean to be rude but it seems to me that that would work. I dont see what could go wrong. Thanks again for everything, 007 RE: Not adding and assigning? - ichabod801 - Oct-10-2018 You shouldn't have 24 variables named number1-number24, you should have a list of 24 values. Same with char_list. You assign char_list like so: chars[number2][0] . But since chars is a string, chars[number2] returns a string of length 1. All the [0] is return the first character of a string of length one, which is the string.You are not assigning to a set anywhere. There is no set anywhere in your code. A set is a container that has one and only one of each value in it, and provides fast access to the 'in' operator. You just have a bunch of integers and strings. The reason it prints 0000000 forever is that you are printing attempts. That variable is the sum of the char_list variables. You never change the char_list variables, so attempts never changes, so you always print the same thing. Changing number1 does not retroactively change the assignment of char_list1 to chars[number1]. You have to reassign that if you want attempts to change. Edit: It looks like a lot of others pointed all of this out while I was typing it up. Listen to everything they said. RE: Not adding and assigning? - volcano63 - Oct-10-2018 (Oct-10-2018, 04:27 PM)00712411 Wrote:else: number8 += 1on line 118-119, I add 1 to number 8. On line 36, I state that number 8 will define the character in the output of char_list8 as such: You change number<index> - that does not change change char_list<index> . Your code cannot possibly work - as you can see by yourself.
RE: Not adding and assigning? - nilamo - Oct-10-2018 (Oct-10-2018, 04:27 PM)00712411 Wrote:else: number8 += 1on line 118-119, I add 1 to number 8. On line 36, I state that number 8 will define the character in the output of char_list8 as such: char_list8 has it's value set to whatever chars[number8][0] is, but it's value doesn't get updated if number8 happens to change. They're two unrelated things. If you want char_list8 to change, you have to also change char_list8 . Programming would be incredibly difficult if all your variables changed their values whenever anything happened to unrelated other parts of your code.
RE: Not adding and assigning? - volcano63 - Oct-10-2018 (Oct-10-2018, 04:35 PM)nilamo Wrote: Looks like OP believes thst he performs sort of reference binding from index to character set - which may be with a proper wrapper class, but not like that. Looks like brute-force password breaker - which, in theory, should be implmented by a recursive function. Though in Python, with itertools.product , it is rather simple in a loop
|