{"id":5362,"date":"2025-06-27T22:45:33","date_gmt":"2025-06-27T17:15:33","guid":{"rendered":"https:\/\/cbsepython.in\/?p=5362"},"modified":"2025-06-27T22:45:33","modified_gmt":"2025-06-27T17:15:33","slug":"interactive-periodic-table-lookup-tool-in-python","status":"publish","type":"post","link":"https:\/\/cbsepython.in\/interactive-periodic-table-lookup-tool-in-python\/","title":{"rendered":"Interactive Periodic Table Lookup Tool in Python Project for Class 11"},"content":{"rendered":"<h2>Interactive Periodic Table Lookup Tool in Python<\/h2>\n<h1 dir=\"ltr\" data-pm-slice=\"1 1 []\">Guide to Building a Periodic Table Lookup Tool in Python<\/h1>\n<p dir=\"ltr\">Hey there, Python beginners! Want to create a cool program that lets you look up details about chemical elements, like Hydrogen or Gold, just by typing their name, symbol, or atomic number? In this post, we\u2019ll walk through a simple Python script that does exactly that. It\u2019s like having your own digital periodic table! We\u2019ll break it down step by step in a way that\u2019s easy to understand, even if you\u2019re new to coding. Let\u2019s dive in!<\/p>\n<h2 dir=\"ltr\" data-pm-slice=\"1 1 []\">What Does This Program Do?<\/h2>\n<p dir=\"ltr\">This Python program lets you:<\/p>\n<ul class=\"tight\" dir=\"ltr\" data-tight=\"true\">\n<li>\n<p dir=\"ltr\">Enter an element\u2019s name (e.g., &#8220;Hydrogen&#8221;), symbol (e.g., &#8220;H&#8221;), or atomic number (e.g., &#8220;1&#8221;).<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\">Get back the element\u2019s full name, symbol, atomic number, and atomic mass.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\">Keep looking up elements until you type &#8220;exit&#8221; to quit.<\/p>\n<\/li>\n<\/ul>\n<p dir=\"ltr\">It\u2019s interactive, beginner-friendly, and a great way to learn about dictionaries, loops, and error handling in Python. Here\u2019s how it works!<\/p>\n<h2 dir=\"ltr\" data-pm-slice=\"1 1 []\">Code<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\"># Full periodic table data\r\nelements_data = {\r\n    1: (\"H\", \"Hydrogen\", 1.008), 2: (\"He\", \"Helium\", 4.0026), 3: (\"Li\", \"Lithium\", 6.94),\r\n    4: (\"Be\", \"Beryllium\", 9.0122), 5: (\"B\", \"Boron\", 10.81), 6: (\"C\", \"Carbon\", 12.011),\r\n    7: (\"N\", \"Nitrogen\", 14.007), 8: (\"O\", \"Oxygen\", 15.999), 9: (\"F\", \"Fluorine\", 18.998),\r\n    10: (\"Ne\", \"Neon\", 20.180), 11: (\"Na\", \"Sodium\", 22.990), 12: (\"Mg\", \"Magnesium\", 24.305),\r\n    13: (\"Al\", \"Aluminium\", 26.982), 14: (\"Si\", \"Silicon\", 28.085), 15: (\"P\", \"Phosphorus\", 30.974),\r\n    16: (\"S\", \"Sulfur\", 32.06), 17: (\"Cl\", \"Chlorine\", 35.45), 18: (\"Ar\", \"Argon\", 39.948),\r\n    19: (\"K\", \"Potassium\", 39.098), 20: (\"Ca\", \"Calcium\", 40.078), 21: (\"Sc\", \"Scandium\", 44.956),\r\n    22: (\"Ti\", \"Titanium\", 47.867), 23: (\"V\", \"Vanadium\", 50.942), 24: (\"Cr\", \"Chromium\", 51.996),\r\n    25: (\"Mn\", \"Manganese\", 54.938), 26: (\"Fe\", \"Iron\", 55.845), 27: (\"Co\", \"Cobalt\", 58.933),\r\n    28: (\"Ni\", \"Nickel\", 58.693), 29: (\"Cu\", \"Copper\", 63.546), 30: (\"Zn\", \"Zinc\", 65.38),\r\n    31: (\"Ga\", \"Gallium\", 69.723), 32: (\"Ge\", \"Germanium\", 72.63), 33: (\"As\", \"Arsenic\", 74.922),\r\n    34: (\"Se\", \"Selenium\", 78.971), 35: (\"Br\", \"Bromine\", 79.904), 36: (\"Kr\", \"Krypton\", 83.798),\r\n    37: (\"Rb\", \"Rubidium\", 85.468), 38: (\"Sr\", \"Strontium\", 87.62), 39: (\"Y\", \"Yttrium\", 88.906),\r\n    40: (\"Zr\", \"Zirconium\", 91.224), 41: (\"Nb\", \"Niobium\", 92.906), 42: (\"Mo\", \"Molybdenum\", 95.95),\r\n    43: (\"Tc\", \"Technetium\", 98), 44: (\"Ru\", \"Ruthenium\", 101.07), 45: (\"Rh\", \"Rhodium\", 102.91),\r\n    46: (\"Pd\", \"Palladium\", 106.42), 47: (\"Ag\", \"Silver\", 107.87), 48: (\"Cd\", \"Cadmium\", 112.41),\r\n    49: (\"In\", \"Indium\", 114.82), 50: (\"Sn\", \"Tin\", 118.71), 51: (\"Sb\", \"Antimony\", 121.76),\r\n    52: (\"Te\", \"Tellurium\", 127.60), 53: (\"I\", \"Iodine\", 126.90), 54: (\"Xe\", \"Xenon\", 131.29),\r\n    55: (\"Cs\", \"Cesium\", 132.91), 56: (\"Ba\", \"Barium\", 137.33), 57: (\"La\", \"Lanthanum\", 138.91),\r\n    58: (\"Ce\", \"Cerium\", 140.12), 59: (\"Pr\", \"Praseodymium\", 140.91), 60: (\"Nd\", \"Neodymium\", 144.24),\r\n    61: (\"Pm\", \"Promethium\", 145), 62: (\"Sm\", \"Samarium\", 150.36), 63: (\"Eu\", \"Europium\", 151.96),\r\n    64: (\"Gd\", \"Gadolinium\", 157.25), 65: (\"Tb\", \"Terbium\", 158.93), 66: (\"Dy\", \"Dysprosium\", 162.50),\r\n    67: (\"Ho\", \"Holmium\", 164.93), 68: (\"Er\", \"Erbium\", 167.26), 69: (\"Tm\", \"Thulium\", 168.93),\r\n    70: (\"Yb\", \"Ytterbium\", 173.05), 71: (\"Lu\", \"Lutetium\", 174.97), 72: (\"Hf\", \"Hafnium\", 178.49),\r\n    73: (\"Ta\", \"Tantalum\", 180.95), 74: (\"W\", \"Tungsten\", 183.84), 75: (\"Re\", \"Rhenium\", 186.21),\r\n    76: (\"Os\", \"Osmium\", 190.23), 77: (\"Ir\", \"Iridium\", 192.22), 78: (\"Pt\", \"Platinum\", 195.08),\r\n    79: (\"Au\", \"Gold\", 196.97), 80: (\"Hg\", \"Mercury\", 200.59), 81: (\"Tl\", \"Thallium\", 204.38),\r\n    82: (\"Pb\", \"Lead\", 207.2), 83: (\"Bi\", \"Bismuth\", 208.98), 84: (\"Po\", \"Polonium\", 209),\r\n    85: (\"At\", \"Astatine\", 210), 86: (\"Rn\", \"Radon\", 222), 87: (\"Fr\", \"Francium\", 223),\r\n    88: (\"Ra\", \"Radium\", 226), 89: (\"Ac\", \"Actinium\", 227), 90: (\"Th\", \"Thorium\", 232.04),\r\n    91: (\"Pa\", \"Protactinium\", 231.04), 92: (\"U\", \"Uranium\", 238.03), 93: (\"Np\", \"Neptunium\", 237),\r\n    94: (\"Pu\", \"Plutonium\", 244), 95: (\"Am\", \"Americium\", 243), 96: (\"Cm\", \"Curium\", 247),\r\n    97: (\"Bk\", \"Berkelium\", 247), 98: (\"Cf\", \"Californium\", 251), 99: (\"Es\", \"Einsteinium\", 252),\r\n    100: (\"Fm\", \"Fermium\", 257), 101: (\"Md\", \"Mendelevium\", 258), 102: (\"No\", \"Nobelium\", 259),\r\n    103: (\"Lr\", \"Lawrencium\", 266), 104: (\"Rf\", \"Rutherfordium\", 267), 105: (\"Db\", \"Dubnium\", 268),\r\n    106: (\"Sg\", \"Seaborgium\", 269), 107: (\"Bh\", \"Bohrium\", 270), 108: (\"Hs\", \"Hassium\", 277),\r\n    109: (\"Mt\", \"Meitnerium\", 278), 110: (\"Ds\", \"Darmstadtium\", 281), 111: (\"Rg\", \"Roentgenium\", 282),\r\n    112: (\"Cn\", \"Copernicium\", 285), 113: (\"Nh\", \"Nihonium\", 286), 114: (\"Fl\", \"Flerovium\", 289),\r\n    115: (\"Mc\", \"Moscovium\", 290), 116: (\"Lv\", \"Livermorium\", 293), 117: (\"Ts\", \"Tennessine\", 294),\r\n    118: (\"Og\", \"Oganesson\", 294),\r\n}\r\n\r\n# Create lookup dictionaries\r\nsymbol_lookup = {v[0].lower(): k for k, v in elements_data.items()}\r\nname_lookup = {v[1].lower(): k for k, v in elements_data.items()}\r\n\r\n# Main interactive loop\r\nprint(\"PERIODIC TABLE ATOMIC MASS LOOKUP\")\r\nprint(\"You can enter the element's name, symbol, or atomic number.\\n\")\r\n\r\nwhile True:\r\n    user_input = input(\"Enter element name\/symbol\/atomic number (or 'exit' to quit): \").strip().lower()\r\n    \r\n    if user_input == 'exit':\r\n        break\r\n\r\n    try:\r\n        if user_input.isdigit():\r\n            atomic_number = int(user_input)\r\n        elif user_input in name_lookup:\r\n            atomic_number = name_lookup[user_input]\r\n        elif user_input in symbol_lookup:\r\n            atomic_number = symbol_lookup[user_input]\r\n        else:\r\n            print(\"Invalid input. Please try again.\\n\")\r\n            continue\r\n\r\n        symbol, name, mass = elements_data[atomic_number]\r\n        print(f\"Element: {name} ({symbol})\\nAtomic Number: {atomic_number}\\nAtomic Mass: {mass}\\n\")\r\n\r\n    except KeyError:\r\n        print(\"Element not found in periodic table. Try again.\\n\")\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2 dir=\"ltr\" data-pm-slice=\"1 1 []\">How It Works: Step-by-Step Breakdown<\/h2>\n<p dir=\"ltr\">Let\u2019s go through the code like we\u2019re building it from scratch. Each step is like a building block, and we\u2019ll explain it in a way that\u2019s super clear for beginners.<\/p>\n<h3 dir=\"ltr\">Step 1: Storing the Periodic Table<\/h3>\n<p dir=\"ltr\">The program starts with a <strong>dictionary<\/strong> called <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">elements_data<\/span>. A dictionary in Python is like a phonebook: it pairs a <strong>key<\/strong> (like a person\u2019s name) with a <strong>value<\/strong> (their phone number). Here:<\/p>\n<ul class=\"tight\" dir=\"ltr\" data-tight=\"true\">\n<li>\n<p dir=\"ltr\">The keys are atomic numbers (1, 2, 3, &#8230;, up to 118).<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\">The values are <strong>tuples<\/strong> (like small, unchangeable lists) with three pieces of info:<\/p>\n<ul class=\"tight\" dir=\"ltr\" data-tight=\"true\">\n<li>\n<p dir=\"ltr\">The element\u2019s symbol (e.g., &#8220;H&#8221; for Hydrogen).<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\">The element\u2019s name (e.g., &#8220;Hydrogen&#8221;).<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\">The element\u2019s atomic mass (e.g., 1.008 for Hydrogen).<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p dir=\"ltr\"><strong>Example<\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">elements_data = {\r\n    1: (\"H\", \"Hydrogen\", 1.008),\r\n    2: (\"He\", \"Helium\", 4.0026),\r\n    # ... and so on\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p dir=\"ltr\" data-pm-slice=\"1 1 []\">If we ask for <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">elements_data[1]<\/span>, we get <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">(&#8220;H&#8221;, &#8220;Hydrogen&#8221;, 1.008)<\/span>.<\/p>\n<p dir=\"ltr\"><strong>Think of it like<\/strong>: A big filing cabinet where each drawer (the atomic number) holds a card with the symbol, name, and mass of an element.<\/p>\n<hr \/>\n<h3 dir=\"ltr\">Step 2: Making Search Easier with Lookup Dictionaries<\/h3>\n<p dir=\"ltr\">To make searching faster, the program creates two more dictionaries:<\/p>\n<ul class=\"tight\" dir=\"ltr\" data-tight=\"true\">\n<li>\n<p dir=\"ltr\"><span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">symbol_lookup<\/span>: Maps element symbols (like &#8220;h&#8221; or &#8220;au&#8221;) to their atomic numbers.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\"><span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">name_lookup<\/span>: Maps element names (like &#8220;hydrogen&#8221; or &#8220;gold&#8221;) to their atomic numbers.<\/p>\n<\/li>\n<\/ul>\n<p dir=\"ltr\"><strong>Code<\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">symbol_lookup = {v[0].lower(): k for k, v in elements_data.items()}\r\nname_lookup = {v[1].lower(): k for k, v in elements_data.items()}<\/pre>\n<p>&nbsp;<\/p>\n<ul class=\"tight\" dir=\"ltr\" data-tight=\"true\" data-pm-slice=\"3 1 []\">\n<li>\n<p dir=\"ltr\"><span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">v[0]<\/span> grabs the symbol from the tuple (e.g., &#8220;H&#8221; from <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">(&#8220;H&#8221;, &#8220;Hydrogen&#8221;, 1.008)<\/span>).<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\"><span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">v[1]<\/span> grabs the name (e.g., &#8220;Hydrogen&#8221;).<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\"><span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">.lower()<\/span> makes everything lowercase, so &#8220;H&#8221; becomes &#8220;h&#8221; and &#8220;Hydrogen&#8221; becomes &#8220;hydrogen&#8221;. This means users can type &#8220;H&#8221; or &#8220;h&#8221; and it still works.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\"><span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">k<\/span> is the atomic number (the key from <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">elements_data<\/span>).<\/p>\n<\/li>\n<\/ul>\n<p dir=\"ltr\"><strong>Example<\/strong>:<\/p>\n<ul class=\"tight\" dir=\"ltr\" data-tight=\"true\">\n<li>\n<p dir=\"ltr\"><span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">symbol_lookup[&#8220;h&#8221;]<\/span> gives <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">1<\/span> (Hydrogen\u2019s atomic number).<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\"><span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">name_lookup[&#8220;hydrogen&#8221;]<\/span> also gives <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">1<\/span>.<\/p>\n<\/li>\n<\/ul>\n<p dir=\"ltr\"><strong>Think of it like<\/strong>: Creating quick-reference index cards so you can find an element\u2019s atomic number by its symbol or name without flipping through the whole filing cabinet.<\/p>\n<hr \/>\n<h3 dir=\"ltr\">Step 3: Welcoming the User<\/h3>\n<p dir=\"ltr\">The program prints a friendly message to tell users what they can do:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print(\"PERIODIC TABLE ATOMIC MASS LOOKUP\")\r\nprint(\"You can enter the element's name, symbol, or atomic number.\\n\")<\/pre>\n<p>&nbsp;<\/p>\n<p dir=\"ltr\" data-pm-slice=\"1 1 []\">This is like a sign saying, \u201cHey, type an element\u2019s name, symbol, or number, and I\u2019ll tell you about it!\u201d<\/p>\n<hr \/>\n<h3 dir=\"ltr\">Step 4: The Main Loop<\/h3>\n<p dir=\"ltr\">The program uses a <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">while True<\/span> loop to keep asking for input until the user wants to stop:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">while True:\r\n    user_input = input(\"Enter element name\/symbol\/atomic number (or 'exit' to quit): \").strip().lower()<\/pre>\n<p>&nbsp;<\/p>\n<ul class=\"tight\" dir=\"ltr\" data-tight=\"true\" data-pm-slice=\"3 1 []\">\n<li>\n<p dir=\"ltr\"><span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">input(&#8230;)<\/span> asks the user to type something and stores it in <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">user_input<\/span>.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\"><span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">.strip()<\/span> removes extra spaces (e.g., &#8221; H &#8221; becomes &#8220;H&#8221;).<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\"><span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">.lower()<\/span> makes the input lowercase (e.g., &#8220;HYDROGEN&#8221; becomes &#8220;hydrogen&#8221;).<\/p>\n<\/li>\n<\/ul>\n<p dir=\"ltr\"><strong>Think of it like<\/strong>: A helpful assistant who keeps asking, \u201cWhat element do you want to know about?\u201d until you\u2019re done.<\/p>\n<hr \/>\n<h3 dir=\"ltr\">Step 5: Checking for Exit<\/h3>\n<p dir=\"ltr\">The program checks if the user wants to quit:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">if user_input == 'exit':\r\n    break<\/pre>\n<p>&nbsp;<\/p>\n<ul class=\"tight\" dir=\"ltr\" data-tight=\"true\" data-pm-slice=\"3 1 []\">\n<li>\n<p dir=\"ltr\">If the user types &#8220;exit&#8221;, the <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">break<\/span> command stops the loop, and the program ends.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\"><strong>Think of it like<\/strong>: Telling the assistant, \u201cI\u2019m done,\u201d and they close the book.<\/p>\n<\/li>\n<\/ul>\n<hr \/>\n<h3 dir=\"ltr\">Step 6: Figuring Out What the User Typed<\/h3>\n<p dir=\"ltr\">Now the program checks what the user entered (a number, name, or symbol):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">try:\r\n    if user_input.isdigit():\r\n        atomic_number = int(user_input)\r\n    elif user_input in name_lookup:\r\n        atomic_number = name_lookup[user_input]\r\n    elif user_input in symbol_lookup:\r\n        atomic_number = symbol_lookup[user_input]\r\n    else:\r\n        print(\"Invalid input. Please try again.\\n\")\r\n        continue<\/pre>\n<p>&nbsp;<\/p>\n<ul class=\"tight\" dir=\"ltr\" data-tight=\"true\" data-pm-slice=\"3 1 []\">\n<li>\n<p dir=\"ltr\"><strong>Is it a number?<\/strong> <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">user_input.isdigit()<\/span> checks if the input is all numbers (like &#8220;1&#8221; or &#8220;79&#8221;). If so, it converts it to an integer with <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">int(user_input)<\/span> to use as the atomic number.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\"><strong>Is it a name?<\/strong> If it\u2019s not a number, it checks if the input is in <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">name_lookup<\/span> (e.g., &#8220;hydrogen&#8221;). If it is, it gets the atomic number.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\"><strong>Is it a symbol?<\/strong> If it\u2019s not a name, it checks <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">symbol_lookup<\/span> (e.g., &#8220;au&#8221;). If it matches, it gets the atomic number.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\"><strong>Is it invalid?<\/strong> If none of these work (e.g., &#8220;xyz&#8221;), it prints \u201cInvalid input\u201d and uses <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">continue<\/span> to go back and ask again.<\/p>\n<\/li>\n<\/ul>\n<p dir=\"ltr\"><strong>Think of it like<\/strong>: The assistant checking if you gave a page number, a book title, or an author\u2019s name. If you say \u201cpizza,\u201d they say, \u201cNope, try again!\u201d<\/p>\n<hr \/>\n<h3 dir=\"ltr\">Step 7: Showing the Element\u2019s Info<\/h3>\n<p dir=\"ltr\">Once the program has the atomic number, it grabs and displays the element\u2019s details:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">symbol, name, mass = elements_data[atomic_number]\r\nprint(f\"Element: {name} ({symbol})\\nAtomic Number: {atomic_number}\\nAtomic Mass: {mass}\\n\")<\/pre>\n<p>&nbsp;<\/p>\n<ul class=\"tight\" dir=\"ltr\" data-tight=\"true\" data-pm-slice=\"3 3 []\">\n<li>\n<p dir=\"ltr\"><span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">elements_data[atomic_number]<\/span> gets the tuple (e.g., <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">(&#8220;H&#8221;, &#8220;Hydrogen&#8221;, 1.008)<\/span> for atomic number 1).<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\"><span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">symbol, name, mass = &#8230;<\/span> splits the tuple into three variables.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\">The <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">print<\/span> statement shows the info in a neat format, like:<\/p>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Output:<\/strong><\/p>\n<p>Element: Hydrogen (H)<br \/>\nAtomic Number: 1<br \/>\nAtomic Mass: 1.008<\/p>\n<p>&nbsp;<\/p>\n<h3 dir=\"ltr\" data-pm-slice=\"1 1 []\">Step 8: Handling Mistakes<\/h3>\n<p dir=\"ltr\">The <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">try-except<\/span> block catches errors if the atomic number doesn\u2019t exist:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">except KeyError:\r\n    print(\"Element not found in periodic table. Try again.\\n\")<\/pre>\n<p>&nbsp;<\/p>\n<ul class=\"tight\" dir=\"ltr\" data-tight=\"true\" data-pm-slice=\"3 1 []\">\n<li>\n<p dir=\"ltr\">If the user enters a number like 119 (which isn\u2019t in the dictionary), Python raises a <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">KeyError<\/span>. The <span class=\"text-sm px-1 rounded-sm !font-mono bg-sunset\/10 text-rust dark:bg-dawn\/10 dark:text-dawn\">except<\/span> block catches this and says, \u201cElement not found.\u201d<\/p>\n<\/li>\n<\/ul>\n<p dir=\"ltr\"><strong>Think of it like<\/strong>: The assistant saying, \u201cSorry, that\u2019s not in our records,\u201d if you ask for something that doesn\u2019t exist.<\/p>\n<h2 dir=\"ltr\" data-pm-slice=\"1 1 []\">What Happens When You Run It?<\/h2>\n<p dir=\"ltr\">Here\u2019s an example of using the program:<\/p>\n<p>PERIODIC TABLE ATOMIC MASS LOOKUP<br \/>\nYou can enter the element&#8217;s name, symbol, or atomic number.<\/p>\n<p>Enter element name\/symbol\/atomic number (or &#8216;exit&#8217; to quit): Hydrogen<br \/>\nElement: Hydrogen (H)<br \/>\nAtomic Number: 1<br \/>\nAtomic Mass: 1.008<\/p>\n<p>Enter element name\/symbol\/atomic number (or &#8216;exit&#8217; to quit): Au<br \/>\nElement: Gold (Au)<br \/>\nAtomic Number: 79<br \/>\nAtomic Mass: 196.97<\/p>\n<p>Enter element name\/symbol\/atomic number (or &#8216;exit&#8217; to quit): 8<br \/>\nElement: Oxygen (O)<br \/>\nAtomic Number: 8<br \/>\nAtomic Mass: 15.999<\/p>\n<p>Enter element name\/symbol\/atomic number (or &#8216;exit&#8217; to quit): xyz<br \/>\nInvalid input. Please try again.<\/p>\n<p>Enter element name\/symbol\/atomic number (or &#8216;exit&#8217; to quit): exit<\/p>\n<p>&nbsp;<\/p>\n<h3 dir=\"auto\">How It All Comes Together<\/h3>\n<p dir=\"auto\">The program:<\/p>\n<ol dir=\"auto\">\n<li>Stores all element data in a dictionary.<\/li>\n<li>Creates quick lookup tables for symbols and names.<\/li>\n<li>Keeps asking the user for input.<\/li>\n<li>Checks if the input is a number, symbol, or name.<\/li>\n<li>Finds the matching element and shows its details.<\/li>\n<li>Handles errors if the input is wrong.<\/li>\n<li>Stops when the user types &#8220;exit&#8221;.<\/li>\n<\/ol>\n<hr \/>\n<h3 dir=\"auto\">Why This Code Is Great for Beginners<\/h3>\n<ul dir=\"auto\">\n<li><strong>Simple Logic<\/strong>: It uses basic Python concepts like dictionaries, loops, and conditionals.<\/li>\n<li><strong>Real-World Use<\/strong>: It\u2019s a practical tool for looking up real scientific data.<\/li>\n<li><strong>Error Handling<\/strong>: It shows how to handle mistakes without crashing.<\/li>\n<li><strong>Interactive<\/strong>: It\u2019s fun to use because it responds to user input.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Interactive Periodic Table Lookup Tool in Python Guide to Building a Periodic Table Lookup Tool in Python Hey there, Python beginners! Want to create a cool program that lets you look up details about chemical elements, like Hydrogen or Gold, just by typing their name, symbol, or atomic number? In this post, we\u2019ll walk through [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":5370,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20,43],"tags":[],"class_list":["post-5362","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cbse-computer-science-with-python-class-12","category-python-projects"],"_links":{"self":[{"href":"https:\/\/cbsepython.in\/wp-json\/wp\/v2\/posts\/5362","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cbsepython.in\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cbsepython.in\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cbsepython.in\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/cbsepython.in\/wp-json\/wp\/v2\/comments?post=5362"}],"version-history":[{"count":7,"href":"https:\/\/cbsepython.in\/wp-json\/wp\/v2\/posts\/5362\/revisions"}],"predecessor-version":[{"id":5369,"href":"https:\/\/cbsepython.in\/wp-json\/wp\/v2\/posts\/5362\/revisions\/5369"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cbsepython.in\/wp-json\/wp\/v2\/media\/5370"}],"wp:attachment":[{"href":"https:\/\/cbsepython.in\/wp-json\/wp\/v2\/media?parent=5362"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cbsepython.in\/wp-json\/wp\/v2\/categories?post=5362"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cbsepython.in\/wp-json\/wp\/v2\/tags?post=5362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}