We had finally built up enough courage to finally go to a hackathon. As a result, this was our FIRST hackathon ever. We was slightly nervous and scared. We did not plan out not a single thing before coming here. By meeting and talking with other people, we found out that some people don't even have a coding background or even the basics. This gave us the idea to create an application that at least gives them the basic knowledge that we know about Python to them. Of course, we fact checked the definitions because we would not want to give incorrect information. We named it Py Dictionary.
What it does
Py Dictionary is what we would call an offline reference. We created three categories that the user can choose by input. One of the catgories takes about 80% of the Python glossary and catgorized them as "General Terms". It gives/prints out an example and defintion of these general terms. Next, we created a category called "Strings" which gives you most of the important functions that you can use with having a string and prints out your desired term you wanted to know. Next, we have a final category for practicing your skills called "Exerises". It consist of 5 questions that you can complete in the console. At the end of the exerises it gives you a congrats message.
How we built it
Py Dictionary was built using VS Code, Github Desktop, Python, and Tkinter. The general terms was pulled directly from the Python glossary and we checked every term to see if the "Help" function could be called for the term. If so, it was added to a list. The user would then look at the list and then type in the desired term. From there, we had a variable that takes that term and puts it in the "help" function. It prints out the definition and gave an example. This said a lot of time hard coding that information. However, the strings category was hard coded, but pulled from w3schools.com to get proper definitions. It has the same concept as the general terms just without the "help" function. Lastly, the exerises was created with the help of sample problems on w3schools.com and we created if statements to check to see if the user's answer was correct and using while loops to give the user a chance to try again if they got it wrong. We used Tkinter to have pop-up messages that correspond with the console. This was for the visual effect because we did not want to have a text-based only application.
Challenges we ran into
We ran into a lot of challenges. Most of the challenges was with trying to push to our stretch goal which was making a GUI for our application. Tkinter just did not want to cooperate with storing the user's input and calling functions. We tried to ask for mentor help and other hackers, but we just could not solve our problem. We felt defeated, but we thought of some possible way we could still use Tkinter. This will later be discussed. Another problem we ran into in the beginning was trying to find an API of all the Python glossary terms. Unfortunately, it just did not exist and we asked the Google mentor if he knew anyway to find it, but we could not find anything. This destroyed the idea of trying to have every term because if not we would have to hard code every single term that Python has. Also, we was interested in using an API because we had no idea how to use one, so we wanted to embrace the idea of trying new things.
Accomplishments that we are proud of
We are proud of the fact that we thought of something to help people and to get out of our comfort zone and try to make a GUI. Even though we could not use Tkinter to its full capacity, we did not want to just cut it out completely. As a result, we decided to have this pop-up window with directions and definitions when the function was called.
What we learned
We learned that there is SO much more you can do with Python such as web development and things called machine learning. We learned this from the surrounding hackers and it was so cool to hear that they were using the same language for more complex projects.
What's next for Py Dictionary
Simply enough, we want to create a full GUI and possible create a site using this information.