FAQs on the exercise Creating the Hashing Function
There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply () below.
If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.
Join the Discussion. Help a fellow learner on their journey.
Ask or answer a question about this exercise by clicking reply () below!
Agree with a comment or answer? Like () to up-vote the contribution!
I am doing this exercise and I have a question about the String method encode.
In the exercise, it says that key.encode() will return an object containing a list-like object that contains the numerical value of each character as a separate item.
I tested it out with my key as “dog” and printed the result to the console. It gave me b’dog’ as a result.
I was wondering if someone could please tell me what b’dog’ signifies.
Note that each character in "dog" could be encoded by a single number between 0 and 255, but the Greek "π" is encoded by two such numbers, each representing a byte. Some characters from other languages require even more bytes than that to be encoded.
I actually thought that we were going to learn about encoding the key but it was very straight forward by giving us a built-in method.
Works fine though
Although it may be somewhat digressing from the lesson material, it is bugging me why in the following method we return hash_code as opposed to self.hash_code. And with the same logic why we use self.hash_code = sum(key_bytes), as opposed to self.hash_code = sum (self.key_bytes).
I’m struggling to find the connection to when you use self.foo and just foo.
I believe that self.foo refers to parent class, so if we were to call class_name.foo, a value would be returned. I may have just answered my own question by reasoning my thought process through typing this markdown?
So I guess my final question is (sorry for letting you read my long-winded thought process), do we only use self. foo when we are assigning values to be called upon outside the class definition, then use foo willy nilly for use inside our calculations?
I appreciate the time anybody has taken to help me out here.
I have faced this myself but now I’m totally comfortable with it.
See, sometimes we need to reference our own class variables in the methods, modify them or use them to calculate another value. To do this we first need to reference the class and then the instance variable separated by dot (.) .
Also, by convention we use self to reference class that’s why we pass it as the first parameter to method.
When we have passed a variable as parameter into a method or created it we use it without self.
For example, in this section you might have written this code,
class HashMap:
def __init__(self, array_size):
self.array_size = array_size
self.array = [None for item in range(array_size)]
def hash(self, key):
key_bytes = key.encode()
hash_code = sum(key_bytes)
return hash_code
in the hash function we passed key as a parameter so we use it without self. Also, variables like hash_code and key_bytes were created within the method so it is used without self. If we would have referenced variables :- array_size or array we would need to self. infront of them. self refers to the class itself. So everytime we use its variables or its methods within the class we self. infront of them.
i need mtf to remind me how to print the list of attributes a function or other object has, i didn’t realize that variables have a built-in function called .encode() and i want to know more about it
reading more, it is a string method, it gives a list like object with the numerical representation of each character in the string. i’d also like mtf to show a link to the page that describes how .encode() works
this feels like i’m hacking into stuff they don’t want me to see:
to the left of script.py on the top, there is a folder icon, i found _test.py
i think, after reading its contents, that is how codecademy tests to see if you have passed the test, as in, this is the script that determines whether or not the ‘next’ button is lit
i think that changing this code would either let you cheat your way through the lesson or crash the page, or maybe both, either way, it would probably break something, and i don’t think it’s supposed to be messed around with.
i’ll leave it alone for now, but i will start looking through files now that i know it’s there.