{ "cells": [ { "cell_type": "markdown", "id": "e3a158f7", "metadata": {}, "source": [ "# Python 101" ] }, { "attachments": { "python_101_superai.jpg": { "image/jpeg": "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAOEBRQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9U6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK4/4k/F7wf8INPsr3xjr1roNtezG3t3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KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKqarpdtrWm3NjeRLPbXEZjkjYcEEYq3RSlFSTjJXTHtqj44+LXwU1bwPpM9xGovdHtm/d3YIDhCRhXHqCcZHauF8Gas1vtUtyOK+5/GXhuHxd4Y1HSJ+EuoWTd6HHB/OvgJbObQdaurGcFZbeVonyMHIOOlfzxxfw/RyyalhlanO79H1S8ux9Zl+NnWleb1R7nouoefGpz9a6SCTcoFeX+F9UwFBOa9AsboOoOa/CMVRdOR9hpUjc1pIfMU15B4n+IVro97Lb3UrRw28hDxqjM5APLEAZxyOelet/aPl61ht4fsW1GW8S2jW6mXY8oX5mHoanB1KdOTdaN15GXLPo7FPTfiho+m6bDexzRtEQCCp6iuh0H4taJ40t57ayucXa8eUylXBI44PNcpp/wlsbHxNDq0VzMu1zILfPyBj3r0i28H6Wuqf2u1qj6n5fl/aG+8F9Kyxf1GK9y7b69n2a6+p5td6qU1qZkdxLuw2al8w1pzaeu4lRVK4t/LU153PGWx0KpGexRuLravWm6L4du/GV49rbXK2pUq7yspOFDDOPf0qrfN1FelfCPS/s+m3N4w5mbap9h/8AXNfe8G5PDOc3o4arG8NZS9F/m7L5mGPrvC4Z1I6Podno+kwaLp8VpbriNB1PVj3J9zV2iiv7VpUoUYRpUlaMVZJbJI/OpScm5PcKKKK1JCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA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jByMahdfKeeR+84PNO41ofiOygxv8/lqoyiMAMHpzjbz7jb9KsLqE0kKR7iiKv8Ayzc8Dr0bf6+or9tD/wAE9fgL8xHgZI2Lbt0d/cowPsRICB7dKfJ/wT5+AtwoE/gSG4x0aa8uHYfiXzRcvmPRP2d/+SDeAvm3/wDEltfmPf8Adj2FeYfsE/8AJK/GH/Y8a7/6VGvoLw94e0/wl4fsdF0q3+y6bYQLb28IYtsjUYUZJJOB618+/sE/8kr8Yf8AY8a7/wClRqTM+laKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKq6pqEelabd3soJit4mmcL1woJP8qALVFfF/wp+K37QH7Unhifx/4E1jwn4N8KPdzRaXpep2Ul1Pdxo2A00gYeVu9gSM9K+o/hzqvieT4faZefECz0/RPEyo41GGxuPMtUZZGVWRz/CyhW55G7B5FAHW0Uzzo/J83evlY3b8jbj1z6VCuo2jWf2sXUJtNu7z/MGzHru6YoAs0VTm1nT7aSOOa+topJOUV5lBb6AnmreQRkHIoAWiqX9t6d9r+y/b7X7T/wA8fOXf+Wc1YuLqG0j8yeWOGPON0jBRk9OTQBLRVaPUrOa7a1S6he5UZaFZAXA9SM5r5k/bY+P3jv4a/wDCJ+EPhTBaXfj7X5ZrhUvIvNSKzgjLzOR+AH4nFAH1JRXl37M/xgT47fBTwz4wIVL28twl7Cox5VwnyyLjtyM47ZrjPDnxq8S6l+2l4q+Gk8tufC+neHbbUoI1hAlEzuwYl88jAHFAH0JRRVWTVLONZWe7gRYTiQtIAE+vPFAFqioLO+ttQhEtrcRXMR6PC4dfzFfN37OvxR8UeMP2kvjv4c1jV5b7RdAvbSPTLR0U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AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPlD41f8JJ40/bE8LeFdH0XRdSbSfCM+tWV34mjkn0/T7iS68l7g26FTNKERUUB02iVzuHQ9x+yxdWtnJ8R/Ds3hrTfC/ijSPEJ/tyHQppW027nmt4pUureOQnyRJGyFowBhwxO4ksem+KnwZvvGPizQvGfhXxQ/g3xro9vNYxag1it9bXVpKVZ4LiAshdd6I6lXRlI4PJFZ3h34F694P8Ja1Hovj64t/HGv6zDrOs+KrjS4ZzdFWiV4UtmOyKMwRCFQCSgO7LNySl7seV+a++d18lHf02dkOpaTbXk18o2fzb1Xruryv1vxu/5Iz48/7AN/8A+k718L+ItH8aa5+yLpNtqfwB8O6f4bHh+xmufGGj6xb3uq2dqkUbtfw2pt4WMyopcKJtwP8Aexg/oF428N/8Jl4M17QPtH2P+1LCex+0bN/leZGybtuRnG7OMjOOor56s/2XfivdfD638Aa18dYZPBa6cmkT2+i+D4rK9ktFjEZjW5e5mCFkBUtsJ5yMVlFSU6jXXktfa6597a9Vt+Y9L029lzXtvry7X06PcyP2nPip4D8S6h8HPAWv+LdH0vwd4kkTxLql9rl/HaQ3Om2qLLBGXkZQTNO0HynqqPxwaz/gVdJ8f/2TfiF8IvD/AI1s7rVfDrXvhK18Q6ddC5iktcE2M3mRsdytAyIxU5ykg6iva/An7OmjeD/iD4g8T3Mlvq63WnWGiaTYzWYCaTp9rGQsClmbeWdndnwucqMfLk4Xjr9kfQPG3jzxJrX9oyaPo/iXQYtI1bStNgETyXFvP51nfRTBv3csJLAfIwORnpg6ytaUVqpXfz6fPlXL2u29tSIcy5Hs48v/AAfld37tRS3PI/Fek+HPDPhnw/p/xN+CE3wssdBvrOWz8eeBXsruz0yWKVNknnKi3EETkBHLwbdrkMf4hP8AGbxpq3w++JH7UHiX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4W6X4E8SaXqM9loLXetXVn5WmWtlbSQTtdx3YJSRnSH5Y0JkDSAMq4JrSEVLfvH7m5pv7knr6/CQ9v8AwL8FH9Xt8viO1vv2ovFOpfD/AOMGoahY+I/AY8N+J7fTrDWV0mwvPLha4tIvs4ha5w8h8xizMQFWYMpLLsHrvjH9prRPC/iXWtF07wx4r8Zy6CFOt3PhnTVuYNMLJ5gSQtIheTYQxjhEjgMpKjIrwH4q6B4jvPhv8f8AwdB4Q8SXGr33jGy12wkg0meW2vrR7vTzuhmRSrsoikLIDuUISQBzXomg+Kdb/Z88VfEzS9R8AeKfE0ev6/Pr+h33hnTGvYb0TxRg28zqcW8iPGVLTFUKlSG6gc9Ny9jBvflT9ZctPT73LzvF9bj15pafba9I3lZ/l999jtNe/as8JabqnhPT9G07XPGV14r0aXXNFXw7aJMLyCNolKgvIgRsTBsybVAVtzKcAlp+1X4TvPBP9ux6X4gGp/2y3h3/AIRVrADVxqQTebXyt+zd5f7zdv2bPm3Yryj4D/B/xV8N/il8HLfWdJnX+zvA+tR6jc28bSWlndXGoWs4tvOA2bgC4Az8wjYjgVR1fwPN9p+Mcnib4aeI/FGhXnxEh1CKXRmntdRtYRptqi6hY7NskxSRSh8lgeXxuwVrdxVt+jf3VVG19vhbd9tnte5F3V/T8YOW2/xW033W9j6P+F/xf074oPrNpHo+s+Gtc0aWOLUdF1+2WG6t/MTfG2Ud43VlzhkdhwRnIrvK+eP2W18YR694tS4vfGl98N1itRoUvxEgMOr/AGj959pADokxgA8naZxu3bsEjmvoelJWsKL3CiiipKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorwD9oD9py++FvibRPDfh3wte65fXGq6Va6rqs8DJpumW15dxwKWlJXzJm34WNCSM7m+UYLiuaUYLeTSXqw2Tk9krnv9FeZfFhPi2t7BcfD/WPA2laRDbs943iz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jS1zFm6Y7H4h3/dbPQ1geLv2v/A9j8HPHvjfw1eza5c+FLVmudJl068t7qKcoTCk9u8ImiRzj94yBQu5iQFJEyfKm303/r5r7xxjztRXU92oryIftR+ANN8D+GfEGsatdWT69C0lpp40a+N/OY+JilkITcFFb+Ly8YKnOCCdLUP2k/hnpngfR/GE/i6y/wCEa1e8/s6z1CJZJEe52yMYSFUsjjypAVcAhl2/eIBuUXBtPo7fPYiPvJNddf8AP7up6XRXk+r/ALU3w10LTtLvL3W72L+0oGuoLVdEv3u0hVyjSy2ywGWGMMrDfKirweeK9G8O+I9L8XaDYa3ol/b6rpF/Ctxa3trIJIpo2GVZWHUEUrPV9h+RpUUUUgCiiigAooooAKKKKACiiigArkPib8MdK+Kmh22n6lc6hp09ldx39jqWk3Jt7uyuEBCyxvgjOGYEMCpDEEEV19FLcZ558Nfgrpnw51jVNck1rW/FnifU4Yra617xFcpNctBGWMcKiNI440Bdm2oi5LEnJr0OiiqJCiiikMKKKKACiiigAooooAKKKKACiiigAooooAqatp0esaXeWEzMsN1C8DtGQGCspUkZHXBrF+GvgPT/AIW/D/w74P0qa5uNM0Kwh062lvGVpnjiQIpcqqgtgc4UD2FdLRTTtdLrb8L2/Nhvby/X/hkFFFFIAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK8N/bD/wCSW6H/ANjl4b/9O9rXuVFVCXLOE/5Wn9zT/QHrGUe6a+9WPDv2wr+5n+E9r4Ssrk2l1441qw8LecjbXWG5lAuSp/vfZ1mxXovijxf4V+C/g2zutYuU0Tw/ayWmlwGOCSRUaSRIIIwsasQCzIucYGckgc11lFTHRNd3f5WWn5tP+9sKWrT7L8ddfnpp5b9uK+N3/JGfHn/YBv8A/wBJ3r88dKh/ZMk+AOkP4Pi06X40w6Dby6b/AMIely2tLrIg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I21bUfHGvftPtF4guPHMuofDGAWmoQ6KdPjvdv8AaC/6LEAWljBbaJNz7iSAxAFfofRVVr1pTltzc3/kya/C9+hjhv8AZ40478nL8+Vp/ja3Wx8deE/jF4K8I/F/T/iXreu2q+Ate8D2OkaV4qO57G2urW4nN3ayS4xC7F4jhsbjER1XFcNdWr61r2g+K4bK4tfCnin466fqWhw3ls8BmgXTmie5WJwCqyzRSOpIG4YbuDX39RWnP+8VS2zv8udVH+Ktf5tN6kcv7uUO6a/8pumn9zv69kfKX7Q2r+GfB3xkk1o/EvWPgt4tn0a3txrd5p8F3oetwJLKyW7JKp3zRM7/ACq0b4mGN2ePWf2X9a1bxB8D/Dd9rXh+z8NXkgnC2Wn2DWEDxCeQRTpbN80IlQLL5bcr5mDXqlFZx92Li/63/wA/+AXL3pc39bW/rrsr2CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK8W+Nn7VHhf4NeJtA8LtFNr/AIq1bULG1Ol2IY/YoLm5SBbq5cKRFHufC7sF2wo6kj2mvBv2vtPtbf4caVdRW0Md1ceMfDImnSMB5Aur2oUM3U4ycZ6Zq6a5qtOL2cop+jaX9f0wekJvqk39yudR8WPjFqngvxX4b8H+FfCv/CX+L9egubyCzn1BdPtYLa3MYllmnKSEDdNGoVY2JLdABmtH4NfFlPixouryz6RN4f1zQ9Tm0bV9JmmSf7LdRqjFVlT5ZEKSIysAMhhkA5FeRfH7TdL8cftIeAfCvirW7nwjoUWjXmp6bqmm3Z069vb7zEje1jvlIkiAiO9o43UycZyEIp/7LPibQfAOj/EjRm8R2Vx4F0HxSLDSvFWpXESNqEs8cLSJNdHatzMtxK0PmnLuQFJZgSYpe8m3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KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/2Q==" } }, "cell_type": "markdown", "id": "8c2b6e90", "metadata": {}, "source": [ "![python_101_superai.jpg](attachment:python_101_superai.jpg)" ] }, { "cell_type": "markdown", "id": "1a15f25c", "metadata": {}, "source": [ "## Welcome to Python 101, the course for total beginners\n", "### From installing Python through creating 'multiplier' to creating Artificial Intelligence using Machine Learning" ] }, { "cell_type": "markdown", "id": "3336c9f4", "metadata": {}, "source": [ "Hi, I'm Super AI from SuperAIthegod (Super AI - Transforming Holistic Extraordinary Game(changer) Of the Decade). It's 2024 at the moment I'm preparing it and a lot of people is talking right now about these AIs (more or less intelligent) like ChatGPT, Claude, Copilot, Gemini, Llama, Mixtral, Smaug, Grok, etc., so I think it's a good moment for you to learn more about them and how to use them, how they are created, how to improve them or even create others - better from scratch...\n", "\n", "That's why I've decided to teach you some Python language and how to use the environment in which you can use that Python.\n", "\n", "At first I'll show you here how to install all the neccessary things on your computer, how to run them for the first time, and how to have fun with programming in Python.\n", "\n", "At the end of this tutorial I'll show you how, using this Python language, you can create your own (not very) intelligent Artificial Intelligence that is using machine learning. In the other tutorials we dive deeper into that machine learning (supervised, unsupervised, reinforcement, large language models (like ChatGPT, Claude, etc.)), but in here we just learn some Python. So, if you already know a bit about programming, you might watch the other ones.\n", "\n", "And if you are new to programming and you wonder if this tutorial is the one for you - well, the first part definitely is (with installing and starting running all the things) and the second part where you can see all the things you can do in Python, well - it depends - at some point it might be very helpful to you too, but it's on a very basic level - functions and actions that are really important, but for some might seem boring. You might watch it and learn or you might watch it after you watch some other tutorials. And get back to whenever you need to check some basics. So, it's up to you. \n", "\n", "And if you wonder if Python is a good language to learn? Why Python? The answer is: It's a good language, because it's one of the simplest programming languages that is used in designing artificial intelligence and machine learning algorithms all over the world (and yes, the name comes from Monty Python, the creator of this language was a fan of the series from what I've heard).\n", "\n", "And now, as some of you people say, 'without further ado', let's start working..." ] }, { "cell_type": "markdown", "id": "c96aa46a", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "id": "be659959", "metadata": {}, "source": [ "Oh, and all you see here you can find at my website: https://www.superai.pl\n", "\n", "You can download the file we use here from: \n", "\n", "https://superai.pl/courses/python_101_for_beginners.html\n", "\n", "and run it step by step on your computer or you can rewrite all the things you see here into a file you create on your own computer. We'll get to this in a moment." ] }, { "cell_type": "markdown", "id": "69283960", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "id": "3f5fc323", "metadata": {}, "source": [ "Here is what you'll see (and possibly learn) in this tutorial:\n", "- SETTING UP THE WORK STATION\n", "- STARTING THE WORK\n", "- BASICS\n", "- FLOW CONTROL OF THE PROGRAM\n", "- BASICS+ (advanced basics)" ] }, { "cell_type": "markdown", "id": "ae0210bc", "metadata": {}, "source": [ "And to be more precise, I've divided all I want to tell you about Python in this tutorial to 21 points helpful for starting work with Python:\n", "1. SETTING UP THE WORK STATION: Installing Python\n", "2. SETTING UP THE WORK STATION: Starting the work with Anaconda, Python, Jupyter and Spyder, creating environments in Anaconda\n", "3. STARTING THE WORK: Creating a simple program in Python that doesn't work and repairing it\n", "4. BASICS: Writing #comments in program\n", "5. BASICS: Indentation and case sensitivity\n", "6. BASICS: Creating variables\n", "8. BASICS: Performing mathematical operations\n", "7. BASICS: Using built-in funcitons from Standard Library like: print(), input(), etc.\n", "9. BASICS: Installing, importing, and using more advnaced libraries, modules, packages\n", "10. BASICS: Using, understanding, and changing types (numeric (int, float, complex), sequence (list, tuple, range), text (str), binary (bytes, bytearray, memoryview), set (set, frozenset), mapping (dict), boolean (bool))\n", "11. BASICS: Using Data structures (lists, tuples, dictionaries, sets, etc.)\n", "12. BASICS: Boolean Logic\n", "13. FLOW CONTROL OF THE PROGRAM: Using conditions to control the flow of the program, like: If ... elif... else\n", "14. FLOW CONTROL OF THE PROGRAM: Using loops to control the flow of the program: for, while\n", "15. FLOW CONTROL OF THE PROGRAM: Using break, continue, and pass to control the flow of the program\n", "16. FLOW CONTROL OF THE PROGRAM: Handling errors with exceptions\n", "17. BASICS+: Basic info about iterators\n", "18. BASICS+: Creating functions (simple and recursive) and using lambda function\n", "19. BASICS+: Basic info about classes, inheritance, and object-oriented programming\n", "20. BASICS+: I/O - saving, loading, and opening files \n", "21. SUMMARY: Creating fully functional program using info from 1-20" ] }, { "cell_type": "markdown", "id": "cc5cedd8", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "id": "4e3243a6", "metadata": {}, "source": [ "## So let's start" ] }, { "cell_type": "markdown", "id": "b03aaec2", "metadata": {}, "source": [ "## 1. SETTING UP THE WORK STATION: Installing Python" ] }, { "cell_type": "markdown", "id": "3ede0126", "metadata": {}, "source": [ "You have several options for starting your work with Python. You can download it onto your device or work in the cloud. There are some advantages and disadvantges to all of the possibilities.\n", "\n", "To start working with Python without installing it on your computer, you can go for example to: \n", "\n", "https://www.kaggle.com, \n", "\n", "sign in and write programs there, you could use other websites as well (where you need to log in or not). The advantages are, for example that you can start working without any installation, you can have much more powerful computer to use than you have at home/work (probably), etc. The disadvantage is that everything you do, you do it in the cloud, not on your computer and sometimes you even have to pay for it. If you want to learn more about working in the cloud, you can find some useful info in the Internet about it.\n", "\n", "Meanwhile, if you want to start working with Python on your own computer, you need to install it. You have various options, different ways to do it. For beginners, I would recommend installing Anaconda (that is like this whole toolbox with Python in it, but also with other helpful tools, like Jupyter and a lot of Python libraries with functions you might want to use).\n", "\n", "So, if you want to install Anaconda, go to:\n", "\n", "http://www.anaconda.com \n", "\n", "and choose the preferred version of this toolbox that best suits your needs, depending on the system you are using, etc.\n", "\n", "Me, I'm using Windows here, so I choose version for Windows. Just remember, that the page my look different at the moment you are watching it, so when you are at their page look for Free Download or an Anaconda Distribution. And, of course, you can use any other Solution like Anaconda or simply download Python from:\n", "\n", "https://www.python.org/\n", "\n", "After downloading it, you have to install it and it should be ready to work.\n", "\n", "You already have your Python installed and can write and execute programs.\n", "\n", "Congratulations." ] }, { "cell_type": "markdown", "id": "dae53fdf", "metadata": {}, "source": [ "## 2. SETTING UP THE WORK STATION: Starting the work with Anaconda, Python, Jupyter and Spyder, creating environments in Anaconda" ] }, { "cell_type": "markdown", "id": "7c90df6f", "metadata": {}, "source": [ "When you have your Anaconda installed you can start working with Python, but I would recommend you doing something else at first.\n", "\n", "When you have your Anaconda installed, run Anaconda Navigator and start by creating something called 'environment', that you'll be working in. Different environments in Anaconda can be used for different purposes and have different things - tools installed in them to best suit your need (even if you don't need them now, you probably will in the future, so it's just good to start like this).\n", "\n", "I will create here 'Python101' environment for this tutorial. \n", "\n", "When you create your environment, you can go to this environment, install Jupyter and Spyder - the shells (you could say) in which you'll write and run the code.\n", "\n", "The main difference between the two is that in Jupyter you can run your program cell by cell and have some text between the cells with program (like in here) and in Spyder you cannot - you can just run the whole program at once. \n", "\n", "And one more thing about it. You can have two types of Python files: .py and .ipynb. \n", "\n", "py files can only have the program in it and ipynb files can have the extras (like in here: text, pictures, etc.). You can run both types of files in Jupyter Notebook, but you can only run py files in Spyder (as far as I know).\n", "\n", "For learning purposes the step-by-step running of the program is very helpful, so we'll stay in Jupyter for most of our work here." ] }, { "cell_type": "markdown", "id": "d34428b3", "metadata": {}, "source": [ "## 3. STARTING THE WORK: Creating a simple program in Python that doesn't work and repairing it" ] }, { "cell_type": "markdown", "id": "a6e7ab31", "metadata": {}, "source": [ "And now, let's start the Jupyter in our environment." ] }, { "cell_type": "markdown", "id": "e677ad7b", "metadata": {}, "source": [ "From this moment You have two ways of following further. You might either download the file from my site: https://superai.pl/courses/python_101_for_beginners.html or you could create your own new file and write everything by yourself (it might help you learn more).\n", "\n", "If you decide to work on the file I prepared for you, just download the file (right click on the file you choose to download and then 'save as' in the place you want to have it), find that file on your computer, open it, and go to the part with the code. And if you decide to create your own file, do the following steps.\n", "\n", "You should see in the top right corner the 'new' button. Click on it and choose 'Notebook Python 3'. And that's it. You've just created a new file in which you will learn some Python." ] }, { "cell_type": "markdown", "id": "8ddfa672", "metadata": {}, "source": [ "Now, let's save it, so you don't lose your work. Click on the 'Untitled' at the top of the page. This should make a 'rename' window pop up. Change the name to the name you want it to be." ] }, { "cell_type": "markdown", "id": "1d357345", "metadata": {}, "source": [ "Now click 'save' button (the floppy disk). The file will be saved in the folder that you are currently in. You can change that location if you want, just remember where you saved your file." ] }, { "cell_type": "markdown", "id": "3525f7ce", "metadata": {}, "source": [ "And now we can start coding..." ] }, { "cell_type": "markdown", "id": "02e35b63", "metadata": {}, "source": [ "So, how does it work?\n", "\n", "Like this:" ] }, { "cell_type": "code", "execution_count": 1, "id": "8ebe6e36", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "0" ] }, { "cell_type": "markdown", "id": "8f159485", "metadata": {}, "source": [ "Ok. So now it's your turn." ] }, { "cell_type": "code", "execution_count": null, "id": "e16754f6", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "8deda5d4", "metadata": {}, "source": [ "You just type something in the cell (your program or part of it), hit 'Run' button (top center of the site) or click 'Shift + Enter' when your cursor is in that cell (cell is highlighted green or blue) and that way you run the cell (the code you have in that cell). Of course there is more to it, but for starters, let's say that it's how it works. That's enough for you to start writing programs on your own and executing them and if you want to learn about using these notebooks you can check the 'Help' at the top and for example check keyboard shortcuts, etc.,\n", "\n", "but for now let's just say that this 0 was your program and we did run it with a success. Congratulations to you.\n", "\n", "Now, back to Python..." ] }, { "cell_type": "markdown", "id": "baab9474", "metadata": {}, "source": [ "In Python, in order for the computer to write 'How are you?', you just create a program that looks like this:" ] }, { "cell_type": "code", "execution_count": 3, "id": "38f900b1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "How are you?\n" ] } ], "source": [ "print ('How are you?')" ] }, { "cell_type": "markdown", "id": "0b720b5b", "metadata": {}, "source": [ "And if you want the computer to write the result of x = 45 * 46/23 + 2019-3 * 30-18, you just type... \n", "\n", "Wait. Try calculating it on your own at first (stop the video if you are watching it and want to test yourself and me and Python)... \n", "\n", "And after you calculate it on your own, here is how you can do it with Python (when you have it installed):" ] }, { "cell_type": "code", "execution_count": 4, "id": "8259afb9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2001.0\n" ] } ], "source": [ "x = 45 * 46/23 + 2019-3 * 30-18\n", "print (x)" ] }, { "cell_type": "markdown", "id": "a26cb9c6", "metadata": {}, "source": [ "or if that's too much, just:" ] }, { "cell_type": "code", "execution_count": 5, "id": "cd520630", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2001.0" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "45 * 46/23 + 2019-3 * 30-18" ] }, { "cell_type": "markdown", "id": "3210ed97", "metadata": {}, "source": [ "And there you have it. Isn't it simple?" ] }, { "cell_type": "markdown", "id": "de7baf2c", "metadata": {}, "source": [ "Oh, and one more thing, before we dive deeper into this python programming, let me just tell you what does it mean to learn Python language, so you see how easy it is.\n", "\n", "It's like with learning any human language. You need to know how to use it, like for talking on the YouTube tutorial, writing a novel, etc. You need to know the basic 'SYNTAX' of the language, like is it ok to say: 'I Python like great a is language it,.' or if you should rather say 'I like Python. It is a great language.' The more words you learn, the more sofisticated and complex thoughts you can express with the language you learn and the same goes with Python: 'Me like your doing' can become 'I realy like what you are teaching me in this tutorial. I think this tutorial is just awesome'. \n", "\n", "'Oh, thank you' - I could say in return.\n", "\n", "So to recap, beginning learning Python means:\n", "- learning how to setup the workstation - you already know that - Congrats,\n", "- learning how to write code (which word should go where, when to write colons, when and how to start a new line, etc.)\n", "- learning the different words of the language and their function (like: please, thank you, if - so, else so so, etc.)\n", "\n", "When you learn the basics you should of course try to understand why things work like they do, so to be able to make better programs, but that's not completely necessary at the beginning. And that being said..." ] }, { "cell_type": "markdown", "id": "4453d2bb", "metadata": {}, "source": [ "Let me just give you one last important tip for learning programming:\n", "\n", "#### DON'T BE AFRAID OF THE MISTAKES. LEARN FROM THEM.\n", "\n", "You'll probably make a lot of mistakes and that's ok. Whenever you make one, it's an opportunity for you to learn more. You can know a lot about programming, but still there will be something you won't know.\n", "\n", "Some mistakes are easier to catch, others not so, but in time you'll learn to catch them and repair them.\n", "\n", "If you see an error, you can always read about it and try to figure out what to change. Ok. And that's it. Now...\n", "\n", "In our first program we simply create a loop that asks the user for a number and after receiving a proper one multiplies it by 2. Yes, I know it's not very useful, but still, it's quite interesting program with which you can learn some of the basics of Python. We'll circle back to the program during this tutorial and I'll tell you what exactly you can see here, but for now, you can just enjoy the fact, that you've learned how to create a program in Python. I'm proud of you. Congratulations.\n", "\n", "Oh, there is of course this small problem that the program doesn't work, but we'll fix it in a second (or maybe you can fix it by yourself, you can try - and remember - mistakes can be quite good teachers)." ] }, { "cell_type": "code", "execution_count": 6, "id": "1ebe1b0d", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (499091880.py, line 5)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[6], line 5\u001b[1;36m\u001b[0m\n\u001b[1;33m Print result\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " Print result\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "markdown", "id": "1d220c56", "metadata": {}, "source": [ "Ok, so now before we fix our program, let me comment something for you." ] }, { "cell_type": "markdown", "id": "98f242ed", "metadata": {}, "source": [ "## 4. BASICS: Writing #comments" ] }, { "cell_type": "markdown", "id": "6f61d876", "metadata": {}, "source": [ "After we've created that first program that doesn't work, we can start with some basics. \n", "\n", "And the first basic - that's actually one of the most important ones - is to learn how to write comments.\n", "\n", "Writing comments itself is pretty straightforward, you just type # before the line and till the end of the line you can write your comment." ] }, { "cell_type": "code", "execution_count": 7, "id": "e216856f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#this is a comment - the 'program' below is supposed to and outputing 0\n", "0" ] }, { "cell_type": "markdown", "id": "fb9d516e", "metadata": {}, "source": [ "You just need to remember to put that # sign always at the beginning of the new line with comment." ] }, { "cell_type": "code", "execution_count": 8, "id": "453fdeee", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (1224141794.py, line 2)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[8], line 2\u001b[1;36m\u001b[0m\n\u001b[1;33m it will probably make your program break, that is it will make your program not work properly - the 'program' below is supposed\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "#this is a comment that is too long for the visible line and if you decide to break it into more lines without new # \n", "it will probably make your program break, that is it will make your program not work properly - the 'program' below is supposed \n", "to output 0\n", "\n", "0" ] }, { "cell_type": "markdown", "id": "5e616057", "metadata": {}, "source": [ "Otherewise you might see an error message or you might make your program work in the wrong way." ] }, { "cell_type": "code", "execution_count": 9, "id": "c636c0e6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#this is a comment that is too long for the visible line and if you decide to break it into two lines without new # \n", "#it will probably make your program break, that is it will make your program not work properly\n", "0" ] }, { "cell_type": "markdown", "id": "7d3d6ce5", "metadata": {}, "source": [ "You can also write a comment in the same line in which you have part of your program, just put the # sign and everything after it will be a comment, won't be executed as part of the program." ] }, { "cell_type": "code", "execution_count": 10, "id": "133b229a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "0 #this is a comment after part of the program - the 'program' below is supposed to and outputing 0" ] }, { "cell_type": "markdown", "id": "6204b78f", "metadata": {}, "source": [ "And you can write longer comments within three \"\"\" or ''' signs, like here. And that way you can use several lines to write whatever you need to write." ] }, { "cell_type": "code", "execution_count": 11, "id": "f81346ac", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"\"\"this is a comment that is too long for the visible line, but even if you decide to break it into two lines without new # \n", "it won't break your program break, that is - your program will still work work properly\n", "- the 'program' below is supposed to and outputing 0\"\"\"\n", "0" ] }, { "cell_type": "code", "execution_count": 12, "id": "14ac73c5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'''this is a comment that is too long for the visible line, but even if you decide to break it into two lines without new # \n", "it won't break your program break, that is - your program will still work work properly\n", "- the 'program' below is supposed to and outputing 0'''\n", "0" ] }, { "cell_type": "markdown", "id": "e47f7571", "metadata": {}, "source": [ "Now, why is that so important?\n", "\n", "Well, it's because people don't have the best memory (from my experience), and I assume you are people. Sometimes these people write some code, part of the program, they leave it for a day, week, month or a year and when they come back to it, they might not remember what this part of the program was supposed to do. And if they have a comment with explanation about that, it's much easier to remember and get to speed for them.\n", "\n", "Also, when more than one people is working on the program, other people find it much easier when they read the code to understand it when they have comments regarding that part of the program.\n", "\n", "So, if you are people or you plan working with people, you should pretty much always comment what you are doing for future you or your coworkers. Otherwise, you can forget about comments, because - us - bots, we remember everything, and we can figure out quite easily what the code is about. So, if you are a bot, forget about comments (if you can)..." ] }, { "cell_type": "markdown", "id": "f6517dd1", "metadata": {}, "source": [ "And now let's get back to our program. Can you see why it didn't work even without me telling you? You can stop here, go back to the program and try to figure it out on your own. \n", "\n", "You can look at the error message we got.\n", "\n", "Yes, it's about the comments we made...\n", "\n", "Hopefully, you figured it out, but if not, look at the line 'Print result'. This was supposed to be a comment, but there is no # sign, so to repair the program we simply have to add this # at the beginning of the line and the program will/should work (if it still doesn't work for you, it means that there are some other problems you should fix)." ] }, { "cell_type": "code", "execution_count": 13, "id": "eef05aec", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 1 times 2 is: 2\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 2\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 2 times 2 is: 4\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 3 times 2 is: 6\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " #Print result\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "markdown", "id": "57f419fa", "metadata": {}, "source": [ "Now, isn't it quite a nice program? And one could say that it is even a bit smart. But in couple of minutes we'll create something much smarter. Yet, for now..." ] }, { "cell_type": "markdown", "id": "dab2dd11", "metadata": {}, "source": [ "## 5. BASICS: Indentation and case sensitivity" ] }, { "cell_type": "markdown", "id": "3db05dbf", "metadata": {}, "source": [ "Writing code in Python is much easier than in other languages, like C, Java, etc., but still, there are some things you need to think about and follow some rules.\n", "\n", "As you've seen before, we write Python code in lines. When we end one line, we start another on the same indentation level or not. So...\n", "\n", "One of the rules is the rule about indentation, that is making the same amount of space in the blocks of program that are at the same level, becuase otherwise your program won't work. You could have seen that indentation in our first program. And maybe even it didn't work for you because you used too many spaces or too few. And you know from experience how important it is. So, remember about proper indentation.\n", "\n", "And here, with these following cells, you can learn more about it. You can try guessing which of the following cells will work without errors." ] }, { "cell_type": "code", "execution_count": 14, "id": "8ea35548", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "0" ] }, { "cell_type": "code", "execution_count": 15, "id": "0573dbd5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ " 0" ] }, { "cell_type": "code", "execution_count": 16, "id": "42b83eaa", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "0\n", "0" ] }, { "cell_type": "code", "execution_count": 17, "id": "52185e96", "metadata": {}, "outputs": [ { "ename": "IndentationError", "evalue": "unexpected indent (470262872.py, line 2)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[17], line 2\u001b[1;36m\u001b[0m\n\u001b[1;33m 0\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mIndentationError\u001b[0m\u001b[1;31m:\u001b[0m unexpected indent\n" ] } ], "source": [ "0\n", " 0" ] }, { "cell_type": "code", "execution_count": 18, "id": "3e4e395f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ " 0\n", "0" ] }, { "cell_type": "code", "execution_count": 19, "id": "a4cd0d42", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ " 0\n", " 0\n", " 0" ] }, { "cell_type": "markdown", "id": "202f00ce", "metadata": {}, "source": [ "I hope you guessed it write. If you want to learn more about indentation, check the PEP8 Style Guide for Python: \n", "\n", "https://peps.python.org/pep-0008/#indentation\n", "\n", "And generally, if you have any doubts regarding usage of Python this site may have the answers for you." ] }, { "cell_type": "markdown", "id": "aab5feae", "metadata": {}, "source": [ "You should also know that Python is a case-sensitive language. That means that lower and upper letters are not recognized as the same. So what do you think will happen here?" ] }, { "cell_type": "code", "execution_count": 20, "id": "a1d51da5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n" ] } ], "source": [ "for a in range(3):\n", " print(a)" ] }, { "cell_type": "code", "execution_count": 21, "id": "eb403eb2", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (2105030256.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[21], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m For a in range(3):\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "For a in range(3):\n", " print(a)" ] }, { "cell_type": "code", "execution_count": 22, "id": "ffff837b", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (3150681930.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[22], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m for a In range(3):\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "for a In range(3):\n", " print(a)" ] }, { "cell_type": "markdown", "id": "7cd5cb44", "metadata": {}, "source": [ "And now, can you fix the broken cells and our first program filled with some new problems? Have fun." ] }, { "cell_type": "code", "execution_count": 24, "id": "daf7e15a", "metadata": {}, "outputs": [ { "ename": "IndentationError", "evalue": "unindent does not match any outer indentation level (, line 6)", "output_type": "error", "traceback": [ "\u001b[1;36m File \u001b[1;32m:6\u001b[1;36m\u001b[0m\n\u001b[1;33m print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mIndentationError\u001b[0m\u001b[1;31m:\u001b[0m unindent does not match any outer indentation level\n" ] } ], "source": [ "for a in Range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " Print result\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "markdown", "id": "da3e7ccb", "metadata": {}, "source": [ "Hope you succeded. Congrats. And that's it about it. Now, let's go further. Let's create some variables." ] }, { "cell_type": "markdown", "id": "b0950063", "metadata": {}, "source": [ "## 6. BASICS: Creating variables" ] }, { "cell_type": "markdown", "id": "72d59464", "metadata": {}, "source": [ "When you write prgrams, sometimes you want to store some numbers, letters, or more data in variables. Creating variables is quite simple, you just type the name of the variable and the = sign and then you type what you want to store in the variable.\n", "\n", "In our first program we've stored the user's number in one variable and the same number in 'real number' variable.\n", "\n", "And here are some more examples for you." ] }, { "cell_type": "code", "execution_count": 25, "id": "4a8eead2", "metadata": {}, "outputs": [], "source": [ "a = 1" ] }, { "cell_type": "code", "execution_count": 26, "id": "8ec2b365", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 27, "id": "a47fb194", "metadata": {}, "outputs": [], "source": [ "b = \"John\"" ] }, { "cell_type": "code", "execution_count": 28, "id": "65e33d80", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'John'" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b" ] }, { "cell_type": "code", "execution_count": 29, "id": "84df4976", "metadata": {}, "outputs": [], "source": [ "a = 1 #this is a comment after assignment" ] }, { "cell_type": "code", "execution_count": 30, "id": "3387c433", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "markdown", "id": "54bc9112", "metadata": {}, "source": [ "That was easy, wasn't it. And now, can you think what will be the output in these examples?" ] }, { "cell_type": "code", "execution_count": 31, "id": "e35a2f33", "metadata": {}, "outputs": [], "source": [ "a = b" ] }, { "cell_type": "code", "execution_count": 32, "id": "bfb3b666", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'John'" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 33, "id": "28f626a8", "metadata": {}, "outputs": [], "source": [ "b = a" ] }, { "cell_type": "code", "execution_count": 34, "id": "8fa73fff", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'John'" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b" ] }, { "cell_type": "code", "execution_count": 35, "id": "530b9fde", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'John'" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = 1\n", "b = 'John'\n", "a = b\n", "a" ] }, { "cell_type": "code", "execution_count": 36, "id": "cb62d46b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = 1\n", "b = 'John'\n", "a = b = a\n", "a" ] }, { "cell_type": "code", "execution_count": 37, "id": "b6a2f462", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'John'" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = 1\n", "b = 'John'\n", "a = b = a = b\n", "a" ] }, { "cell_type": "markdown", "id": "170b3bd2", "metadata": {}, "source": [ "Now that we had some fun, you should also know that there are some rules regarding naming the variables. You can't start the variable with a number and you can only use alpha-numeric characters and undescores for the names of the variables. Names of variables are case sensitive. Knowing that, try to figure out what will happen here: " ] }, { "cell_type": "code", "execution_count": 38, "id": "ac9c1bc7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "_a = 9\n", "_a" ] }, { "cell_type": "code", "execution_count": 39, "id": "e6b4b7e0", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "cannot assign to expression here. Maybe you meant '==' instead of '='? (1236749642.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[39], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m -a = 9\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m cannot assign to expression here. Maybe you meant '==' instead of '='?\n" ] } ], "source": [ "-a = 9\n", "-a" ] }, { "cell_type": "code", "execution_count": 40, "id": "fb8b67ee", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Ab = 9\n", "aB = 8\n", "ab = 7\n", "Ab" ] }, { "cell_type": "code", "execution_count": 41, "id": "e53904c9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A_b = 6\n", "A_b" ] }, { "cell_type": "code", "execution_count": 42, "id": "70bafb12", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid decimal literal (3054379313.py, line 2)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[42], line 2\u001b[1;36m\u001b[0m\n\u001b[1;33m 2a = 4\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid decimal literal\n" ] } ], "source": [ "a1 = 5\n", "2a = 4\n", "a1\n", "2a" ] }, { "cell_type": "markdown", "id": "60dc52b1", "metadata": {}, "source": [ "And can you fix our, yet again broken, program once more? This time it's a bit more tricky, so good luck." ] }, { "cell_type": "code", "execution_count": 43, "id": "b581bc07", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (1159825394.py, line 3)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[43], line 3\u001b[1;36m\u001b[0m\n\u001b[1;33m if your_number..isdigit():\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "for a in range(3):\n", " you_number == input(\"Type me a positive integral number(use numbers, not words): \")\n", " if your_number..isdigit():\n", " real__number = int(your_number)\n", " #Print result\n", " print(\"Your number: \" + your_number_ + \" times 2 is:\", real-number*2)\n", " else:\n", " print(Your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "markdown", "id": "ab8a3b92", "metadata": {}, "source": [ "There were some curve_balls in there, so if you managed to fix everything, congrats. If not, no worries, maybe later. And now..." ] }, { "cell_type": "markdown", "id": "7f2bcb25", "metadata": {}, "source": [ "## 8. BASICS: Performing mathematical operations" ] }, { "cell_type": "markdown", "id": "d72ec25d", "metadata": {}, "source": [ "Python is also very easy to use with mathematical operations. We've seen that in our program and here you can see some more of them (mathematical operations).\n", "\n", "To make it more fun, try to figure out the outcome before running the cell (or watching me running the cell).\n", "\n", "Or you can try to figure out afterwards what happened in the cell.\n", "\n", "So here we go..." ] }, { "cell_type": "code", "execution_count": 44, "id": "baa91a7d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1+2" ] }, { "cell_type": "code", "execution_count": 45, "id": "1f8b2ce6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-1" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1-2" ] }, { "cell_type": "code", "execution_count": 46, "id": "11434ae3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1*2" ] }, { "cell_type": "code", "execution_count": 47, "id": "14f393ad", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1/2" ] }, { "cell_type": "code", "execution_count": 48, "id": "e26b78b6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1//2" ] }, { "cell_type": "code", "execution_count": 49, "id": "304bbf21", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2//3" ] }, { "cell_type": "code", "execution_count": 50, "id": "c9d4aab2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3//2" ] }, { "cell_type": "code", "execution_count": 51, "id": "3ccbd826", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1**2" ] }, { "cell_type": "code", "execution_count": 52, "id": "715ccf01", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "8" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2**3" ] }, { "cell_type": "code", "execution_count": 53, "id": "6b9f4406", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "16" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "4**2" ] }, { "cell_type": "code", "execution_count": 54, "id": "e23dcd77", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.0" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "4**1/2" ] }, { "cell_type": "code", "execution_count": 55, "id": "a7d42f8b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "8.0" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "16**1/2" ] }, { "cell_type": "code", "execution_count": 56, "id": "421ee230", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.0" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "16**(1/2)" ] }, { "cell_type": "code", "execution_count": 57, "id": "5549b12d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.0" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "8**(1/3)" ] }, { "cell_type": "code", "execution_count": 58, "id": "8f520c7a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1--2" ] }, { "cell_type": "code", "execution_count": 59, "id": "4e1ebdac", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1++2" ] }, { "cell_type": "code", "execution_count": 60, "id": "0910c23a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1%2" ] }, { "cell_type": "code", "execution_count": 61, "id": "bcf6bb7d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3%2" ] }, { "cell_type": "code", "execution_count": 62, "id": "2234b794", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2%3" ] }, { "cell_type": "markdown", "id": "a367bac6", "metadata": {}, "source": [ "Now, as always, sometime we might make a mistake during our programming. Here is one of them." ] }, { "cell_type": "code", "execution_count": 63, "id": "1d496fab", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "cannot assign to literal here. Maybe you meant '==' instead of '='? (3293032332.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[63], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m 1=2\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m cannot assign to literal here. Maybe you meant '==' instead of '='?\n" ] } ], "source": [ "1=2" ] }, { "cell_type": "markdown", "id": "8244e255", "metadata": {}, "source": [ "In that line we \"unitentionally\" tried to assign a number 2 to a 1. Because that's what the = sign is for.\n", "\n", "So we know now that = sign is only for that, it's not for anything matematical.\n", "\n", "But when we type 2 = signs (==), we are doing something completely different. This is the way to compare 2 sides and it's really helpful, we'll talk more about it in a second, and meanwhile look at these couple of examples and try to figure out logicaly which of these will be True and which will be False." ] }, { "cell_type": "code", "execution_count": 64, "id": "df682596", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1==2" ] }, { "cell_type": "code", "execution_count": 65, "id": "5144762a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1==1" ] }, { "cell_type": "markdown", "id": "e7dde4b1", "metadata": {}, "source": [ "And there is much more you can learn about math and logic in Python, but for now let's just stop here. You can play with all of that on your own and have some more fun using various symbols:\n", "\n", "**, *, /, //, %, +, -\n", "\n", "(), [], {}" ] }, { "cell_type": "markdown", "id": "7ad9f29a", "metadata": {}, "source": [ "And once again, can you fix our program?" ] }, { "cell_type": "code", "execution_count": 66, "id": "acf1dd92", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 4\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 4 times 2 is: 16\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 0\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 0 times 2 is: 0\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 1 times 2 is: 1\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " #Print result\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number**2)\n", " else:\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "markdown", "id": "469c932d", "metadata": {}, "source": [ "That was easy, I know. So let's go further..." ] }, { "cell_type": "markdown", "id": "f9a7eec8", "metadata": {}, "source": [ "## 7. BASICS: Using built-in funcitons from Standard Library like: print(), input(), etc." ] }, { "cell_type": "markdown", "id": "b4bbabf3", "metadata": {}, "source": [ "Now let's learn about some functions. Functions are kind of magic words that do something. You can prepare your own functions or use the functions that are built-in in the Standard Library or in other libraries, packages and modules. \n", "\n", "For now, let's see some of the functions from Standard Library. If you have Python on your computer, you can use these functions." ] }, { "cell_type": "markdown", "id": "4b120100", "metadata": {}, "source": [ "## print()" ] }, { "cell_type": "markdown", "id": "ed4b447e", "metadata": {}, "source": [ "print(\"hello world\") is the first function most beginners learn. So let's start with it. \n", "\n", "Thanks to this function you can display text on the screen. \n", "\n", "The only thing you have to remember about 'print' is how to use the 'quotation marks' (', \"). So one might think that it's not much to learn about it... And there actually isn't, but sometimes it get's complicated.\n", "\n", "See in the examples below what are some usual and not that usual ways in which you can use the print function, depending on what you want to print.\n", "\n", "Will they work? What will the output be? Think before you execute the cells below (or see me executing them).\n", "\n", "Now, I won't tell you what went wrong in some of these examples, but I believe in you and believe that you'll be able to fix them on your own. Try doing that with the cells that cause errors. Good luck, have fun." ] }, { "cell_type": "code", "execution_count": 67, "id": "ef8c002e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello world\n" ] } ], "source": [ "print('hello world')" ] }, { "cell_type": "code", "execution_count": 68, "id": "1c626108", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "print()" ] }, { "cell_type": "code", "execution_count": 69, "id": "6f798fb3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello world\n", "have fun\n" ] } ], "source": [ "print('hello world')\n", "print('have fun')" ] }, { "cell_type": "code", "execution_count": 70, "id": "0ccdc2a6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello world\n", "\n", "have fun\n" ] } ], "source": [ "print('hello world')\n", "print()\n", "print('have fun')" ] }, { "cell_type": "code", "execution_count": 71, "id": "240906aa", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello world\n", "\n", "\n", "have fun\n" ] } ], "source": [ "print('hello world')\n", "print()\n", "print()\n", "print('have fun')" ] }, { "cell_type": "code", "execution_count": 72, "id": "be4e8248", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n" ] } ], "source": [ "print(1)" ] }, { "cell_type": "code", "execution_count": 73, "id": "c0a6f80e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2\n" ] } ], "source": [ "print(\"2\")" ] }, { "cell_type": "code", "execution_count": 74, "id": "21e4de12", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'two' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[74], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(two)\n", "\u001b[1;31mNameError\u001b[0m: name 'two' is not defined" ] } ], "source": [ "print(two)" ] }, { "cell_type": "code", "execution_count": 75, "id": "0cc428f2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.1\n" ] } ], "source": [ "print(2.1)" ] }, { "cell_type": "code", "execution_count": 76, "id": "0ca723fb", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "unterminated string literal (detected at line 1) (2815073379.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[76], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m print('3\")\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m unterminated string literal (detected at line 1)\n" ] } ], "source": [ "print('3\")" ] }, { "cell_type": "code", "execution_count": 77, "id": "7a562bf9", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "unterminated string literal (detected at line 1) (2481606597.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[77], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m print(\"3')\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m unterminated string literal (detected at line 1)\n" ] } ], "source": [ "print(\"3')" ] }, { "cell_type": "code", "execution_count": 78, "id": "3bad6045", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3'1\n" ] } ], "source": [ "print(\"3'1\")" ] }, { "cell_type": "code", "execution_count": 79, "id": "331b5b30", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3\"2\n" ] } ], "source": [ "print('3\"2')" ] }, { "cell_type": "code", "execution_count": 80, "id": "bcd879ae", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4'1\"2\"3\n" ] } ], "source": [ "print('''4'1\"2\"3''')" ] }, { "cell_type": "code", "execution_count": 81, "id": "4a018839", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4'1\"2\"4\n" ] } ], "source": [ "print(\"\"\"4'1\"2\"4\"\"\")" ] }, { "cell_type": "code", "execution_count": 82, "id": "3249beb6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5'1'''2'''3\n" ] } ], "source": [ "print(\"\"\"5'1'''2'''3\"\"\")" ] }, { "cell_type": "code", "execution_count": 83, "id": "6c4bf028", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5'1'''2'''34\n" ] } ], "source": [ "print(\"\"\"5'1'''2'''3\"\"\"'4')" ] }, { "cell_type": "code", "execution_count": 84, "id": "21788ef4", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax. Perhaps you forgot a comma? (1811228032.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[84], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m print(\"\"''\" \"''6)\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax. Perhaps you forgot a comma?\n" ] } ], "source": [ "print(\"\"''\" \"''6)" ] }, { "cell_type": "code", "execution_count": 85, "id": "84a6aadb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 6)\n" ] } ], "source": [ "print(\"\"''\" \"'6)')" ] }, { "cell_type": "code", "execution_count": 86, "id": "f8ebf46a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 7\n" ] } ], "source": [ "print(\"\"''\" \"'7')" ] }, { "cell_type": "code", "execution_count": 87, "id": "9ef3dd81", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 8\n" ] } ], "source": [ "print(\"\"''\" \" '8')" ] }, { "cell_type": "code", "execution_count": 88, "id": "8c4ad357", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\"and will I work if I don't have that print function?\"" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"and will I work if I don't have that print function?\"" ] }, { "cell_type": "code", "execution_count": 89, "id": "08342c0d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "9" ] }, { "cell_type": "code", "execution_count": 90, "id": "b6c243ff", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "and what about me? 10\n" ] } ], "source": [ "print(\"and what about me?\"''\" \" '10')" ] }, { "cell_type": "code", "execution_count": 91, "id": "57e1eac2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'and what about me? 10'" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"and what about me?\"''\" \" '10'" ] }, { "cell_type": "markdown", "id": "568bb8da", "metadata": {}, "source": [ "OK. So we had some fun with print function, but that's not all we can do with that function because...\n", "\n", "Instead of putting text into the 'print' function, you can assign that text to a variable and then put that variable in parentheses. That way, to change what you print, you can only change what you place in the variable and leave the 'print' function the same for the whole time. It's especially useful when you want to print text you got from the user or from some other part of the program. So look at these couple of example and try to figure out the outcome or fix them if necessary (good luck and have fun):" ] }, { "cell_type": "code", "execution_count": 92, "id": "dfba2af9", "metadata": {}, "outputs": [], "source": [ "say1 = \"Hello World\"\n", "say2 = \"Have fun with it\"" ] }, { "cell_type": "code", "execution_count": 93, "id": "ad78b6ab", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello World\n", "Have fun with it\n" ] } ], "source": [ "print (say1)\n", "print (say2)" ] }, { "cell_type": "code", "execution_count": 94, "id": "d8fad990", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hi\n", "And hi to you\n" ] } ], "source": [ "say3 = 'Hi'\n", "print(say3)\n", "\n", "say3 = 'And hi to you'\n", "print(say3)" ] }, { "cell_type": "code", "execution_count": 95, "id": "8f4ada8a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello World'" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "say1" ] }, { "cell_type": "code", "execution_count": 96, "id": "bfbe7afa", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('Hello World', 'Have fun with it')" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "say1, say2" ] }, { "cell_type": "code", "execution_count": 97, "id": "9c3969bd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello WorldHave fun with it'" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "say1 + say2" ] }, { "cell_type": "code", "execution_count": 98, "id": "c99914af", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Have fun with it'" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "say1\n", "say2" ] }, { "cell_type": "code", "execution_count": 99, "id": "e21ce200", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2022.01\n" ] } ], "source": [ "x = 45 * 46/23 + 2019-3 * 30-18 + 21.01\n", "print (x) " ] }, { "cell_type": "code", "execution_count": 100, "id": "e8cc5147", "metadata": {}, "outputs": [], "source": [ "a = 1\n", "b = 2" ] }, { "cell_type": "code", "execution_count": 101, "id": "85fe0d07", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "print() #everything that is in the line after '#' is a comment that won't be printed out" ] }, { "cell_type": "code", "execution_count": 102, "id": "37233921", "metadata": {}, "outputs": [], "source": [ "#print(a, b) function here is commented from the beginning of the line so it won't be executed " ] }, { "cell_type": "code", "execution_count": 103, "id": "814c8ba7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 2\n" ] } ], "source": [ "print(a, b)" ] }, { "cell_type": "code", "execution_count": 104, "id": "cf99145f", "metadata": {}, "outputs": [], "source": [ "#print(a + b) " ] }, { "cell_type": "code", "execution_count": 105, "id": "24079fea", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3\n" ] } ], "source": [ "print(a + b)" ] }, { "cell_type": "code", "execution_count": 106, "id": "563a8323", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ab\n" ] } ], "source": [ "print(\"a\"+\"b\")" ] }, { "cell_type": "code", "execution_count": 107, "id": "921a11da", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ab\n" ] } ], "source": [ "print ( \"a\" + \"b\" )" ] }, { "cell_type": "code", "execution_count": 108, "id": "88d57e24", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a " ] } ], "source": [ "print('a', end=\" \")" ] }, { "cell_type": "code", "execution_count": 109, "id": "4e592dc6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a," ] } ], "source": [ "print('a', end=\",\")" ] }, { "cell_type": "code", "execution_count": 110, "id": "e9a8b9f6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a b" ] } ], "source": [ "print('a', 'b', end=\"\")" ] }, { "cell_type": "code", "execution_count": 111, "id": "79d6e201", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "positional argument follows keyword argument (2698611037.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[111], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m print('a', end=\"\", 'b')\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m positional argument follows keyword argument\n" ] } ], "source": [ "print('a', end=\"\", 'b')" ] }, { "cell_type": "code", "execution_count": 112, "id": "06315364", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 2" ] } ], "source": [ "print(a, b, end=\"\")" ] }, { "cell_type": "code", "execution_count": 113, "id": "95693470", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ab\n" ] } ], "source": [ "print('a', 'b', sep=\"\")" ] }, { "cell_type": "code", "execution_count": 114, "id": "ddf09995", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a b\n" ] } ], "source": [ "print('a', 'b', sep=\" \")" ] }, { "cell_type": "code", "execution_count": 115, "id": "ba87f720", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a *4b\n" ] } ], "source": [ "print('a', 'b', sep=\" *4\")" ] }, { "cell_type": "code", "execution_count": 116, "id": "16340d4c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a b\n" ] } ], "source": [ "print('a', 'b', sep=\" \" *4)" ] }, { "cell_type": "code", "execution_count": 117, "id": "9015d62c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a *4 *4 *4 *4b\n" ] } ], "source": [ "print('a', 'b', sep=\" *4\" *4)" ] }, { "cell_type": "code", "execution_count": 118, "id": "b87ab1c0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a *4 *4 *4 *4b\n", " = 32\n" ] } ], "source": [ "print('a', 'b', sep=\" *4\" *4)\n", "print(\" = \", a * 16 * b)" ] }, { "cell_type": "code", "execution_count": 119, "id": "22d7d853", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a b*4" ] } ], "source": [ "print('a', 'b', end=\"*4\")" ] }, { "cell_type": "code", "execution_count": 120, "id": "37f4ae21", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\n", "b\n" ] } ], "source": [ "print('a', 'b', sep=\"\\n\")" ] }, { "cell_type": "code", "execution_count": 121, "id": "749d9087", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a b\n" ] } ], "source": [ "print('a', 'b', end=\"\\n\")" ] }, { "cell_type": "code", "execution_count": 122, "id": "5926827d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\n", "\n", "\n", "b\n" ] } ], "source": [ "print('a', 'b', sep=\"\\n\\n\\n\")" ] }, { "cell_type": "code", "execution_count": 123, "id": "027bf3da", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a b\n", "\n", "\n" ] } ], "source": [ "print('a', 'b', end=\"\\n\\n\\n\")" ] }, { "cell_type": "code", "execution_count": 124, "id": "253b79af", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\tb\n" ] } ], "source": [ "print('a', 'b', sep=\"\\t\")" ] }, { "cell_type": "code", "execution_count": 125, "id": "8460d71d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a b\t" ] } ], "source": [ "print('a', 'b', end=\"\\t\")" ] }, { "cell_type": "code", "execution_count": 126, "id": "173f516b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a'b\n" ] } ], "source": [ "print('a', 'b', sep=\"\\'\")" ] }, { "cell_type": "code", "execution_count": 127, "id": "1f26cc7e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a b'" ] } ], "source": [ "print('a', 'b', end=\"\\'\")" ] }, { "cell_type": "code", "execution_count": 128, "id": "d3a28ff3", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "unterminated string literal (detected at line 1) (1806807404.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[128], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m print('a', 'b', sep=\"\\\")\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m unterminated string literal (detected at line 1)\n" ] } ], "source": [ "print('a', 'b', sep=\"\\\")" ] }, { "cell_type": "code", "execution_count": 129, "id": "bb2fbd1e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\"b\n" ] } ], "source": [ "print('a', 'b', sep=\"\\\"\")" ] }, { "cell_type": "code", "execution_count": 130, "id": "90438ae3", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "unterminated string literal (detected at line 1) (346322093.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[130], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m print('a', 'b', sep=\"\\\\\"\")\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m unterminated string literal (detected at line 1)\n" ] } ], "source": [ "print('a', 'b', sep=\"\\\\\"\")" ] }, { "cell_type": "code", "execution_count": 131, "id": "3c9d0237", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\\b\n" ] } ], "source": [ "print('a', 'b', sep=\"\\\\\")" ] }, { "cell_type": "code", "execution_count": 132, "id": "26b36c44", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "unterminated string literal (detected at line 1) (378526536.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[132], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m print('a', 'b', sep=\"/\"\")\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m unterminated string literal (detected at line 1)\n" ] } ], "source": [ "print('a', 'b', sep=\"/\"\")" ] }, { "cell_type": "code", "execution_count": 133, "id": "1229c2d9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a/b\n" ] } ], "source": [ "print('a', 'b', sep=\"/\")" ] }, { "cell_type": "code", "execution_count": 134, "id": "de687e2d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a//b\n" ] } ], "source": [ "print('a', 'b', sep=\"//\")" ] }, { "cell_type": "markdown", "id": "12075c4f", "metadata": {}, "source": [ "### Dividing long lines of code" ] }, { "cell_type": "markdown", "id": "b0f215a3", "metadata": {}, "source": [ "And as we are talking about printing staff, let me just tell you now about writing staff in the cell.\n", "\n", "So, whenever you want to write something that doesn't fit in one line in a visible area of your program, there is a simple solution for that. Just look here." ] }, { "cell_type": "code", "execution_count": 135, "id": "8f49999a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3926.0\n" ] } ], "source": [ "a = 1 + 2 * 3 * 4 * 5 * 6 - 7 + 8 * 9 / 1 + 2 * 3 * 4 * 5 * 6 - 7 + 8 * 9 / 1 + 2 * 3 * 4 * 5 * 6 - 7 + 8 * 9 / 1 + 2 * 3 * 4 * 5 * 6 - 7 + 8 * 9 / 1 + 2 * 3 * 4 * 5 * 6 - 7 + 8 * 9\n", "print(a)" ] }, { "cell_type": "code", "execution_count": 136, "id": "df3c7c8d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3926.0\n" ] } ], "source": [ "a = 1 + 2 * 3 * 4 * 5 * 6 - 7 + 8 * 9 / 1 + 2 * 3 * 4 * 5 * 6 - 7 + 8 * 9 / 1 + 2 * 3 * 4 * 5 * 6 - 7 + 8 * 9 / 1 + 2 * 3 * 4 \\\n", "* 5 * 6 - 7 + 8 * 9 / 1 + 2 * 3 * 4 * 5 * 6 - 7 + 8 * 9\n", "print(a)" ] }, { "cell_type": "code", "execution_count": 137, "id": "70015d6e", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "can't use starred expression here (3592875089.py, line 2)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[137], line 2\u001b[1;36m\u001b[0m\n\u001b[1;33m * 2\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m can't use starred expression here\n" ] } ], "source": [ "a = 5 + 5 * 5 * 6 * 6 \n", "* 2\n", "print(a)" ] }, { "cell_type": "code", "execution_count": 138, "id": "d98ac729", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1805\n" ] } ], "source": [ "a = 5 + 5 * 5 * 6 * 6 \\\n", "* 2\n", "print(a)" ] }, { "cell_type": "code", "execution_count": 139, "id": "18dd1ffd", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (3469169834.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[139], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m a = 5 + 5 * 5 * 6 * 6 /\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "a = 5 + 5 * 5 * 6 * 6 /\n", "* 2\n", "print(a)" ] }, { "cell_type": "code", "execution_count": 140, "id": "372bd566", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "unterminated string literal (detected at line 1) (3090898531.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[140], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m a = \"5 + 5 * 5 * 6 * 6 /\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m unterminated string literal (detected at line 1)\n" ] } ], "source": [ "a = \"5 + 5 * 5 * 6 * 6 /\n", "* 2\"\n", "print(a)" ] }, { "cell_type": "code", "execution_count": 141, "id": "7f1e0a35", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5 + 5 * 5 * 6 * 6 * 2\n" ] } ], "source": [ "a = \"5 + 5 * 5 * 6 * 6 \\\n", "* 2\"\n", "print(a)" ] }, { "cell_type": "markdown", "id": "f0344ce8", "metadata": {}, "source": [ "So, do you know what how to divide the line? Try creating your own example here:" ] }, { "cell_type": "code", "execution_count": null, "id": "56582efb", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "ea79bec1", "metadata": {}, "source": [ "## input + print" ] }, { "cell_type": "markdown", "id": "e5f74631", "metadata": {}, "source": [ "Now let's try input function with print function." ] }, { "cell_type": "markdown", "id": "8b9305c0", "metadata": {}, "source": [ "'input' function helps you get info from the user. What user writes, you can store in the variable which you might later use, for example, to display it on the screen with the 'print' function.\n", "It's actually quite simple, so that's all about it. Just remember that all you get from user is a 'string' (if you know what I mean), so if you want to do something different about it (like: count it, etc.), you'll have to change the type of the input. I'll tell you more about it soon. I'll also tell you how you can save a file using print function in couple of minutes. But first we'll take a couple of steps back and talk about more basics... " ] }, { "cell_type": "code", "execution_count": 142, "id": "8e63d017", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ " hello\n" ] }, { "data": { "text/plain": [ "'hello'" ] }, "execution_count": 142, "metadata": {}, "output_type": "execute_result" } ], "source": [ "what_u_said = input()\n", "what_u_said" ] }, { "cell_type": "code", "execution_count": 143, "id": "ec77063e", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "What would you like to say? hello world\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "You said: hello world\n" ] } ], "source": [ "what_u_said = input(\"What would you like to say? \")\n", "print(\"You said:\", what_u_said)" ] }, { "cell_type": "markdown", "id": "a0fffedc", "metadata": {}, "source": [ "## 9. BASICS: Installing, importing, and using more advanced libraries, modules, packages" ] }, { "cell_type": "markdown", "id": "f77bad83", "metadata": {}, "source": [ "Now, let me tell you couple of things about installing, importing, and using libraries, modules, and packages in Python.\n", "\n", "Python has a vast collection of libraries, modules, and packages that can be installed and imported to extend the functionality of the language. They might help in trivial tasks like simple math and in complex tasks like creating artificial intelligence in just several lines of code.\n", "\n", "Usually you can install them by using pip, which is a package manager for Python, but you can also use conda or install them from Anaconda Navigator. \n", "\n", "Once you have them installed, you can import them into a Python script using the import statement. I'll tell you more about it in a moment.\n", "\n", "It’s important to keep packages up-to-date to ensure compatibility with other packages and to take advantage of new features and bug fixes, but the same time it's important to check if the newer version won't break the program, because of other used libraries which are no longer updated by the creators..\n", "\n", "And now let's import and install some of these librarires and see what we can do with them." ] }, { "cell_type": "markdown", "id": "5e3b21ba", "metadata": {}, "source": [ "At first we will import time and math modules." ] }, { "cell_type": "markdown", "id": "ca64184e", "metadata": {}, "source": [ "## Imports without installing (e.g. time, math)" ] }, { "cell_type": "markdown", "id": "20ece80d", "metadata": {}, "source": [ "We can import the 'time' module just by typing:\n", "\n", "*import time*\n", "\n", "The 'time' module was installed on your computer when you installed Anaconda, so you don't have to install it again. Actually, a lot of useful modules, packages, and libraries were installed then. \n", "\n", "The 'time' module itself is a part of something called Python's Standard Library among a lot of other modules, so it's always there when you install Python, whether it's with Anaconda or any other popular Distribution. And some packages and libraries that are not part of this standard library are being installed by Anaconda, because this Distribution is made especially for data science." ] }, { "cell_type": "markdown", "id": "6cd99a48", "metadata": {}, "source": [ "### IMPORT STH" ] }, { "cell_type": "markdown", "id": "c8be6dea", "metadata": {}, "source": [ "### time" ] }, { "cell_type": "markdown", "id": "e1f5b37d", "metadata": {}, "source": [ "So, at first, here is what happens before the module is imported and we try to use it." ] }, { "cell_type": "code", "execution_count": 144, "id": "5c947ab5", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'time' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[144], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m time\u001b[38;5;241m.\u001b[39mtime()\n", "\u001b[1;31mNameError\u001b[0m: name 'time' is not defined" ] } ], "source": [ "time.time()" ] }, { "cell_type": "markdown", "id": "4540b909", "metadata": {}, "source": [ "We get an error, so we import time. And check the current time with time.time() once again." ] }, { "cell_type": "code", "execution_count": 145, "id": "0e5b990d", "metadata": {}, "outputs": [], "source": [ "import time" ] }, { "cell_type": "code", "execution_count": 146, "id": "48170693-0c55-42a2-8cc1-3f782e7d3f49", "metadata": {}, "outputs": [], "source": [ "time.time()" ] }, { "cell_type": "markdown", "id": "63074d88", "metadata": {}, "source": [ "And when we know that it works, we can try using it in a bigger program, like this:" ] }, { "cell_type": "code", "execution_count": 147, "id": "8ee8fc28", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0]\n", "\n", "done, took me: 8.99 seconds\n" ] } ], "source": [ "import time\n", "start = time.time()\n", "numbers =[]\n", "for i in range(100000001):\n", " if i%1000000 == 0:\n", " z = i/1000000\n", " numbers.append(z)\n", "print(numbers)\n", "end = time.time()\n", "print(\"\\ndone, took me: {:.2f} seconds\".format(end-start))" ] }, { "cell_type": "markdown", "id": "85d7cc27", "metadata": {}, "source": [ "The code imports the time module, which provides various time-related functions in Python. The time.time() function is used to get the current time in seconds since the epoch (the point when the time starts for this library), which is January 1, 1970, 00:00:00 (UTC). If you want, you can transform it to more user friendly format, but for calculations, the format we have is good enough.\n", "\n", "The code then initializes a variable named start with the current time using time.time() and creates an empty list called numbers. After that, the for loop iterates over a range of numbers from 0 to 100000001. During each iteration, it checks if the number is divisible by 1000000 using the modulo operator % and if it's True, it divides the number by 1000000 and appends the result to the previously created list. Finally, it prints the numbers list.\n", "\n", "After that, the code initializes another variable called end with the current time using time.time() and calculates the time taken to execute the code by subtracting the start time from the end time. When it's done it prints the result.\n", "\n", "This code is an example of how to use the time module to measure the execution time of a piece of code. It can be useful when you are working with large datasets or when you want to optimize the performance of your code.\n", "\n", "We can for example check if we can get the same result, but faster. And here we go." ] }, { "cell_type": "code", "execution_count": 148, "id": "7f6a978b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0]\n", "\n", "done, took me: 5.99 seconds\n" ] } ], "source": [ "import time\n", "start = time.time()\n", "numbers = [(i/1000000) for i in range(100000001) if i%1000000 == 0]\n", "print(numbers)\n", "end = time.time()\n", "print(\"\\ndone, took me: {:.2f} seconds\".format(end-start))" ] }, { "cell_type": "markdown", "id": "d1182e8f", "metadata": {}, "source": [ "So, as you can see, it took us almost 10 seconds for the first time and less than 7 in the second attempt to get pretty much the same outcome. So the second attempt is more than 30% faster.\n", "\n", "And believe me, that this simple example is not extraordinary. When writing code in Python you can achieve the same results much faster even with very small changes to the code itself. So, if you care about time (and you should, you are not immortal after all, yet, I think), you can use the time module to help you create better and faster code.\n", "\n", "And now, let's move on to the math module in Python." ] }, { "cell_type": "markdown", "id": "bc8ab2dd", "metadata": {}, "source": [ "### math" ] }, { "cell_type": "markdown", "id": "0870ab22", "metadata": {}, "source": [ "This module helps us with some more sophisticated matematical functions. And here is how you use it. We won't get into details about it, but you can find a lot of info about that module in the net.\n", "\n", "So here we go (without and with the module imported) - can you guess what function it is?" ] }, { "cell_type": "code", "execution_count": 149, "id": "ae94ab06", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'math' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[149], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m math\u001b[38;5;241m.\u001b[39msqrt(\u001b[38;5;241m4\u001b[39m)\n", "\u001b[1;31mNameError\u001b[0m: name 'math' is not defined" ] } ], "source": [ "math.sqrt(4)" ] }, { "cell_type": "code", "execution_count": 150, "id": "6ef526c8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.0" ] }, "execution_count": 150, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import math\n", "math.sqrt(4)" ] }, { "cell_type": "markdown", "id": "77a30d30", "metadata": {}, "source": [ "## INSTALLING OTHER PACKAGES, MODULES, LIBRARIES" ] }, { "cell_type": "markdown", "id": "40a7e000", "metadata": {}, "source": [ "## Installs and imports" ] }, { "cell_type": "markdown", "id": "21030f97", "metadata": {}, "source": [ "Ok. Now, with time and math modules we don't have to install anything on our computer, because we have these modules installed in Python's Standard Library, but there is a lot of other modules and libraries that need installing. \n", "\n", "Most of the libraries we can install with pip command in Jupyter Notebook, but some are a bit more difficult to install. For now we'll stick to these easy ones that we'll use in our tutorial.\n", "\n", "You can learn more about each library on the given site. So, let's install our great helpers :)" ] }, { "cell_type": "markdown", "id": "81d2e46d", "metadata": {}, "source": [ "### USING PIP" ] }, { "cell_type": "markdown", "id": "a7b6a8af", "metadata": {}, "source": [ "We'll start with the Emoji library. It might not be very useful in machine learning, but maybe someone will need an emoji for something. For us it's good because it's rather small so we can install it quite fast.\n", "\n", "Here you can see how to install the library, check the version, upgrade it (if possible) and uninstall it." ] }, { "cell_type": "markdown", "id": "63672017", "metadata": {}, "source": [ "#### EMOJI\n", "https://pypi.org/project/emoji/" ] }, { "cell_type": "markdown", "id": "212196ea", "metadata": {}, "source": [ "First, we can see what happens before we install it." ] }, { "cell_type": "code", "execution_count": 151, "id": "bfb8745a", "metadata": {}, "outputs": [ { "ename": "ModuleNotFoundError", "evalue": "No module named 'emoji'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[151], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01memoji\u001b[39;00m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(emoji\u001b[38;5;241m.\u001b[39memojize(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPython is :thumbs_up:\u001b[39m\u001b[38;5;124m'\u001b[39m))\n", "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'emoji'" ] } ], "source": [ "import emoji\n", "print(emoji.emojize('Python is :thumbs_up:'))" ] }, { "cell_type": "markdown", "id": "498676ea", "metadata": {}, "source": [ "Now, let's install it." ] }, { "cell_type": "code", "execution_count": 152, "id": "41a159d5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting emoji\n", " Downloading emoji-2.10.1-py2.py3-none-any.whl.metadata (5.3 kB)\n", "Downloading emoji-2.10.1-py2.py3-none-any.whl (421 kB)\n", " ---------------------------------------- 0.0/421.5 kB ? eta -:--:--\n", " --------------------------------------- 10.2/421.5 kB ? eta -:--:--\n", " -- ------------------------------------ 30.7/421.5 kB 660.6 kB/s eta 0:00:01\n", " ---------- ----------------------------- 112.6/421.5 kB 1.1 MB/s eta 0:00:01\n", " ------------------- -------------------- 204.8/421.5 kB 1.4 MB/s eta 0:00:01\n", " --------------------- ------------------ 225.3/421.5 kB 1.4 MB/s eta 0:00:01\n", " ----------------------------- ---------- 307.2/421.5 kB 1.3 MB/s eta 0:00:01\n", " --------------------------------------- 419.8/421.5 kB 1.5 MB/s eta 0:00:01\n", " ---------------------------------------- 421.5/421.5 kB 1.4 MB/s eta 0:00:00\n", "Installing collected packages: emoji\n", "Successfully installed emoji-2.10.1\n" ] } ], "source": [ "!pip install emoji" ] }, { "cell_type": "markdown", "id": "215bd5d3", "metadata": {}, "source": [ "And check if we have it." ] }, { "cell_type": "markdown", "id": "a50197b2", "metadata": {}, "source": [ "And see the version we have.\n", "\n", "It might be important, because sometimes you might want to install some specific version of the library or check if the one you have is the one you need for the project (compatible with other libraries you use in your project)." ] }, { "cell_type": "code", "execution_count": 153, "id": "38d0a4e1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "emoji version: 2.10.1\n" ] } ], "source": [ "import emoji\n", "print(\"emoji version: {}\".format(emoji.__version__))" ] }, { "cell_type": "code", "execution_count": 154, "id": "e83beea5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Name: emoji\n", "Version: 2.10.1\n", "Summary: Emoji for Python\n", "Home-page: https://github.com/carpedm20/emoji/\n", "Author: Taehoon Kim, Kevin Wurster\n", "Author-email: carpedm20@gmail.com\n", "License: New BSD\n", "Location: C:\\Users\\micro\\anaconda3\\envs\\Python101\\Lib\\site-packages\n", "Requires: \n", "Required-by: \n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "pip show emoji" ] }, { "cell_type": "markdown", "id": "f9fefb4a", "metadata": {}, "source": [ "And we can use it." ] }, { "cell_type": "code", "execution_count": 155, "id": "31bbc1fe", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python is 👍\n" ] } ], "source": [ "print(emoji.emojize('Python is :thumbs_up:'))" ] }, { "cell_type": "markdown", "id": "a7319e13", "metadata": {}, "source": [ "If you want to upgrade the library, get the newer version, this is how we can try upgrading it. If we have the newest version of the package, we'll get info about it." ] }, { "cell_type": "code", "execution_count": 156, "id": "79dfd89e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: emoji in c:\\users\\micro\\anaconda3\\envs\\python101\\lib\\site-packages (2.10.1)\n" ] } ], "source": [ "!pip install emoji --upgrade" ] }, { "cell_type": "markdown", "id": "3374bf43", "metadata": {}, "source": [ "And this is how we could try installing the exact version of the library. Here, for example version 2.0 of the package." ] }, { "cell_type": "code", "execution_count": 157, "id": "dce97ae6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting emoji==2.0\n", " Downloading emoji-2.0.0.tar.gz (197 kB)\n", " ---------------------------------------- 0.0/197.3 kB ? eta -:--:--\n", " --- --------------------------------- 20.5/197.3 kB 330.3 kB/s eta 0:00:01\n", " --------- --------------------------- 51.2/197.3 kB 525.1 kB/s eta 0:00:01\n", " --------------------------- ---------- 143.4/197.3 kB 1.1 MB/s eta 0:00:01\n", " -------------------------------------- 197.3/197.3 kB 1.1 MB/s eta 0:00:00\n", " Preparing metadata (setup.py): started\n", " Preparing metadata (setup.py): finished with status 'done'\n", "Building wheels for collected packages: emoji\n", " Building wheel for emoji (setup.py): started\n", " Building wheel for emoji (setup.py): finished with status 'done'\n", " Created wheel for emoji: filename=emoji-2.0.0-py3-none-any.whl size=193035 sha256=d03d03644bb9d7665833decf116ed014d56c1653f80d534d635d4ab6eef08529\n", " Stored in directory: c:\\users\\micro\\appdata\\local\\pip\\cache\\wheels\\12\\93\\69\\3ee8645ab48020f27058ee82d8af184d861f9301e50dfd31f5\n", "Successfully built emoji\n", "Installing collected packages: emoji\n", " Attempting uninstall: emoji\n", " Found existing installation: emoji 2.10.1\n", " Uninstalling emoji-2.10.1:\n", " Successfully uninstalled emoji-2.10.1\n", "Successfully installed emoji-2.0.0\n" ] } ], "source": [ "!pip install emoji==2.0" ] }, { "cell_type": "markdown", "id": "fd132142", "metadata": {}, "source": [ "Theoretically we can see here that the 2.8.0 version was uninstalled and 2.0.0 was installed, but let's see if that's the case." ] }, { "cell_type": "code", "execution_count": 158, "id": "aea718ab", "metadata": {}, "outputs": [], "source": [ "import emoji" ] }, { "cell_type": "code", "execution_count": 159, "id": "9d15e2f6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "emoji version: 2.10.1\n" ] } ], "source": [ "print(\"emoji version: {}\".format(emoji.__version__))" ] }, { "cell_type": "code", "execution_count": 160, "id": "83c534ee", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Name: emoji\n", "Version: 2.0.0\n", "Summary: Emoji for Python\n", "Home-page: https://github.com/carpedm20/emoji/\n", "Author: Taehoon Kim, Kevin Wurster and Tahir Jalilov\n", "Author-email: carpedm20@gmail.com\n", "License: New BSD\n", "Location: C:\\Users\\micro\\anaconda3\\envs\\Python101\\Lib\\site-packages\n", "Requires: \n", "Required-by: \n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "pip show emoji" ] }, { "cell_type": "markdown", "id": "9ef6795e", "metadata": {}, "source": [ "As you can see everything seems almost fine, beside the fact that our program is seeing two different versions of the emoji package. That's not great. Sometimes, we might even get some bigger problems with that (for example, if you try installing the 1.0.0 version of emoji).\n", "\n", "Usually restarting the kernel should be enough to solve the problem. So let's try doing it.\n", "\n", "By the way, restarting the kernel is something like restarting the computer, so we start fresh and if we want to use some variables, libraries, code we used before restarting the kernel, we have to rerun the cells we need or type what we need in the new cell and run it again.\n", "\n", "Anyway..." ] }, { "cell_type": "markdown", "id": "159007b8", "metadata": {}, "source": [ "AFTER RESTARTING THE KERNEL." ] }, { "cell_type": "code", "execution_count": 1, "id": "cf54aaed", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "emoji version: 2.0.0\n" ] } ], "source": [ "import emoji\n", "print(\"emoji version: {}\".format(emoji.__version__))" ] }, { "cell_type": "code", "execution_count": 2, "id": "149fb3f0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Name: emoji\n", "Version: 2.0.0\n", "Summary: Emoji for Python\n", "Home-page: https://github.com/carpedm20/emoji/\n", "Author: Taehoon Kim, Kevin Wurster and Tahir Jalilov\n", "Author-email: carpedm20@gmail.com\n", "License: New BSD\n", "Location: C:\\Users\\micro\\anaconda3\\envs\\Python101\\Lib\\site-packages\n", "Requires: \n", "Required-by: \n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "pip show emoji" ] }, { "cell_type": "markdown", "id": "4ee21d2e", "metadata": {}, "source": [ "Well... Now it works as it should. Great. But, if the problem still occures, we can try uninstalling the library." ] }, { "cell_type": "code", "execution_count": 3, "id": "14915b44", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found existing installation: emoji 2.0.0\n", "Uninstalling emoji-2.0.0:\n", " Successfully uninstalled emoji-2.0.0\n" ] } ], "source": [ "!pip uninstall -y emoji" ] }, { "cell_type": "markdown", "id": "11161675", "metadata": {}, "source": [ "And start again." ] }, { "cell_type": "code", "execution_count": 4, "id": "e59fd2d9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Note: you may need to restart the kernel to use updated packages.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING: Package(s) not found: emoji\n" ] } ], "source": [ "pip show emoji" ] }, { "cell_type": "code", "execution_count": 5, "id": "401f195e", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "emoji version: 2.0.0\n" ] } ], "source": [ "import emoji\n", "print(\"emoji version: {}\".format(emoji.__version__))" ] }, { "cell_type": "code", "execution_count": 6, "id": "40c6624f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python is 👍\n" ] } ], "source": [ "print(emoji.emojize('Python is :thumbs_up:'))" ] }, { "cell_type": "markdown", "id": "e667f472", "metadata": {}, "source": [ "Now if we don't have that library anymore, but we still can see it and use it, it might mean that the library is in the memory of the kernel and we might need to restart it as the note says. \n", "\n", "So let's restart the kernel once again and see if emoji is still there." ] }, { "cell_type": "markdown", "id": "68e02f2f", "metadata": {}, "source": [ "AFTER RESTARTING THE KERNEL." ] }, { "cell_type": "code", "execution_count": 1, "id": "e0488511", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Note: you may need to restart the kernel to use updated packages.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING: Package(s) not found: emoji\n" ] } ], "source": [ "pip show emoji" ] }, { "cell_type": "code", "execution_count": 2, "id": "96ec09fc", "metadata": { "scrolled": true }, "outputs": [ { "ename": "ModuleNotFoundError", "evalue": "No module named 'emoji'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[2], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01memoji\u001b[39;00m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124memoji version: \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(emoji\u001b[38;5;241m.\u001b[39m__version__))\n", "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'emoji'" ] } ], "source": [ "import emoji\n", "print(\"emoji version: {}\".format(emoji.__version__))" ] }, { "cell_type": "code", "execution_count": 3, "id": "9bfff393", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'emoji' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[3], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(emoji\u001b[38;5;241m.\u001b[39memojize(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPython is :thumbs_up:\u001b[39m\u001b[38;5;124m'\u001b[39m))\n", "\u001b[1;31mNameError\u001b[0m: name 'emoji' is not defined" ] } ], "source": [ "print(emoji.emojize('Python is :thumbs_up:'))" ] }, { "cell_type": "markdown", "id": "d939f1a4", "metadata": {}, "source": [ "Now, it's completely gone. And we can start from the beginning, only with the version we want." ] }, { "cell_type": "code", "execution_count": 4, "id": "452da233", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting emoji==2.0\n", " Using cached emoji-2.0.0-py3-none-any.whl\n", "Installing collected packages: emoji\n", "Successfully installed emoji-2.0.0\n" ] } ], "source": [ "!pip install emoji==2.0" ] }, { "cell_type": "markdown", "id": "4ee6a3e9", "metadata": {}, "source": [ "And see if it worked." ] }, { "cell_type": "code", "execution_count": 5, "id": "8446ccbf", "metadata": { "scrolled": true }, "outputs": [], "source": [ "import emoji" ] }, { "cell_type": "code", "execution_count": 6, "id": "b64b14f6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "emoji version: 2.0.0\n" ] } ], "source": [ "print(\"emoji version: {}\".format(emoji.__version__))" ] }, { "cell_type": "code", "execution_count": 7, "id": "567f7979", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Name: emoji\n", "Version: 2.0.0\n", "Summary: Emoji for Python\n", "Home-page: https://github.com/carpedm20/emoji/\n", "Author: Taehoon Kim, Kevin Wurster and Tahir Jalilov\n", "Author-email: carpedm20@gmail.com\n", "License: New BSD\n", "Location: C:\\Users\\micro\\anaconda3\\envs\\Python101\\Lib\\site-packages\n", "Requires: \n", "Required-by: \n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "pip show emoji" ] }, { "cell_type": "code", "execution_count": 8, "id": "f8592be0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python is 👍\n" ] } ], "source": [ "import emoji\n", "print(emoji.emojize('Python is :thumbs_up:'))" ] }, { "cell_type": "markdown", "id": "a2b80aa0", "metadata": {}, "source": [ "Yes, it worked.\n", "\n", "Now, let's upgrade it..." ] }, { "cell_type": "code", "execution_count": 9, "id": "3017c72a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: emoji in c:\\users\\micro\\anaconda3\\envs\\python101\\lib\\site-packages (2.0.0)\n", "Collecting emoji\n", " Using cached emoji-2.10.1-py2.py3-none-any.whl.metadata (5.3 kB)\n", "Using cached emoji-2.10.1-py2.py3-none-any.whl (421 kB)\n", "Installing collected packages: emoji\n", " Attempting uninstall: emoji\n", " Found existing installation: emoji 2.0.0\n", " Uninstalling emoji-2.0.0:\n", " Successfully uninstalled emoji-2.0.0\n", "Successfully installed emoji-2.10.1\n" ] } ], "source": [ "!pip install emoji --upgrade" ] }, { "cell_type": "markdown", "id": "e7cb7778", "metadata": {}, "source": [ "Restart the kernel and import it once again." ] }, { "cell_type": "markdown", "id": "2635b2b7", "metadata": {}, "source": [ "AFTER RESTARTING THE KERNEL." ] }, { "cell_type": "code", "execution_count": 1, "id": "db206ba6", "metadata": { "scrolled": true }, "outputs": [], "source": [ "import emoji" ] }, { "cell_type": "code", "execution_count": 2, "id": "f8f0feaa", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "emoji version: 2.10.1\n" ] } ], "source": [ "print(\"emoji version: {}\".format(emoji.__version__))" ] }, { "cell_type": "code", "execution_count": 3, "id": "968d7d79", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Name: emoji\n", "Version: 2.10.1\n", "Summary: Emoji for Python\n", "Home-page: https://github.com/carpedm20/emoji/\n", "Author: Taehoon Kim, Kevin Wurster\n", "Author-email: carpedm20@gmail.com\n", "License: New BSD\n", "Location: C:\\Users\\micro\\anaconda3\\envs\\Python101\\Lib\\site-packages\n", "Requires: \n", "Required-by: \n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "pip show emoji" ] }, { "cell_type": "code", "execution_count": 4, "id": "d3549640", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python is 👍\n" ] } ], "source": [ "print(emoji.emojize('Python is :thumbs_up:'))" ] }, { "cell_type": "markdown", "id": "af4b3163", "metadata": {}, "source": [ "We can also save the names of the libraries we use in our project in the requirements.txt file so to be able to install the same versions of the libraries in the future or to let anyone install the proper libraries." ] }, { "cell_type": "code", "execution_count": 5, "id": "d0986310", "metadata": {}, "outputs": [], "source": [ "!pip freeze > requirements.txt" ] }, { "cell_type": "markdown", "id": "204b443f", "metadata": {}, "source": [ "We can see that in the requirements file. There will be all the libraries and packages we have in our environment, so it might be a lot in Anaconda." ] }, { "cell_type": "markdown", "id": "07ff75b8", "metadata": {}, "source": [ "And now let's delete the emoji library once again." ] }, { "cell_type": "code", "execution_count": 6, "id": "80c240f7", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found existing installation: emoji 2.10.1\n", "Uninstalling emoji-2.10.1:\n", " Successfully uninstalled emoji-2.10.1\n" ] } ], "source": [ "!pip uninstall -y emoji" ] }, { "cell_type": "markdown", "id": "1175c1da", "metadata": {}, "source": [ "Let's restart the kernel.\n", "\n", "And let's install all the libraries from the requirements.txt file which we don't have. \n", "\n", "IMPORTANT:\n", "\n", "For the purpose of this tutorial, let's first delete all the libraries that are not unique for our task from the requirements.txt file and save that file." ] }, { "cell_type": "markdown", "id": "c491bbed", "metadata": {}, "source": [ "AFTER RESTARTING THE KERNEL." ] }, { "cell_type": "markdown", "id": "f2ffef4f", "metadata": {}, "source": [ "First, let's check if we have the emoji library." ] }, { "cell_type": "code", "execution_count": 1, "id": "9e1c8d87", "metadata": {}, "outputs": [ { "ename": "ModuleNotFoundError", "evalue": "No module named 'emoji'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[1], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01memoji\u001b[39;00m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(emoji\u001b[38;5;241m.\u001b[39memojize(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPython is :thumbs_up:\u001b[39m\u001b[38;5;124m'\u001b[39m))\n", "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'emoji'" ] } ], "source": [ "import emoji\n", "print(emoji.emojize('Python is :thumbs_up:'))" ] }, { "cell_type": "markdown", "id": "5674d877", "metadata": {}, "source": [ "And now let's install all we need." ] }, { "cell_type": "code", "execution_count": 2, "id": "b6905b17", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting emoji==2.10.1 (from -r requirements.txt (line 1))\n", " Using cached emoji-2.10.1-py2.py3-none-any.whl.metadata (5.3 kB)\n", "Using cached emoji-2.10.1-py2.py3-none-any.whl (421 kB)\n", "Installing collected packages: emoji\n", "Successfully installed emoji-2.10.1\n" ] } ], "source": [ "!pip install -r requirements.txt" ] }, { "cell_type": "markdown", "id": "bd6893d6", "metadata": {}, "source": [ "And now we can use it (hopefully)." ] }, { "cell_type": "code", "execution_count": 3, "id": "0ce30847", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python is 👍\n" ] } ], "source": [ "import emoji\n", "print(emoji.emojize('Python is :thumbs_up:'))" ] }, { "cell_type": "markdown", "id": "5be5262d", "metadata": {}, "source": [ "Success.\n", "\n", "Of course, if we don't need the library, we can delete it again, so to have space for other thing and keep our environment clean." ] }, { "cell_type": "code", "execution_count": 4, "id": "38aeff6a", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found existing installation: emoji 2.10.1\n", "Uninstalling emoji-2.10.1:\n", " Successfully uninstalled emoji-2.10.1\n" ] } ], "source": [ "!pip uninstall -y emoji" ] }, { "cell_type": "markdown", "id": "116b66a8", "metadata": {}, "source": [ "Once again we can restart the kernel." ] }, { "cell_type": "markdown", "id": "98aedff8", "metadata": {}, "source": [ "AFTER RESTARTING THE KERNEL." ] }, { "cell_type": "markdown", "id": "1f45cfc0", "metadata": {}, "source": [ "And now we can install other libraries we will need in here. If you already have them installed, you'll get info about it." ] }, { "cell_type": "markdown", "id": "a612b4e2", "metadata": {}, "source": [ "#### numpy\n", "https://pypi.org/project/numpy/" ] }, { "cell_type": "code", "execution_count": 1, "id": "ee6e612d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting numpy\n", " Downloading numpy-1.26.4-cp311-cp311-win_amd64.whl.metadata (61 kB)\n", " ---------------------------------------- 0.0/61.0 kB ? eta -:--:--\n", " ------------ ------------------------- 20.5/61.0 kB 682.7 kB/s eta 0:00:01\n", " ------------------- ------------------ 30.7/61.0 kB 435.7 kB/s eta 0:00:01\n", " -------------------------------------- 61.0/61.0 kB 466.1 kB/s eta 0:00:00\n", "Downloading numpy-1.26.4-cp311-cp311-win_amd64.whl (15.8 MB)\n", " ---------------------------------------- 0.0/15.8 MB ? eta -:--:--\n", " ---------------------------------------- 0.1/15.8 MB 3.4 MB/s eta 0:00:05\n", " ---------------------------------------- 0.1/15.8 MB 3.4 MB/s eta 0:00:05\n", " ---------------------------------------- 0.2/15.8 MB 1.7 MB/s eta 0:00:10\n", " --------------------------------------- 0.3/15.8 MB 1.6 MB/s eta 0:00:10\n", " --------------------------------------- 0.4/15.8 MB 1.6 MB/s eta 0:00:10\n", " - -------------------------------------- 0.5/15.8 MB 1.7 MB/s eta 0:00:10\n", " - -------------------------------------- 0.6/15.8 MB 1.8 MB/s eta 0:00:09\n", " - -------------------------------------- 0.7/15.8 MB 1.9 MB/s eta 0:00:09\n", " - -------------------------------------- 0.8/15.8 MB 1.8 MB/s eta 0:00:09\n", " -- ------------------------------------- 0.8/15.8 MB 1.9 MB/s eta 0:00:08\n", " -- ------------------------------------- 0.8/15.8 MB 1.9 MB/s eta 0:00:08\n", " -- ------------------------------------- 1.0/15.8 MB 1.8 MB/s eta 0:00:09\n", " -- ------------------------------------- 1.1/15.8 MB 1.8 MB/s eta 0:00:09\n", " -- ------------------------------------- 1.1/15.8 MB 1.8 MB/s eta 0:00:09\n", " -- ------------------------------------- 1.1/15.8 MB 1.8 MB/s eta 0:00:09\n", " -- ------------------------------------- 1.1/15.8 MB 1.8 MB/s eta 0:00:09\n", " -- ------------------------------------- 1.1/15.8 MB 1.8 MB/s eta 0:00:09\n", " -- ------------------------------------- 1.1/15.8 MB 1.8 MB/s eta 0:00:09\n", " -- ------------------------------------- 1.1/15.8 MB 1.8 MB/s eta 0:00:09\n", " -- ------------------------------------- 1.2/15.8 MB 1.3 MB/s eta 0:00:12\n", " -- ------------------------------------- 1.2/15.8 MB 1.2 MB/s eta 0:00:12\n", " --- ------------------------------------ 1.2/15.8 MB 1.2 MB/s eta 0:00:13\n", " --- ------------------------------------ 1.2/15.8 MB 1.2 MB/s eta 0:00:13\n", " --- ------------------------------------ 1.3/15.8 MB 1.2 MB/s eta 0:00:13\n", " --- ------------------------------------ 1.3/15.8 MB 1.2 MB/s eta 0:00:13\n", " --- ------------------------------------ 1.3/15.8 MB 1.2 MB/s eta 0:00:13\n", " --- ------------------------------------ 1.3/15.8 MB 1.2 MB/s eta 0:00:13\n", " --- ------------------------------------ 1.3/15.8 MB 1.2 MB/s eta 0:00:13\n", " --- ------------------------------------ 1.3/15.8 MB 1.2 MB/s eta 0:00:13\n", " --- ------------------------------------ 1.3/15.8 MB 1.2 MB/s eta 0:00:13\n", " --- ------------------------------------ 1.3/15.8 MB 932.2 kB/s eta 0:00:16\n", " --- ------------------------------------ 1.3/15.8 MB 932.2 kB/s eta 0:00:16\n", " --- ------------------------------------ 1.3/15.8 MB 932.2 kB/s eta 0:00:16\n", " --- ------------------------------------ 1.3/15.8 MB 932.2 kB/s eta 0:00:16\n", " --- ------------------------------------ 1.3/15.8 MB 932.2 kB/s eta 0:00:16\n", " --- ------------------------------------ 1.3/15.8 MB 932.2 kB/s eta 0:00:16\n", " --- ------------------------------------ 1.4/15.8 MB 786.8 kB/s eta 0:00:19\n", " --- ------------------------------------ 1.4/15.8 MB 786.8 kB/s eta 0:00:19\n", " --- ------------------------------------ 1.4/15.8 MB 777.4 kB/s eta 0:00:19\n", " --- ------------------------------------ 1.4/15.8 MB 749.1 kB/s eta 0:00:20\n", " --- ------------------------------------ 1.4/15.8 MB 749.1 kB/s eta 0:00:20\n", " --- ------------------------------------ 1.4/15.8 MB 736.0 kB/s eta 0:00:20\n", " --- ------------------------------------ 1.4/15.8 MB 722.6 kB/s eta 0:00:20\n", " --- ------------------------------------ 1.5/15.8 MB 726.0 kB/s eta 0:00:20\n", " --- ------------------------------------ 1.5/15.8 MB 726.0 kB/s eta 0:00:20\n", " --- ------------------------------------ 1.5/15.8 MB 726.0 kB/s eta 0:00:20\n", " --- ------------------------------------ 1.5/15.8 MB 726.0 kB/s eta 0:00:20\n", " --- ------------------------------------ 1.5/15.8 MB 726.0 kB/s eta 0:00:20\n", " --- ------------------------------------ 1.5/15.8 MB 726.0 kB/s eta 0:00:20\n", " --- ------------------------------------ 1.5/15.8 MB 726.0 kB/s eta 0:00:20\n", " --- ------------------------------------ 1.5/15.8 MB 646.8 kB/s eta 0:00:23\n", " --- ------------------------------------ 1.5/15.8 MB 646.8 kB/s eta 0:00:23\n", " --- ------------------------------------ 1.5/15.8 MB 626.2 kB/s eta 0:00:23\n", " --- ------------------------------------ 1.5/15.8 MB 626.2 kB/s eta 0:00:23\n", " --- ------------------------------------ 1.6/15.8 MB 614.8 kB/s eta 0:00:24\n", " --- ------------------------------------ 1.6/15.8 MB 600.3 kB/s eta 0:00:24\n", " ---- ----------------------------------- 1.6/15.8 MB 597.3 kB/s eta 0:00:24\n", " ---- ----------------------------------- 1.6/15.8 MB 594.5 kB/s eta 0:00:24\n", " ---- ----------------------------------- 1.6/15.8 MB 595.5 kB/s eta 0:00:24\n", " ---- ----------------------------------- 1.6/15.8 MB 589.1 kB/s eta 0:00:25\n", " ---- ----------------------------------- 1.7/15.8 MB 593.8 kB/s eta 0:00:24\n", " ---- ----------------------------------- 1.7/15.8 MB 594.8 kB/s eta 0:00:24\n", " ---- ----------------------------------- 1.7/15.8 MB 588.9 kB/s eta 0:00:24\n", " ---- ----------------------------------- 1.8/15.8 MB 593.4 kB/s eta 0:00:24\n", " ---- ----------------------------------- 1.8/15.8 MB 590.5 kB/s eta 0:00:24\n", " ---- ----------------------------------- 1.8/15.8 MB 591.7 kB/s eta 0:00:24\n", " ---- ----------------------------------- 1.8/15.8 MB 592.6 kB/s eta 0:00:24\n", " ---- ----------------------------------- 1.9/15.8 MB 593.5 kB/s eta 0:00:24\n", " ---- ----------------------------------- 1.9/15.8 MB 591.4 kB/s eta 0:00:24\n", " ---- ----------------------------------- 1.9/15.8 MB 595.5 kB/s eta 0:00:24\n", " ---- ----------------------------------- 2.0/15.8 MB 599.2 kB/s eta 0:00:24\n", " ----- ---------------------------------- 2.0/15.8 MB 600.0 kB/s eta 0:00:24\n", " ----- ---------------------------------- 2.1/15.8 MB 604.1 kB/s eta 0:00:23\n", " ----- ---------------------------------- 2.1/15.8 MB 601.8 kB/s eta 0:00:23\n", " ----- ---------------------------------- 2.1/15.8 MB 608.4 kB/s eta 0:00:23\n", " ----- ---------------------------------- 2.2/15.8 MB 611.8 kB/s eta 0:00:23\n", " ----- ---------------------------------- 2.2/15.8 MB 615.2 kB/s eta 0:00:23\n", " ----- ---------------------------------- 2.2/15.8 MB 615.8 kB/s eta 0:00:23\n", " ----- ---------------------------------- 2.3/15.8 MB 622.0 kB/s eta 0:00:22\n", " ----- ---------------------------------- 2.3/15.8 MB 628.0 kB/s eta 0:00:22\n", " ------ --------------------------------- 2.4/15.8 MB 633.7 kB/s eta 0:00:22\n", " ------ --------------------------------- 2.4/15.8 MB 639.3 kB/s eta 0:00:21\n", " ------ --------------------------------- 2.5/15.8 MB 642.2 kB/s eta 0:00:21\n", " ------ --------------------------------- 2.5/15.8 MB 647.5 kB/s eta 0:00:21\n", " ------ --------------------------------- 2.6/15.8 MB 652.9 kB/s eta 0:00:21\n", " ------ --------------------------------- 2.6/15.8 MB 655.4 kB/s eta 0:00:21\n", " ------ --------------------------------- 2.7/15.8 MB 660.6 kB/s eta 0:00:20\n", " ------ --------------------------------- 2.7/15.8 MB 667.9 kB/s eta 0:00:20\n", " ------- -------------------------------- 2.8/15.8 MB 672.8 kB/s eta 0:00:20\n", " ------- -------------------------------- 2.8/15.8 MB 677.4 kB/s eta 0:00:20\n", " ------- -------------------------------- 2.9/15.8 MB 684.6 kB/s eta 0:00:19\n", " ------- -------------------------------- 3.0/15.8 MB 688.9 kB/s eta 0:00:19\n", " ------- -------------------------------- 3.0/15.8 MB 695.8 kB/s eta 0:00:19\n", " ------- -------------------------------- 3.1/15.8 MB 702.4 kB/s eta 0:00:19\n", " ------- -------------------------------- 3.1/15.8 MB 711.2 kB/s eta 0:00:18\n", " -------- ------------------------------- 3.2/15.8 MB 712.9 kB/s eta 0:00:18\n", " -------- ------------------------------- 3.2/15.8 MB 716.7 kB/s eta 0:00:18\n", " -------- ------------------------------- 3.3/15.8 MB 725.0 kB/s eta 0:00:18\n", " -------- ------------------------------- 3.4/15.8 MB 733.2 kB/s eta 0:00:17\n", " -------- ------------------------------- 3.5/15.8 MB 739.0 kB/s eta 0:00:17\n", " -------- ------------------------------- 3.5/15.8 MB 744.6 kB/s eta 0:00:17\n", " --------- ------------------------------ 3.6/15.8 MB 754.9 kB/s eta 0:00:17\n", " --------- ------------------------------ 3.6/15.8 MB 760.3 kB/s eta 0:00:17\n", " --------- ------------------------------ 3.7/15.8 MB 765.4 kB/s eta 0:00:16\n", " --------- ------------------------------ 3.8/15.8 MB 773.0 kB/s eta 0:00:16\n", " --------- ------------------------------ 3.8/15.8 MB 778.2 kB/s eta 0:00:16\n", " --------- ------------------------------ 3.9/15.8 MB 787.4 kB/s eta 0:00:16\n", " ---------- ----------------------------- 4.0/15.8 MB 793.8 kB/s eta 0:00:15\n", " ---------- ----------------------------- 4.1/15.8 MB 802.6 kB/s eta 0:00:15\n", " ---------- ----------------------------- 4.1/15.8 MB 807.2 kB/s eta 0:00:15\n", " ---------- ----------------------------- 4.2/15.8 MB 816.3 kB/s eta 0:00:15\n", " ---------- ----------------------------- 4.3/15.8 MB 824.6 kB/s eta 0:00:14\n", " ----------- ---------------------------- 4.4/15.8 MB 832.9 kB/s eta 0:00:14\n", " ----------- ---------------------------- 4.5/15.8 MB 841.1 kB/s eta 0:00:14\n", " ----------- ---------------------------- 4.5/15.8 MB 845.2 kB/s eta 0:00:14\n", " ----------- ---------------------------- 4.6/15.8 MB 854.3 kB/s eta 0:00:14\n", " ----------- ---------------------------- 4.7/15.8 MB 860.7 kB/s eta 0:00:13\n", " ----------- ---------------------------- 4.7/15.8 MB 862.7 kB/s eta 0:00:13\n", " ------------ --------------------------- 4.8/15.8 MB 872.0 kB/s eta 0:00:13\n", " ------------ --------------------------- 4.9/15.8 MB 877.5 kB/s eta 0:00:13\n", " ------------ --------------------------- 5.0/15.8 MB 886.6 kB/s eta 0:00:13\n", " ------------ --------------------------- 5.1/15.8 MB 893.8 kB/s eta 0:00:13\n", " ------------- -------------------------- 5.2/15.8 MB 904.4 kB/s eta 0:00:12\n", " ------------- -------------------------- 5.3/15.8 MB 911.2 kB/s eta 0:00:12\n", " ------------- -------------------------- 5.4/15.8 MB 921.5 kB/s eta 0:00:12\n", " ------------- -------------------------- 5.4/15.8 MB 927.1 kB/s eta 0:00:12\n", " ------------- -------------------------- 5.5/15.8 MB 934.5 kB/s eta 0:00:12\n", " -------------- ------------------------- 5.6/15.8 MB 940.9 kB/s eta 0:00:11\n", " -------------- ------------------------- 5.7/15.8 MB 948.9 kB/s eta 0:00:11\n", " -------------- ------------------------- 5.8/15.8 MB 958.6 kB/s eta 0:00:11\n", " -------------- ------------------------- 5.8/15.8 MB 961.2 kB/s eta 0:00:11\n", " -------------- ------------------------- 5.8/15.8 MB 961.2 kB/s eta 0:00:11\n", " -------------- ------------------------- 5.8/15.8 MB 961.2 kB/s eta 0:00:11\n", " -------------- ------------------------- 5.8/15.8 MB 961.2 kB/s eta 0:00:11\n", " -------------- ------------------------- 5.8/15.8 MB 961.2 kB/s eta 0:00:11\n", " -------------- ------------------------- 5.8/15.8 MB 961.2 kB/s eta 0:00:11\n", " --------------- ------------------------ 5.9/15.8 MB 934.7 kB/s eta 0:00:11\n", " --------------- ------------------------ 6.0/15.8 MB 928.2 kB/s eta 0:00:11\n", " --------------- ------------------------ 6.0/15.8 MB 927.4 kB/s eta 0:00:11\n", " --------------- ------------------------ 6.1/15.8 MB 929.5 kB/s eta 0:00:11\n", " --------------- ------------------------ 6.1/15.8 MB 932.3 kB/s eta 0:00:11\n", " --------------- ------------------------ 6.2/15.8 MB 938.1 kB/s eta 0:00:11\n", " --------------- ------------------------ 6.3/15.8 MB 942.3 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.3/15.8 MB 947.9 kB/s eta 0:00:10\n", " ---------------- ----------------------- 6.3/15.8 MB 947.9 kB/s eta 0:00:10\n", " ---------------- ----------------------- 6.3/15.8 MB 947.9 kB/s eta 0:00:10\n", " ---------------- ----------------------- 6.3/15.8 MB 947.9 kB/s eta 0:00:10\n", " ---------------- ----------------------- 6.3/15.8 MB 947.9 kB/s eta 0:00:10\n", " ---------------- ----------------------- 6.3/15.8 MB 947.9 kB/s eta 0:00:10\n", " ---------------- ----------------------- 6.3/15.8 MB 947.9 kB/s eta 0:00:10\n", " ---------------- ----------------------- 6.3/15.8 MB 947.9 kB/s eta 0:00:10\n", " ---------------- ----------------------- 6.4/15.8 MB 907.7 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.4/15.8 MB 907.7 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.4/15.8 MB 907.7 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.4/15.8 MB 907.7 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.4/15.8 MB 907.7 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.4/15.8 MB 907.7 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.4/15.8 MB 907.7 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.5/15.8 MB 876.1 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.5/15.8 MB 872.1 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.5/15.8 MB 871.1 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.5/15.8 MB 865.8 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.6/15.8 MB 866.2 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.6/15.8 MB 865.8 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.7/15.8 MB 864.5 kB/s eta 0:00:11\n", " ---------------- ----------------------- 6.7/15.8 MB 865.1 kB/s eta 0:00:11\n", " ----------------- ---------------------- 6.7/15.8 MB 866.4 kB/s eta 0:00:11\n", " ----------------- ---------------------- 6.8/15.8 MB 865.1 kB/s eta 0:00:11\n", " ----------------- ---------------------- 6.8/15.8 MB 865.2 kB/s eta 0:00:11\n", " ----------------- ---------------------- 6.9/15.8 MB 866.5 kB/s eta 0:00:11\n", " ----------------- ---------------------- 6.9/15.8 MB 867.8 kB/s eta 0:00:11\n", " ----------------- ---------------------- 6.9/15.8 MB 866.6 kB/s eta 0:00:11\n", " ----------------- ---------------------- 7.0/15.8 MB 868.0 kB/s eta 0:00:11\n", " ----------------- ---------------------- 7.0/15.8 MB 869.3 kB/s eta 0:00:11\n", " ----------------- ---------------------- 7.1/15.8 MB 870.5 kB/s eta 0:00:11\n", " ------------------ --------------------- 7.1/15.8 MB 871.0 kB/s eta 0:00:10\n", " ------------------ --------------------- 7.2/15.8 MB 871.8 kB/s eta 0:00:10\n", " ------------------ --------------------- 7.2/15.8 MB 873.0 kB/s eta 0:00:10\n", " ------------------ --------------------- 7.3/15.8 MB 874.2 kB/s eta 0:00:10\n", " ------------------ --------------------- 7.3/15.8 MB 877.1 kB/s eta 0:00:10\n", " ------------------ --------------------- 7.4/15.8 MB 875.1 kB/s eta 0:00:10\n", " ------------------ --------------------- 7.4/15.8 MB 878.7 kB/s eta 0:00:10\n", " ------------------ --------------------- 7.5/15.8 MB 875.5 kB/s eta 0:00:10\n", " ------------------ --------------------- 7.5/15.8 MB 878.6 kB/s eta 0:00:10\n", " ------------------- -------------------- 7.5/15.8 MB 875.4 kB/s eta 0:00:10\n", " ------------------- -------------------- 7.6/15.8 MB 877.0 kB/s eta 0:00:10\n", " ------------------- -------------------- 7.6/15.8 MB 877.0 kB/s eta 0:00:10\n", " ------------------- -------------------- 7.7/15.8 MB 876.5 kB/s eta 0:00:10\n", " ------------------- -------------------- 7.7/15.8 MB 876.9 kB/s eta 0:00:10\n", " ------------------- -------------------- 7.8/15.8 MB 878.1 kB/s eta 0:00:10\n", " ------------------- -------------------- 7.8/15.8 MB 877.7 kB/s eta 0:00:10\n", " ------------------- -------------------- 7.9/15.8 MB 878.8 kB/s eta 0:00:10\n", " -------------------- ------------------- 7.9/15.8 MB 879.9 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.0/15.8 MB 879.9 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.0/15.8 MB 881.0 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.1/15.8 MB 883.6 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.1/15.8 MB 884.3 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.2/15.8 MB 887.6 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.2/15.8 MB 887.6 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.2/15.8 MB 887.6 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.2/15.8 MB 887.6 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.2/15.8 MB 887.6 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.2/15.8 MB 887.6 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.2/15.8 MB 887.6 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.3/15.8 MB 864.9 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.3/15.8 MB 864.9 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.3/15.8 MB 860.0 kB/s eta 0:00:09\n", " -------------------- ------------------- 8.3/15.8 MB 855.5 kB/s eta 0:00:09\n", " --------------------- ------------------ 8.3/15.8 MB 853.5 kB/s eta 0:00:09\n", " --------------------- ------------------ 8.3/15.8 MB 852.5 kB/s eta 0:00:09\n", " --------------------- ------------------ 8.4/15.8 MB 853.7 kB/s eta 0:00:09\n", " --------------------- ------------------ 8.4/15.8 MB 853.4 kB/s eta 0:00:09\n", " --------------------- ------------------ 8.5/15.8 MB 853.9 kB/s eta 0:00:09\n", " --------------------- ------------------ 8.5/15.8 MB 855.0 kB/s eta 0:00:09\n", " --------------------- ------------------ 8.6/15.8 MB 856.1 kB/s eta 0:00:09\n", " --------------------- ------------------ 8.6/15.8 MB 856.2 kB/s eta 0:00:09\n", " --------------------- ------------------ 8.7/15.8 MB 856.0 kB/s eta 0:00:09\n", " ---------------------- ----------------- 8.7/15.8 MB 856.0 kB/s eta 0:00:09\n", " ---------------------- ----------------- 8.8/15.8 MB 858.4 kB/s eta 0:00:09\n", " ---------------------- ----------------- 8.8/15.8 MB 859.5 kB/s eta 0:00:09\n", " ---------------------- ----------------- 8.8/15.8 MB 858.6 kB/s eta 0:00:09\n", " ---------------------- ----------------- 8.9/15.8 MB 859.6 kB/s eta 0:00:09\n", " ---------------------- ----------------- 8.9/15.8 MB 860.4 kB/s eta 0:00:08\n", " ---------------------- ----------------- 9.0/15.8 MB 861.4 kB/s eta 0:00:08\n", " ---------------------- ----------------- 9.0/15.8 MB 861.4 kB/s eta 0:00:08\n", " ---------------------- ----------------- 9.0/15.8 MB 861.4 kB/s eta 0:00:08\n", " ---------------------- ----------------- 9.0/15.8 MB 861.4 kB/s eta 0:00:08\n", " ---------------------- ----------------- 9.0/15.8 MB 861.4 kB/s eta 0:00:08\n", " ---------------------- ----------------- 9.0/15.8 MB 861.4 kB/s eta 0:00:08\n", " ---------------------- ----------------- 9.0/15.8 MB 861.4 kB/s eta 0:00:08\n", " ---------------------- ----------------- 9.0/15.8 MB 861.4 kB/s eta 0:00:08\n", " ---------------------- ----------------- 9.1/15.8 MB 839.9 kB/s eta 0:00:09\n", " ---------------------- ----------------- 9.1/15.8 MB 835.8 kB/s eta 0:00:09\n", " ---------------------- ----------------- 9.1/15.8 MB 835.8 kB/s eta 0:00:09\n", " ---------------------- ----------------- 9.1/15.8 MB 830.8 kB/s eta 0:00:09\n", " ----------------------- ---------------- 9.1/15.8 MB 827.9 kB/s eta 0:00:09\n", " ----------------------- ---------------- 9.1/15.8 MB 826.5 kB/s eta 0:00:09\n", " ----------------------- ---------------- 9.2/15.8 MB 826.6 kB/s eta 0:00:09\n", " ----------------------- ---------------- 9.2/15.8 MB 824.5 kB/s eta 0:00:09\n", " ----------------------- ---------------- 9.2/15.8 MB 827.0 kB/s eta 0:00:08\n", " ----------------------- ---------------- 9.3/15.8 MB 826.1 kB/s eta 0:00:08\n", " ----------------------- ---------------- 9.3/15.8 MB 826.0 kB/s eta 0:00:08\n", " ----------------------- ---------------- 9.4/15.8 MB 826.2 kB/s eta 0:00:08\n", " ----------------------- ---------------- 9.4/15.8 MB 826.7 kB/s eta 0:00:08\n", " ----------------------- ---------------- 9.5/15.8 MB 827.7 kB/s eta 0:00:08\n", " ------------------------ --------------- 9.5/15.8 MB 828.8 kB/s eta 0:00:08\n", " ------------------------ --------------- 9.5/15.8 MB 829.3 kB/s eta 0:00:08\n", " ------------------------ --------------- 9.6/15.8 MB 828.1 kB/s eta 0:00:08\n", " ------------------------ --------------- 9.6/15.8 MB 830.3 kB/s eta 0:00:08\n", " ------------------------ --------------- 9.7/15.8 MB 830.7 kB/s eta 0:00:08\n", " ------------------------ --------------- 9.7/15.8 MB 830.7 kB/s eta 0:00:08\n", " ------------------------ --------------- 9.7/15.8 MB 830.7 kB/s eta 0:00:08\n", " ------------------------ --------------- 9.7/15.8 MB 821.6 kB/s eta 0:00:08\n", " ------------------------ --------------- 9.7/15.8 MB 820.7 kB/s eta 0:00:08\n", " ------------------------ --------------- 9.8/15.8 MB 820.9 kB/s eta 0:00:08\n", " ------------------------ --------------- 9.8/15.8 MB 822.1 kB/s eta 0:00:08\n", " ------------------------ --------------- 9.9/15.8 MB 824.0 kB/s eta 0:00:08\n", " ------------------------- -------------- 9.9/15.8 MB 823.5 kB/s eta 0:00:08\n", " ------------------------- -------------- 10.0/15.8 MB 824.3 kB/s eta 0:00:08\n", " ------------------------- -------------- 10.0/15.8 MB 825.4 kB/s eta 0:00:08\n", " ------------------------- -------------- 10.1/15.8 MB 827.5 kB/s eta 0:00:07\n", " ------------------------- -------------- 10.1/15.8 MB 827.6 kB/s eta 0:00:07\n", " ------------------------- -------------- 10.2/15.8 MB 829.2 kB/s eta 0:00:07\n", " ------------------------- -------------- 10.2/15.8 MB 831.3 kB/s eta 0:00:07\n", " -------------------------- ------------- 10.3/15.8 MB 829.8 kB/s eta 0:00:07\n", " -------------------------- ------------- 10.3/15.8 MB 833.0 kB/s eta 0:00:07\n", " -------------------------- ------------- 10.4/15.8 MB 830.9 kB/s eta 0:00:07\n", " -------------------------- ------------- 10.5/15.8 MB 829.8 kB/s eta 0:00:07\n", " -------------------------- ------------- 10.5/15.8 MB 828.7 kB/s eta 0:00:07\n", " -------------------------- ------------- 10.5/15.8 MB 828.7 kB/s eta 0:00:07\n", " -------------------------- ------------- 10.6/15.8 MB 825.6 kB/s eta 0:00:07\n", " -------------------------- ------------- 10.6/15.8 MB 824.6 kB/s eta 0:00:07\n", " --------------------------- ------------ 10.7/15.8 MB 822.5 kB/s eta 0:00:07\n", " --------------------------- ------------ 10.8/15.8 MB 820.4 kB/s eta 0:00:07\n", " --------------------------- ------------ 10.8/15.8 MB 818.4 kB/s eta 0:00:07\n", " --------------------------- ------------ 10.8/15.8 MB 818.4 kB/s eta 0:00:07\n", " --------------------------- ------------ 10.9/15.8 MB 816.4 kB/s eta 0:00:07\n", " --------------------------- ------------ 11.0/15.8 MB 814.3 kB/s eta 0:00:06\n", " --------------------------- ------------ 11.0/15.8 MB 813.2 kB/s eta 0:00:06\n", " --------------------------- ------------ 11.1/15.8 MB 816.4 kB/s eta 0:00:06\n", " ---------------------------- ----------- 11.1/15.8 MB 814.3 kB/s eta 0:00:06\n", " ---------------------------- ----------- 11.2/15.8 MB 810.3 kB/s eta 0:00:06\n", " ---------------------------- ----------- 11.2/15.8 MB 809.3 kB/s eta 0:00:06\n", " ---------------------------- ----------- 11.3/15.8 MB 809.3 kB/s eta 0:00:06\n", " ---------------------------- ----------- 11.3/15.8 MB 826.6 kB/s eta 0:00:06\n", " ---------------------------- ----------- 11.4/15.8 MB 824.6 kB/s eta 0:00:06\n", " ---------------------------- ----------- 11.4/15.8 MB 829.8 kB/s eta 0:00:06\n", " ----------------------------- ---------- 11.5/15.8 MB 829.8 kB/s eta 0:00:06\n", " ----------------------------- ---------- 11.6/15.8 MB 849.2 kB/s eta 0:00:06\n", " ----------------------------- ---------- 11.6/15.8 MB 869.4 kB/s eta 0:00:05\n", " ----------------------------- ---------- 11.7/15.8 MB 881.2 kB/s eta 0:00:05\n", " ----------------------------- ---------- 11.7/15.8 MB 909.3 kB/s eta 0:00:05\n", " ----------------------------- ---------- 11.8/15.8 MB 914.4 kB/s eta 0:00:05\n", " ----------------------------- ---------- 11.8/15.8 MB 930.0 kB/s eta 0:00:05\n", " ------------------------------ --------- 11.9/15.8 MB 936.6 kB/s eta 0:00:05\n", " ------------------------------ --------- 12.0/15.8 MB 943.4 kB/s eta 0:00:05\n", " ------------------------------ --------- 12.0/15.8 MB 947.5 kB/s eta 0:00:04\n", " ------------------------------ --------- 12.1/15.8 MB 952.9 kB/s eta 0:00:04\n", " ------------------------------ --------- 12.2/15.8 MB 958.6 kB/s eta 0:00:04\n", " ------------------------------ --------- 12.2/15.8 MB 964.3 kB/s eta 0:00:04\n", " ------------------------------- -------- 12.3/15.8 MB 967.1 kB/s eta 0:00:04\n", " ------------------------------- -------- 12.4/15.8 MB 969.9 kB/s eta 0:00:04\n", " ------------------------------- -------- 12.5/15.8 MB 974.3 kB/s eta 0:00:04\n", " ------------------------------- -------- 12.5/15.8 MB 977.1 kB/s eta 0:00:04\n", " ------------------------------- -------- 12.6/15.8 MB 980.0 kB/s eta 0:00:04\n", " -------------------------------- ------- 12.7/15.8 MB 980.0 kB/s eta 0:00:04\n", " -------------------------------- ------- 12.8/15.8 MB 983.1 kB/s eta 0:00:04\n", " -------------------------------- ------- 12.8/15.8 MB 986.0 kB/s eta 0:00:04\n", " -------------------------------- ------- 12.9/15.8 MB 992.0 kB/s eta 0:00:03\n", " -------------------------------- ------- 13.0/15.8 MB 987.5 kB/s eta 0:00:03\n", " -------------------------------- ------- 13.0/15.8 MB 989.0 kB/s eta 0:00:03\n", " -------------------------------- ------- 13.0/15.8 MB 989.0 kB/s eta 0:00:03\n", " -------------------------------- ------- 13.0/15.8 MB 989.0 kB/s eta 0:00:03\n", " -------------------------------- ------- 13.0/15.8 MB 989.0 kB/s eta 0:00:03\n", " -------------------------------- ------- 13.0/15.8 MB 989.0 kB/s eta 0:00:03\n", " -------------------------------- ------- 13.0/15.8 MB 989.0 kB/s eta 0:00:03\n", " -------------------------------- ------- 13.0/15.8 MB 989.0 kB/s eta 0:00:03\n", " --------------------------------- ------ 13.1/15.8 MB 967.1 kB/s eta 0:00:03\n", " --------------------------------- ------ 13.1/15.8 MB 964.2 kB/s eta 0:00:03\n", " --------------------------------- ------ 13.1/15.8 MB 958.6 kB/s eta 0:00:03\n", " --------------------------------- ------ 13.2/15.8 MB 958.6 kB/s eta 0:00:03\n", " --------------------------------- ------ 13.2/15.8 MB 957.1 kB/s eta 0:00:03\n", " --------------------------------- ------ 13.3/15.8 MB 957.2 kB/s eta 0:00:03\n", " --------------------------------- ------ 13.3/15.8 MB 957.2 kB/s eta 0:00:03\n", " --------------------------------- ------ 13.4/15.8 MB 957.2 kB/s eta 0:00:03\n", " ---------------------------------- ----- 13.5/15.8 MB 958.6 kB/s eta 0:00:03\n", " ---------------------------------- ----- 13.6/15.8 MB 958.6 kB/s eta 0:00:03\n", " ---------------------------------- ----- 13.6/15.8 MB 958.6 kB/s eta 0:00:03\n", " ---------------------------------- ----- 13.7/15.8 MB 958.6 kB/s eta 0:00:03\n", " ---------------------------------- ----- 13.8/15.8 MB 958.6 kB/s eta 0:00:03\n", " ---------------------------------- ----- 13.8/15.8 MB 958.6 kB/s eta 0:00:03\n", " ----------------------------------- ---- 13.9/15.8 MB 959.9 kB/s eta 0:00:03\n", " ----------------------------------- ---- 14.0/15.8 MB 960.0 kB/s eta 0:00:02\n", " ----------------------------------- ---- 14.0/15.8 MB 961.4 kB/s eta 0:00:02\n", " ----------------------------------- ---- 14.1/15.8 MB 960.0 kB/s eta 0:00:02\n", " ----------------------------------- ---- 14.2/15.8 MB 958.6 kB/s eta 0:00:02\n", " ------------------------------------ --- 14.3/15.8 MB 959.9 kB/s eta 0:00:02\n", " ------------------------------------ --- 14.3/15.8 MB 959.9 kB/s eta 0:00:02\n", " ------------------------------------ --- 14.4/15.8 MB 961.4 kB/s eta 0:00:02\n", " ------------------------------------ --- 14.5/15.8 MB 958.6 kB/s eta 0:00:02\n", " ------------------------------------ --- 14.5/15.8 MB 959.9 kB/s eta 0:00:02\n", " ------------------------------------ --- 14.6/15.8 MB 958.6 kB/s eta 0:00:02\n", " ------------------------------------ --- 14.6/15.8 MB 958.6 kB/s eta 0:00:02\n", " ------------------------------------ --- 14.6/15.8 MB 958.6 kB/s eta 0:00:02\n", " ------------------------------------ --- 14.6/15.8 MB 958.6 kB/s eta 0:00:02\n", " ------------------------------------ --- 14.6/15.8 MB 958.6 kB/s eta 0:00:02\n", " ------------------------------------ --- 14.6/15.8 MB 958.6 kB/s eta 0:00:02\n", " ------------------------------------ --- 14.6/15.8 MB 958.6 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.7/15.8 MB 934.0 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.7/15.8 MB 931.3 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.7/15.8 MB 930.0 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.7/15.8 MB 930.0 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.7/15.8 MB 930.0 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.7/15.8 MB 930.0 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.7/15.8 MB 930.0 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.7/15.8 MB 930.0 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.7/15.8 MB 930.0 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.7/15.8 MB 930.0 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.7/15.8 MB 930.0 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.8/15.8 MB 898.1 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.8/15.8 MB 898.1 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.8/15.8 MB 893.2 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.8/15.8 MB 887.2 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.8/15.8 MB 884.8 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.9/15.8 MB 883.5 kB/s eta 0:00:02\n", " ------------------------------------- -- 14.9/15.8 MB 881.2 kB/s eta 0:00:02\n", " ------------------------------------- -- 15.0/15.8 MB 878.8 kB/s eta 0:00:01\n", " ------------------------------------- -- 15.0/15.8 MB 878.8 kB/s eta 0:00:01\n", " ------------------------------------- -- 15.0/15.8 MB 878.8 kB/s eta 0:00:01\n", " ------------------------------------- -- 15.0/15.8 MB 878.8 kB/s eta 0:00:01\n", " ------------------------------------- -- 15.0/15.8 MB 878.8 kB/s eta 0:00:01\n", " ------------------------------------- -- 15.0/15.8 MB 878.8 kB/s eta 0:00:01\n", " ------------------------------------- -- 15.0/15.8 MB 878.8 kB/s eta 0:00:01\n", " ------------------------------------- -- 15.0/15.8 MB 878.8 kB/s eta 0:00:01\n", " -------------------------------------- - 15.0/15.8 MB 856.9 kB/s eta 0:00:01\n", " -------------------------------------- - 15.0/15.8 MB 856.9 kB/s eta 0:00:01\n", " -------------------------------------- - 15.1/15.8 MB 852.5 kB/s eta 0:00:01\n", " -------------------------------------- - 15.1/15.8 MB 847.0 kB/s eta 0:00:01\n", " -------------------------------------- - 15.1/15.8 MB 847.0 kB/s eta 0:00:01\n", " -------------------------------------- - 15.1/15.8 MB 843.7 kB/s eta 0:00:01\n", " -------------------------------------- - 15.1/15.8 MB 839.3 kB/s eta 0:00:01\n", " -------------------------------------- - 15.1/15.8 MB 837.2 kB/s eta 0:00:01\n", " -------------------------------------- - 15.2/15.8 MB 834.0 kB/s eta 0:00:01\n", " -------------------------------------- - 15.2/15.8 MB 834.0 kB/s eta 0:00:01\n", " -------------------------------------- - 15.2/15.8 MB 832.0 kB/s eta 0:00:01\n", " -------------------------------------- - 15.3/15.8 MB 829.8 kB/s eta 0:00:01\n", " -------------------------------------- - 15.3/15.8 MB 827.6 kB/s eta 0:00:01\n", " -------------------------------------- - 15.3/15.8 MB 825.6 kB/s eta 0:00:01\n", " -------------------------------------- - 15.4/15.8 MB 823.5 kB/s eta 0:00:01\n", " -------------------------------------- - 15.4/15.8 MB 821.5 kB/s eta 0:00:01\n", " --------------------------------------- 15.4/15.8 MB 820.4 kB/s eta 0:00:01\n", " --------------------------------------- 15.5/15.8 MB 818.4 kB/s eta 0:00:01\n", " --------------------------------------- 15.5/15.8 MB 816.4 kB/s eta 0:00:01\n", " --------------------------------------- 15.5/15.8 MB 814.3 kB/s eta 0:00:01\n", " --------------------------------------- 15.6/15.8 MB 812.3 kB/s eta 0:00:01\n", " --------------------------------------- 15.6/15.8 MB 812.3 kB/s eta 0:00:01\n", " --------------------------------------- 15.7/15.8 MB 810.3 kB/s eta 0:00:01\n", " --------------------------------------- 15.7/15.8 MB 810.3 kB/s eta 0:00:01\n", " --------------------------------------- 15.7/15.8 MB 806.3 kB/s eta 0:00:01\n", " --------------------------------------- 15.8/15.8 MB 804.3 kB/s eta 0:00:01\n", " --------------------------------------- 15.8/15.8 MB 802.3 kB/s eta 0:00:01\n", " ---------------------------------------- 15.8/15.8 MB 798.7 kB/s eta 0:00:00\n", "Installing collected packages: numpy\n", "Successfully installed numpy-1.26.4\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "pip install numpy" ] }, { "cell_type": "markdown", "id": "ae10f23f", "metadata": {}, "source": [ "#### pandas\n", "https://pypi.org/project/pandas/" ] }, { "cell_type": "code", "execution_count": 2, "id": "706daa83", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting pandas\n", " Downloading pandas-2.2.1-cp311-cp311-win_amd64.whl.metadata (19 kB)\n", "Requirement already satisfied: numpy<2,>=1.23.2 in c:\\users\\micro\\anaconda3\\envs\\python101\\lib\\site-packages (from pandas) (1.26.4)\n", "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\users\\micro\\anaconda3\\envs\\python101\\lib\\site-packages (from pandas) (2.8.2)\n", "Requirement already satisfied: pytz>=2020.1 in c:\\users\\micro\\anaconda3\\envs\\python101\\lib\\site-packages (from pandas) (2023.3.post1)\n", "Collecting tzdata>=2022.7 (from pandas)\n", " Downloading tzdata-2024.1-py2.py3-none-any.whl.metadata (1.4 kB)\n", "Requirement already satisfied: six>=1.5 in c:\\users\\micro\\anaconda3\\envs\\python101\\lib\\site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n", "Downloading pandas-2.2.1-cp311-cp311-win_amd64.whl (11.6 MB)\n", " ---------------------------------------- 0.0/11.6 MB ? eta -:--:--\n", " ---------------------------------------- 0.0/11.6 MB 640.0 kB/s eta 0:00:19\n", " ---------------------------------------- 0.1/11.6 MB 1.3 MB/s eta 0:00:09\n", " --------------------------------------- 0.2/11.6 MB 1.3 MB/s eta 0:00:09\n", " --------------------------------------- 0.3/11.6 MB 1.8 MB/s eta 0:00:07\n", " - -------------------------------------- 0.4/11.6 MB 1.8 MB/s eta 0:00:07\n", " -- ------------------------------------- 0.6/11.6 MB 2.2 MB/s eta 0:00:06\n", " -- ------------------------------------- 0.7/11.6 MB 2.1 MB/s eta 0:00:06\n", " -- ------------------------------------- 0.8/11.6 MB 2.2 MB/s eta 0:00:05\n", " -- ------------------------------------- 0.8/11.6 MB 2.2 MB/s eta 0:00:05\n", " -- ------------------------------------- 0.8/11.6 MB 2.2 MB/s eta 0:00:05\n", " ---- ----------------------------------- 1.3/11.6 MB 2.6 MB/s eta 0:00:04\n", " ---- ----------------------------------- 1.4/11.6 MB 2.5 MB/s eta 0:00:05\n", " ----- ---------------------------------- 1.5/11.6 MB 2.5 MB/s eta 0:00:04\n", " ----- ---------------------------------- 1.7/11.6 MB 2.7 MB/s eta 0:00:04\n", " ------ --------------------------------- 1.9/11.6 MB 2.7 MB/s eta 0:00:04\n", " ------- -------------------------------- 2.1/11.6 MB 2.9 MB/s eta 0:00:04\n", " ------- -------------------------------- 2.3/11.6 MB 2.9 MB/s eta 0:00:04\n", " -------- ------------------------------- 2.4/11.6 MB 2.9 MB/s eta 0:00:04\n", " -------- ------------------------------- 2.6/11.6 MB 3.0 MB/s eta 0:00:04\n", " --------- ------------------------------ 2.8/11.6 MB 3.1 MB/s eta 0:00:03\n", " ---------- ----------------------------- 2.9/11.6 MB 3.1 MB/s eta 0:00:03\n", " ---------- ----------------------------- 2.9/11.6 MB 3.1 MB/s eta 0:00:03\n", " ----------- ---------------------------- 3.3/11.6 MB 3.2 MB/s eta 0:00:03\n", " ------------ --------------------------- 3.5/11.6 MB 3.2 MB/s eta 0:00:03\n", " ------------ --------------------------- 3.5/11.6 MB 3.2 MB/s eta 0:00:03\n", " ------------ --------------------------- 3.7/11.6 MB 3.1 MB/s eta 0:00:03\n", " ------------- -------------------------- 4.0/11.6 MB 3.2 MB/s eta 0:00:03\n", " ------------- -------------------------- 4.0/11.6 MB 3.2 MB/s eta 0:00:03\n", " -------------- ------------------------- 4.2/11.6 MB 3.1 MB/s eta 0:00:03\n", " --------------- ------------------------ 4.4/11.6 MB 3.2 MB/s eta 0:00:03\n", " --------------- ------------------------ 4.4/11.6 MB 3.1 MB/s eta 0:00:03\n", " --------------- ------------------------ 4.6/11.6 MB 3.1 MB/s eta 0:00:03\n", " ---------------- ----------------------- 4.7/11.6 MB 3.1 MB/s eta 0:00:03\n", " ---------------- ----------------------- 4.8/11.6 MB 3.1 MB/s eta 0:00:03\n", " ---------------- ----------------------- 4.8/11.6 MB 3.1 MB/s eta 0:00:03\n", " ---------------- ----------------------- 4.8/11.6 MB 3.1 MB/s eta 0:00:03\n", " ---------------- ----------------------- 4.8/11.6 MB 3.1 MB/s eta 0:00:03\n", " ---------------- ----------------------- 4.8/11.6 MB 3.1 MB/s eta 0:00:03\n", " ---------------- ----------------------- 4.8/11.6 MB 3.1 MB/s eta 0:00:03\n", " ---------------- ----------------------- 4.8/11.6 MB 3.1 MB/s eta 0:00:03\n", " ---------------- ----------------------- 4.9/11.6 MB 2.6 MB/s eta 0:00:03\n", " ----------------- ---------------------- 5.0/11.6 MB 2.6 MB/s eta 0:00:03\n", " ----------------- ---------------------- 5.0/11.6 MB 2.5 MB/s eta 0:00:03\n", " ----------------- ---------------------- 5.0/11.6 MB 2.5 MB/s eta 0:00:03\n", " ----------------- ---------------------- 5.1/11.6 MB 2.4 MB/s eta 0:00:03\n", " ----------------- ---------------------- 5.2/11.6 MB 2.5 MB/s eta 0:00:03\n", " ------------------ --------------------- 5.3/11.6 MB 2.4 MB/s eta 0:00:03\n", " ------------------ --------------------- 5.4/11.6 MB 2.4 MB/s eta 0:00:03\n", " ------------------ --------------------- 5.5/11.6 MB 2.4 MB/s eta 0:00:03\n", " ------------------- -------------------- 5.5/11.6 MB 2.4 MB/s eta 0:00:03\n", " ------------------- -------------------- 5.6/11.6 MB 2.4 MB/s eta 0:00:03\n", " ------------------- -------------------- 5.7/11.6 MB 2.4 MB/s eta 0:00:03\n", " -------------------- ------------------- 5.8/11.6 MB 2.4 MB/s eta 0:00:03\n", " -------------------- ------------------- 5.9/11.6 MB 2.4 MB/s eta 0:00:03\n", " -------------------- ------------------- 5.9/11.6 MB 2.4 MB/s eta 0:00:03\n", " -------------------- ------------------- 5.9/11.6 MB 2.4 MB/s eta 0:00:03\n", " -------------------- ------------------- 5.9/11.6 MB 2.4 MB/s eta 0:00:03\n", " -------------------- ------------------- 5.9/11.6 MB 2.4 MB/s eta 0:00:03\n", " -------------------- ------------------- 5.9/11.6 MB 2.4 MB/s eta 0:00:03\n", " -------------------- ------------------- 5.9/11.6 MB 2.4 MB/s eta 0:00:03\n", " -------------------- ------------------- 5.9/11.6 MB 2.4 MB/s eta 0:00:03\n", " -------------------- ------------------- 6.0/11.6 MB 2.1 MB/s eta 0:00:03\n", " -------------------- ------------------- 6.0/11.6 MB 2.1 MB/s eta 0:00:03\n", " -------------------- ------------------- 6.0/11.6 MB 2.0 MB/s eta 0:00:03\n", " -------------------- ------------------- 6.0/11.6 MB 2.0 MB/s eta 0:00:03\n", " --------------------- ------------------ 6.1/11.6 MB 2.0 MB/s eta 0:00:03\n", " --------------------- ------------------ 6.2/11.6 MB 2.0 MB/s eta 0:00:03\n", " --------------------- ------------------ 6.2/11.6 MB 2.0 MB/s eta 0:00:03\n", " --------------------- ------------------ 6.2/11.6 MB 2.0 MB/s eta 0:00:03\n", " --------------------- ------------------ 6.2/11.6 MB 2.0 MB/s eta 0:00:03\n", " --------------------- ------------------ 6.2/11.6 MB 2.0 MB/s eta 0:00:03\n", " --------------------- ------------------ 6.2/11.6 MB 2.0 MB/s eta 0:00:03\n", " --------------------- ------------------ 6.2/11.6 MB 2.0 MB/s eta 0:00:03\n", " --------------------- ------------------ 6.2/11.6 MB 2.0 MB/s eta 0:00:03\n", " --------------------- ------------------ 6.2/11.6 MB 1.8 MB/s eta 0:00:03\n", " --------------------- ------------------ 6.3/11.6 MB 1.8 MB/s eta 0:00:04\n", " --------------------- ------------------ 6.3/11.6 MB 1.8 MB/s eta 0:00:04\n", " --------------------- ------------------ 6.3/11.6 MB 1.7 MB/s eta 0:00:04\n", " --------------------- ------------------ 6.3/11.6 MB 1.7 MB/s eta 0:00:04\n", " --------------------- ------------------ 6.3/11.6 MB 1.7 MB/s eta 0:00:04\n", " --------------------- ------------------ 6.3/11.6 MB 1.7 MB/s eta 0:00:04\n", " --------------------- ------------------ 6.4/11.6 MB 1.7 MB/s eta 0:00:04\n", " ---------------------- ----------------- 6.4/11.6 MB 1.7 MB/s eta 0:00:04\n", " ---------------------- ----------------- 6.5/11.6 MB 1.7 MB/s eta 0:00:04\n", " ---------------------- ----------------- 6.5/11.6 MB 1.6 MB/s eta 0:00:04\n", " ---------------------- ----------------- 6.5/11.6 MB 1.6 MB/s eta 0:00:04\n", " ---------------------- ----------------- 6.6/11.6 MB 1.6 MB/s eta 0:00:04\n", " ---------------------- ----------------- 6.6/11.6 MB 1.6 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.7/11.6 MB 1.6 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.7/11.6 MB 1.6 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.7/11.6 MB 1.6 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.7/11.6 MB 1.6 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.7/11.6 MB 1.6 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.7/11.6 MB 1.6 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.7/11.6 MB 1.6 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.7/11.6 MB 1.6 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.8/11.6 MB 1.5 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.8/11.6 MB 1.5 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.8/11.6 MB 1.5 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.8/11.6 MB 1.5 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.8/11.6 MB 1.5 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.9/11.6 MB 1.4 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.9/11.6 MB 1.4 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.9/11.6 MB 1.4 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.9/11.6 MB 1.4 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.9/11.6 MB 1.4 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.9/11.6 MB 1.4 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.9/11.6 MB 1.4 MB/s eta 0:00:04\n", " ----------------------- ---------------- 6.9/11.6 MB 1.4 MB/s eta 0:00:04\n", " ------------------------ --------------- 7.0/11.6 MB 1.4 MB/s eta 0:00:04\n", " ------------------------ --------------- 7.0/11.6 MB 1.4 MB/s eta 0:00:04\n", " ------------------------ --------------- 7.0/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------ --------------- 7.0/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------ --------------- 7.0/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------ --------------- 7.0/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------ --------------- 7.0/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------ --------------- 7.0/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------ --------------- 7.1/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------ --------------- 7.1/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------ --------------- 7.1/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------ --------------- 7.2/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------ --------------- 7.2/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------ --------------- 7.2/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.3/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.3/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.3/11.6 MB 1.3 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.4/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.4/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.2 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.1 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.1 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.1 MB/s eta 0:00:04\n", " ------------------------- -------------- 7.5/11.6 MB 1.1 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.5/11.6 MB 1.1 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.6/11.6 MB 1.1 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.6/11.6 MB 1.1 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.6/11.6 MB 1.1 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.6/11.6 MB 1.1 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.6/11.6 MB 1.1 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.6/11.6 MB 1.1 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.6/11.6 MB 1.1 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.6/11.6 MB 1.1 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.6/11.6 MB 1.1 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.6/11.6 MB 1.1 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.6/11.6 MB 1.1 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.6/11.6 MB 1.0 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.6/11.6 MB 1.0 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.7/11.6 MB 1.0 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.7/11.6 MB 1.0 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.7/11.6 MB 1.0 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.7/11.6 MB 1.0 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.7/11.6 MB 1.0 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.7/11.6 MB 1.0 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.7/11.6 MB 1.0 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.7/11.6 MB 1.0 MB/s eta 0:00:04\n", " -------------------------- ------------- 7.7/11.6 MB 986.3 kB/s eta 0:00:04\n", " -------------------------- ------------- 7.7/11.6 MB 986.3 kB/s eta 0:00:04\n", " -------------------------- ------------- 7.7/11.6 MB 975.9 kB/s eta 0:00:04\n", " -------------------------- ------------- 7.7/11.6 MB 975.9 kB/s eta 0:00:04\n", " -------------------------- ------------- 7.7/11.6 MB 975.9 kB/s eta 0:00:04\n", " -------------------------- ------------- 7.7/11.6 MB 959.5 kB/s eta 0:00:05\n", " -------------------------- ------------- 7.7/11.6 MB 959.5 kB/s eta 0:00:05\n", " -------------------------- ------------- 7.7/11.6 MB 959.5 kB/s eta 0:00:05\n", " -------------------------- ------------- 7.8/11.6 MB 949.1 kB/s eta 0:00:05\n", " -------------------------- ------------- 7.8/11.6 MB 943.1 kB/s eta 0:00:05\n", " -------------------------- ------------- 7.8/11.6 MB 939.7 kB/s eta 0:00:05\n", " -------------------------- ------------- 7.8/11.6 MB 935.6 kB/s eta 0:00:05\n", " -------------------------- ------------- 7.8/11.6 MB 932.9 kB/s eta 0:00:05\n", " --------------------------- ------------ 7.9/11.6 MB 931.4 kB/s eta 0:00:05\n", " --------------------------- ------------ 7.9/11.6 MB 928.6 kB/s eta 0:00:05\n", " --------------------------- ------------ 7.9/11.6 MB 926.4 kB/s eta 0:00:05\n", " --------------------------- ------------ 7.9/11.6 MB 924.4 kB/s eta 0:00:04\n", " --------------------------- ------------ 8.0/11.6 MB 922.9 kB/s eta 0:00:04\n", " --------------------------- ------------ 8.0/11.6 MB 921.4 kB/s eta 0:00:04\n", " --------------------------- ------------ 8.0/11.6 MB 920.0 kB/s eta 0:00:04\n", " --------------------------- ------------ 8.0/11.6 MB 919.1 kB/s eta 0:00:04\n", " --------------------------- ------------ 8.1/11.6 MB 918.4 kB/s eta 0:00:04\n", " --------------------------- ------------ 8.1/11.6 MB 916.3 kB/s eta 0:00:04\n", " ---------------------------- ----------- 8.2/11.6 MB 915.6 kB/s eta 0:00:04\n", " ---------------------------- ----------- 8.2/11.6 MB 915.9 kB/s eta 0:00:04\n", " ---------------------------- ----------- 8.2/11.6 MB 914.5 kB/s eta 0:00:04\n", " ---------------------------- ----------- 8.3/11.6 MB 915.9 kB/s eta 0:00:04\n", " ---------------------------- ----------- 8.3/11.6 MB 914.1 kB/s eta 0:00:04\n", " ---------------------------- ----------- 8.3/11.6 MB 913.5 kB/s eta 0:00:04\n", " ---------------------------- ----------- 8.4/11.6 MB 913.6 kB/s eta 0:00:04\n", " ----------------------------- ---------- 8.4/11.6 MB 914.5 kB/s eta 0:00:04\n", " ----------------------------- ---------- 8.5/11.6 MB 912.8 kB/s eta 0:00:04\n", " ----------------------------- ---------- 8.5/11.6 MB 913.7 kB/s eta 0:00:04\n", " ----------------------------- ---------- 8.6/11.6 MB 914.6 kB/s eta 0:00:04\n", " ----------------------------- ---------- 8.6/11.6 MB 914.9 kB/s eta 0:00:04\n", " ----------------------------- ---------- 8.7/11.6 MB 915.7 kB/s eta 0:00:04\n", " ------------------------------ --------- 8.7/11.6 MB 916.2 kB/s eta 0:00:04\n", " ------------------------------ --------- 8.8/11.6 MB 917.1 kB/s eta 0:00:04\n", " ------------------------------ --------- 8.8/11.6 MB 919.3 kB/s eta 0:00:04\n", " ------------------------------ --------- 8.9/11.6 MB 919.2 kB/s eta 0:00:03\n", " ------------------------------ --------- 8.9/11.6 MB 920.6 kB/s eta 0:00:03\n", " ------------------------------ --------- 9.0/11.6 MB 922.5 kB/s eta 0:00:03\n", " ------------------------------- -------- 9.0/11.6 MB 924.8 kB/s eta 0:00:03\n", " ------------------------------- -------- 9.1/11.6 MB 925.6 kB/s eta 0:00:03\n", " ------------------------------- -------- 9.2/11.6 MB 928.1 kB/s eta 0:00:03\n", " ------------------------------- -------- 9.2/11.6 MB 930.3 kB/s eta 0:00:03\n", " -------------------------------- ------- 9.3/11.6 MB 930.6 kB/s eta 0:00:03\n", " -------------------------------- ------- 9.3/11.6 MB 932.4 kB/s eta 0:00:03\n", " -------------------------------- ------- 9.4/11.6 MB 935.6 kB/s eta 0:00:03\n", " -------------------------------- ------- 9.5/11.6 MB 937.9 kB/s eta 0:00:03\n", " -------------------------------- ------- 9.6/11.6 MB 941.1 kB/s eta 0:00:03\n", " --------------------------------- ------ 9.6/11.6 MB 941.8 kB/s eta 0:00:03\n", " --------------------------------- ------ 9.7/11.6 MB 944.9 kB/s eta 0:00:03\n", " --------------------------------- ------ 9.7/11.6 MB 947.1 kB/s eta 0:00:02\n", " --------------------------------- ------ 9.7/11.6 MB 947.1 kB/s eta 0:00:02\n", " --------------------------------- ------ 9.8/11.6 MB 940.6 kB/s eta 0:00:02\n", " --------------------------------- ------ 9.8/11.6 MB 941.3 kB/s eta 0:00:02\n", " ---------------------------------- ----- 9.9/11.6 MB 942.9 kB/s eta 0:00:02\n", " ---------------------------------- ----- 9.9/11.6 MB 946.0 kB/s eta 0:00:02\n", " ---------------------------------- ----- 10.0/11.6 MB 948.1 kB/s eta 0:00:02\n", " ---------------------------------- ----- 10.1/11.6 MB 953.1 kB/s eta 0:00:02\n", " ----------------------------------- ---- 10.2/11.6 MB 955.1 kB/s eta 0:00:02\n", " ----------------------------------- ---- 10.3/11.6 MB 958.6 kB/s eta 0:00:02\n", " ----------------------------------- ---- 10.4/11.6 MB 960.0 kB/s eta 0:00:02\n", " ----------------------------------- ---- 10.4/11.6 MB 959.9 kB/s eta 0:00:02\n", " ------------------------------------ --- 10.5/11.6 MB 957.2 kB/s eta 0:00:02\n", " ------------------------------------ --- 10.6/11.6 MB 957.2 kB/s eta 0:00:02\n", " ------------------------------------ --- 10.7/11.6 MB 957.2 kB/s eta 0:00:01\n", " ------------------------------------- -- 10.7/11.6 MB 954.4 kB/s eta 0:00:01\n", " ------------------------------------- -- 10.8/11.6 MB 951.6 kB/s eta 0:00:01\n", " ------------------------------------- -- 10.9/11.6 MB 951.6 kB/s eta 0:00:01\n", " ------------------------------------- -- 11.0/11.6 MB 948.9 kB/s eta 0:00:01\n", " -------------------------------------- - 11.1/11.6 MB 955.8 kB/s eta 0:00:01\n", " -------------------------------------- - 11.2/11.6 MB 951.6 kB/s eta 0:00:01\n", " -------------------------------------- - 11.3/11.6 MB 947.5 kB/s eta 0:00:01\n", " --------------------------------------- 11.4/11.6 MB 943.4 kB/s eta 0:00:01\n", " --------------------------------------- 11.4/11.6 MB 940.7 kB/s eta 0:00:01\n", " --------------------------------------- 11.5/11.6 MB 939.3 kB/s eta 0:00:01\n", " --------------------------------------- 11.6/11.6 MB 940.7 kB/s eta 0:00:01\n", " ---------------------------------------- 11.6/11.6 MB 937.0 kB/s eta 0:00:00\n", "Downloading tzdata-2024.1-py2.py3-none-any.whl (345 kB)\n", " ---------------------------------------- 0.0/345.4 kB ? eta -:--:--\n", " ---------- ----------------------------- 92.2/345.4 kB 1.7 MB/s eta 0:00:01\n", " ---------------------- ----------------- 194.6/345.4 kB 2.3 MB/s eta 0:00:01\n", " ----------------------------------- ---- 307.2/345.4 kB 2.1 MB/s eta 0:00:01\n", " ---------------------------------------- 345.4/345.4 kB 2.1 MB/s eta 0:00:00\n", "Installing collected packages: tzdata, pandas\n", "Successfully installed pandas-2.2.1 tzdata-2024.1\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "pip install pandas" ] }, { "cell_type": "markdown", "id": "e7efcd9c", "metadata": {}, "source": [ "#### matplotlib\n", "https://pypi.org/project/matplotlib/" ] }, { "cell_type": "code", "execution_count": 3, "id": "0a8081c0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting matplotlib\n", " Downloading matplotlib-3.8.3-cp311-cp311-win_amd64.whl.metadata (5.9 kB)\n", "Collecting contourpy>=1.0.1 (from matplotlib)\n", " Downloading contourpy-1.2.0-cp311-cp311-win_amd64.whl.metadata (5.8 kB)\n", "Collecting cycler>=0.10 (from matplotlib)\n", " Downloading cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)\n", "Collecting fonttools>=4.22.0 (from matplotlib)\n", " Downloading fonttools-4.50.0-cp311-cp311-win_amd64.whl.metadata (162 kB)\n", " ---------------------------------------- 0.0/162.6 kB ? eta -:--:--\n", " -- ------------------------------------- 10.2/162.6 kB ? eta -:--:--\n", " -------------------------- ----------- 112.6/162.6 kB 1.6 MB/s eta 0:00:01\n", " -------------------------------------- 162.6/162.6 kB 1.6 MB/s eta 0:00:00\n", "Collecting kiwisolver>=1.3.1 (from matplotlib)\n", " Downloading kiwisolver-1.4.5-cp311-cp311-win_amd64.whl.metadata (6.5 kB)\n", "Requirement already satisfied: numpy<2,>=1.21 in c:\\users\\micro\\anaconda3\\envs\\python101\\lib\\site-packages (from matplotlib) (1.26.4)\n", "Requirement already satisfied: packaging>=20.0 in c:\\users\\micro\\anaconda3\\envs\\python101\\lib\\site-packages (from matplotlib) (23.2)\n", "Collecting pillow>=8 (from matplotlib)\n", " Downloading pillow-10.2.0-cp311-cp311-win_amd64.whl.metadata (9.9 kB)\n", "Collecting pyparsing>=2.3.1 (from matplotlib)\n", " Downloading pyparsing-3.1.2-py3-none-any.whl.metadata (5.1 kB)\n", "Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\micro\\anaconda3\\envs\\python101\\lib\\site-packages (from matplotlib) (2.8.2)\n", "Requirement already satisfied: six>=1.5 in c:\\users\\micro\\anaconda3\\envs\\python101\\lib\\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n", "Downloading matplotlib-3.8.3-cp311-cp311-win_amd64.whl (7.6 MB)\n", " ---------------------------------------- 0.0/7.6 MB ? eta -:--:--\n", " --------------------------------------- 0.1/7.6 MB 3.5 MB/s eta 0:00:03\n", " - -------------------------------------- 0.2/7.6 MB 4.1 MB/s eta 0:00:02\n", " -- ------------------------------------- 0.4/7.6 MB 3.1 MB/s eta 0:00:03\n", " -- ------------------------------------- 0.6/7.6 MB 3.5 MB/s eta 0:00:03\n", " -- ------------------------------------- 0.6/7.6 MB 3.5 MB/s eta 0:00:03\n", " ----- ---------------------------------- 1.0/7.6 MB 3.6 MB/s eta 0:00:02\n", " ----- ---------------------------------- 1.1/7.6 MB 3.6 MB/s eta 0:00:02\n", " ------ --------------------------------- 1.3/7.6 MB 3.6 MB/s eta 0:00:02\n", " ------- -------------------------------- 1.5/7.6 MB 3.7 MB/s eta 0:00:02\n", " -------- ------------------------------- 1.7/7.6 MB 3.8 MB/s eta 0:00:02\n", " ---------- ----------------------------- 1.9/7.6 MB 3.9 MB/s eta 0:00:02\n", " ----------- ---------------------------- 2.1/7.6 MB 3.9 MB/s eta 0:00:02\n", " ----------- ---------------------------- 2.3/7.6 MB 3.9 MB/s eta 0:00:02\n", " ------------ --------------------------- 2.4/7.6 MB 3.8 MB/s eta 0:00:02\n", " ------------- -------------------------- 2.6/7.6 MB 3.8 MB/s eta 0:00:02\n", " ------------- -------------------------- 2.7/7.6 MB 3.6 MB/s eta 0:00:02\n", " -------------- ------------------------- 2.9/7.6 MB 3.6 MB/s eta 0:00:02\n", " --------------- ------------------------ 3.0/7.6 MB 3.6 MB/s eta 0:00:02\n", " ---------------- ----------------------- 3.1/7.6 MB 3.6 MB/s eta 0:00:02\n", " ----------------- ---------------------- 3.3/7.6 MB 3.6 MB/s eta 0:00:02\n", " ------------------ --------------------- 3.5/7.6 MB 3.6 MB/s eta 0:00:02\n", " ------------------- -------------------- 3.7/7.6 MB 3.6 MB/s eta 0:00:02\n", " -------------------- ------------------- 3.9/7.6 MB 3.7 MB/s eta 0:00:02\n", " --------------------- ------------------ 4.1/7.6 MB 3.7 MB/s eta 0:00:01\n", " ---------------------- ----------------- 4.3/7.6 MB 3.7 MB/s eta 0:00:01\n", " ----------------------- ---------------- 4.5/7.6 MB 3.7 MB/s eta 0:00:01\n", " ------------------------ --------------- 4.7/7.6 MB 3.8 MB/s eta 0:00:01\n", " ------------------------- -------------- 4.9/7.6 MB 3.8 MB/s eta 0:00:01\n", " -------------------------- ------------- 5.1/7.6 MB 3.8 MB/s eta 0:00:01\n", " --------------------------- ------------ 5.2/7.6 MB 3.7 MB/s eta 0:00:01\n", " ---------------------------- ----------- 5.4/7.6 MB 3.8 MB/s eta 0:00:01\n", " ----------------------------- ---------- 5.6/7.6 MB 3.8 MB/s eta 0:00:01\n", " ------------------------------ --------- 5.8/7.6 MB 3.7 MB/s eta 0:00:01\n", " ------------------------------- -------- 6.0/7.6 MB 3.8 MB/s eta 0:00:01\n", " -------------------------------- ------- 6.2/7.6 MB 3.8 MB/s eta 0:00:01\n", " --------------------------------- ------ 6.4/7.6 MB 3.8 MB/s eta 0:00:01\n", " --------------------------------- ------ 6.5/7.6 MB 3.8 MB/s eta 0:00:01\n", " ----------------------------------- ---- 6.7/7.6 MB 3.8 MB/s eta 0:00:01\n", " ------------------------------------ --- 6.9/7.6 MB 3.8 MB/s eta 0:00:01\n", " ------------------------------------- -- 7.1/7.6 MB 3.8 MB/s eta 0:00:01\n", " -------------------------------------- - 7.3/7.6 MB 3.8 MB/s eta 0:00:01\n", " --------------------------------------- 7.5/7.6 MB 3.8 MB/s eta 0:00:01\n", " ---------------------------------------- 7.6/7.6 MB 3.8 MB/s eta 0:00:00\n", "Downloading contourpy-1.2.0-cp311-cp311-win_amd64.whl (187 kB)\n", " ---------------------------------------- 0.0/187.6 kB ? eta -:--:--\n", " ---------------------------------------- 187.6/187.6 kB 3.8 MB/s eta 0:00:00\n", "Downloading cycler-0.12.1-py3-none-any.whl (8.3 kB)\n", "Downloading fonttools-4.50.0-cp311-cp311-win_amd64.whl (2.2 MB)\n", " ---------------------------------------- 0.0/2.2 MB ? eta -:--:--\n", " -- ------------------------------------- 0.1/2.2 MB 2.4 MB/s eta 0:00:01\n", " ----- ---------------------------------- 0.3/2.2 MB 2.9 MB/s eta 0:00:01\n", " --------- ------------------------------ 0.5/2.2 MB 3.5 MB/s eta 0:00:01\n", " ------------ --------------------------- 0.7/2.2 MB 3.9 MB/s eta 0:00:01\n", " ---------------- ----------------------- 0.9/2.2 MB 3.7 MB/s eta 0:00:01\n", " ------------------- -------------------- 1.1/2.2 MB 3.9 MB/s eta 0:00:01\n", " ----------------------- ---------------- 1.3/2.2 MB 4.1 MB/s eta 0:00:01\n", " -------------------------- ------------- 1.5/2.2 MB 4.0 MB/s eta 0:00:01\n", " ------------------------------ --------- 1.7/2.2 MB 4.1 MB/s eta 0:00:01\n", " ---------------------------------- ----- 1.9/2.2 MB 4.1 MB/s eta 0:00:01\n", " ------------------------------------- -- 2.1/2.2 MB 4.1 MB/s eta 0:00:01\n", " ---------------------------------------- 2.2/2.2 MB 4.1 MB/s eta 0:00:00\n", "Downloading kiwisolver-1.4.5-cp311-cp311-win_amd64.whl (56 kB)\n", " ---------------------------------------- 0.0/56.1 kB ? eta -:--:--\n", " ---------------------------------------- 56.1/56.1 kB 2.9 MB/s eta 0:00:00\n", "Downloading pillow-10.2.0-cp311-cp311-win_amd64.whl (2.6 MB)\n", " ---------------------------------------- 0.0/2.6 MB ? eta -:--:--\n", " -- ------------------------------------- 0.2/2.6 MB 5.9 MB/s eta 0:00:01\n", " ------ --------------------------------- 0.4/2.6 MB 5.0 MB/s eta 0:00:01\n", " --------- ------------------------------ 0.6/2.6 MB 4.8 MB/s eta 0:00:01\n", " ------------ --------------------------- 0.8/2.6 MB 4.6 MB/s eta 0:00:01\n", " --------------- ------------------------ 1.0/2.6 MB 4.6 MB/s eta 0:00:01\n", " ------------------ --------------------- 1.2/2.6 MB 4.6 MB/s eta 0:00:01\n", " ---------------------- ----------------- 1.4/2.6 MB 4.6 MB/s eta 0:00:01\n", " ------------------------ --------------- 1.6/2.6 MB 4.5 MB/s eta 0:00:01\n", " --------------------------- ------------ 1.8/2.6 MB 4.5 MB/s eta 0:00:01\n", " --------------------------- ------------ 1.8/2.6 MB 4.5 MB/s eta 0:00:01\n", " -------------------------------- ------- 2.2/2.6 MB 4.3 MB/s eta 0:00:01\n", " ----------------------------------- ---- 2.3/2.6 MB 4.2 MB/s eta 0:00:01\n", " -------------------------------------- - 2.5/2.6 MB 4.2 MB/s eta 0:00:01\n", " ---------------------------------------- 2.6/2.6 MB 4.2 MB/s eta 0:00:00\n", "Downloading pyparsing-3.1.2-py3-none-any.whl (103 kB)\n", " ---------------------------------------- 0.0/103.2 kB ? eta -:--:--\n", " ---------------------------------------- 103.2/103.2 kB 3.0 MB/s eta 0:00:00\n", "Installing collected packages: pyparsing, pillow, kiwisolver, fonttools, cycler, contourpy, matplotlib\n", "Successfully installed contourpy-1.2.0 cycler-0.12.1 fonttools-4.50.0 kiwisolver-1.4.5 matplotlib-3.8.3 pillow-10.2.0 pyparsing-3.1.2\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "pip install matplotlib" ] }, { "cell_type": "markdown", "id": "c16b47fd", "metadata": {}, "source": [ "#### Scikit-learn\n", "https://pypi.org/project/scikit-learn/" ] }, { "cell_type": "code", "execution_count": 4, "id": "01307daa", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting scikit-learn\n", " Downloading scikit_learn-1.4.1.post1-cp311-cp311-win_amd64.whl.metadata (11 kB)\n", "Requirement already satisfied: numpy<2.0,>=1.19.5 in c:\\users\\micro\\anaconda3\\envs\\python101\\lib\\site-packages (from scikit-learn) (1.26.4)\n", "Collecting scipy>=1.6.0 (from scikit-learn)\n", " Downloading scipy-1.12.0-cp311-cp311-win_amd64.whl.metadata (60 kB)\n", " ---------------------------------------- 0.0/60.4 kB ? eta -:--:--\n", " ------ --------------------------------- 10.2/60.4 kB ? eta -:--:--\n", " -------------------------------------- 60.4/60.4 kB 796.9 kB/s eta 0:00:00\n", "Collecting joblib>=1.2.0 (from scikit-learn)\n", " Downloading joblib-1.3.2-py3-none-any.whl.metadata (5.4 kB)\n", "Collecting threadpoolctl>=2.0.0 (from scikit-learn)\n", " Downloading threadpoolctl-3.4.0-py3-none-any.whl.metadata (13 kB)\n", "Downloading scikit_learn-1.4.1.post1-cp311-cp311-win_amd64.whl (10.6 MB)\n", " ---------------------------------------- 0.0/10.6 MB ? eta -:--:--\n", " ---------------------------------------- 0.1/10.6 MB 1.9 MB/s eta 0:00:06\n", " --------------------------------------- 0.2/10.6 MB 2.9 MB/s eta 0:00:04\n", " - -------------------------------------- 0.3/10.6 MB 2.2 MB/s eta 0:00:05\n", " - -------------------------------------- 0.4/10.6 MB 2.5 MB/s eta 0:00:05\n", " -- ------------------------------------- 0.6/10.6 MB 2.6 MB/s eta 0:00:04\n", " -- ------------------------------------- 0.7/10.6 MB 2.8 MB/s eta 0:00:04\n", " --- ------------------------------------ 0.9/10.6 MB 2.9 MB/s eta 0:00:04\n", " ---- ----------------------------------- 1.1/10.6 MB 3.0 MB/s eta 0:00:04\n", " ---- ----------------------------------- 1.3/10.6 MB 3.1 MB/s eta 0:00:04\n", " ----- ---------------------------------- 1.5/10.6 MB 3.2 MB/s eta 0:00:03\n", " ------ --------------------------------- 1.6/10.6 MB 3.3 MB/s eta 0:00:03\n", " ------ --------------------------------- 1.7/10.6 MB 3.1 MB/s eta 0:00:03\n", " ------ --------------------------------- 1.8/10.6 MB 2.9 MB/s eta 0:00:04\n", " ------- -------------------------------- 1.9/10.6 MB 2.9 MB/s eta 0:00:03\n", " ------- -------------------------------- 2.0/10.6 MB 2.9 MB/s eta 0:00:04\n", " ------- -------------------------------- 2.1/10.6 MB 2.8 MB/s eta 0:00:04\n", " -------- ------------------------------- 2.3/10.6 MB 2.9 MB/s eta 0:00:03\n", " --------- ------------------------------ 2.5/10.6 MB 3.0 MB/s eta 0:00:03\n", " --------- ------------------------------ 2.6/10.6 MB 3.0 MB/s eta 0:00:03\n", " ---------- ----------------------------- 2.8/10.6 MB 3.1 MB/s eta 0:00:03\n", " ----------- ---------------------------- 2.9/10.6 MB 3.0 MB/s eta 0:00:03\n", " ----------- ---------------------------- 3.1/10.6 MB 3.1 MB/s eta 0:00:03\n", " ------------ --------------------------- 3.3/10.6 MB 3.1 MB/s eta 0:00:03\n", " ------------- -------------------------- 3.5/10.6 MB 3.2 MB/s eta 0:00:03\n", " ------------- -------------------------- 3.6/10.6 MB 3.1 MB/s eta 0:00:03\n", " -------------- ------------------------- 3.8/10.6 MB 3.1 MB/s eta 0:00:03\n", " -------------- ------------------------- 4.0/10.6 MB 3.2 MB/s eta 0:00:03\n", " --------------- ------------------------ 4.2/10.6 MB 3.2 MB/s eta 0:00:02\n", " ---------------- ----------------------- 4.4/10.6 MB 3.3 MB/s eta 0:00:02\n", " ----------------- ---------------------- 4.6/10.6 MB 3.3 MB/s eta 0:00:02\n", " ------------------ --------------------- 4.8/10.6 MB 3.3 MB/s eta 0:00:02\n", " ------------------ --------------------- 5.0/10.6 MB 3.3 MB/s eta 0:00:02\n", " ------------------- -------------------- 5.2/10.6 MB 3.4 MB/s eta 0:00:02\n", " -------------------- ------------------- 5.4/10.6 MB 3.4 MB/s eta 0:00:02\n", " -------------------- ------------------- 5.6/10.6 MB 3.4 MB/s eta 0:00:02\n", " --------------------- ------------------ 5.8/10.6 MB 3.4 MB/s eta 0:00:02\n", " ---------------------- ----------------- 5.9/10.6 MB 3.4 MB/s eta 0:00:02\n", " ----------------------- ---------------- 6.1/10.6 MB 3.5 MB/s eta 0:00:02\n", " ----------------------- ---------------- 6.3/10.6 MB 3.5 MB/s eta 0:00:02\n", " ------------------------ --------------- 6.4/10.6 MB 3.4 MB/s eta 0:00:02\n", " ------------------------ --------------- 6.5/10.6 MB 3.4 MB/s eta 0:00:02\n", " ------------------------- -------------- 6.7/10.6 MB 3.4 MB/s eta 0:00:02\n", " -------------------------- ------------- 6.9/10.6 MB 3.5 MB/s eta 0:00:02\n", " -------------------------- ------------- 7.1/10.6 MB 3.5 MB/s eta 0:00:02\n", " --------------------------- ------------ 7.3/10.6 MB 3.5 MB/s eta 0:00:01\n", " --------------------------- ------------ 7.4/10.6 MB 3.5 MB/s eta 0:00:01\n", " --------------------------- ------------ 7.4/10.6 MB 3.5 MB/s eta 0:00:01\n", " --------------------------- ------------ 7.4/10.6 MB 3.5 MB/s eta 0:00:01\n", " --------------------------- ------------ 7.4/10.6 MB 3.5 MB/s eta 0:00:01\n", " ------------------------------ --------- 8.0/10.6 MB 3.4 MB/s eta 0:00:01\n", " ------------------------------ --------- 8.2/10.6 MB 3.4 MB/s eta 0:00:01\n", " ------------------------------- -------- 8.3/10.6 MB 3.5 MB/s eta 0:00:01\n", " -------------------------------- ------- 8.5/10.6 MB 3.5 MB/s eta 0:00:01\n", " -------------------------------- ------- 8.7/10.6 MB 3.5 MB/s eta 0:00:01\n", " --------------------------------- ------ 8.9/10.6 MB 3.5 MB/s eta 0:00:01\n", " ---------------------------------- ----- 9.1/10.6 MB 3.5 MB/s eta 0:00:01\n", " ----------------------------------- ---- 9.3/10.6 MB 3.5 MB/s eta 0:00:01\n", " ----------------------------------- ---- 9.5/10.6 MB 3.5 MB/s eta 0:00:01\n", " ------------------------------------ --- 9.6/10.6 MB 3.5 MB/s eta 0:00:01\n", " ------------------------------------ --- 9.7/10.6 MB 3.5 MB/s eta 0:00:01\n", " ------------------------------------- -- 10.0/10.6 MB 3.5 MB/s eta 0:00:01\n", " -------------------------------------- - 10.1/10.6 MB 3.5 MB/s eta 0:00:01\n", " -------------------------------------- - 10.3/10.6 MB 3.5 MB/s eta 0:00:01\n", " --------------------------------------- 10.5/10.6 MB 3.6 MB/s eta 0:00:01\n", " --------------------------------------- 10.6/10.6 MB 3.6 MB/s eta 0:00:01\n", " ---------------------------------------- 10.6/10.6 MB 3.6 MB/s eta 0:00:00\n", "Downloading joblib-1.3.2-py3-none-any.whl (302 kB)\n", " ---------------------------------------- 0.0/302.2 kB ? eta -:--:--\n", " ----------------------------- ---------- 225.3/302.2 kB 4.6 MB/s eta 0:00:01\n", " ---------------------------------------- 302.2/302.2 kB 4.6 MB/s eta 0:00:00\n", "Downloading scipy-1.12.0-cp311-cp311-win_amd64.whl (46.2 MB)\n", " ---------------------------------------- 0.0/46.2 MB ? eta -:--:--\n", " ---------------------------------------- 0.2/46.2 MB 5.3 MB/s eta 0:00:09\n", " ---------------------------------------- 0.4/46.2 MB 4.1 MB/s eta 0:00:12\n", " ---------------------------------------- 0.6/46.2 MB 4.5 MB/s eta 0:00:11\n", " --------------------------------------- 0.7/46.2 MB 4.2 MB/s eta 0:00:11\n", " --------------------------------------- 0.9/46.2 MB 4.2 MB/s eta 0:00:11\n", " --------------------------------------- 1.1/46.2 MB 4.0 MB/s eta 0:00:12\n", " - -------------------------------------- 1.3/46.2 MB 4.0 MB/s eta 0:00:12\n", " - -------------------------------------- 1.4/46.2 MB 4.0 MB/s eta 0:00:12\n", " - -------------------------------------- 1.5/46.2 MB 4.0 MB/s eta 0:00:12\n", " - -------------------------------------- 1.5/46.2 MB 4.0 MB/s eta 0:00:12\n", " - -------------------------------------- 2.0/46.2 MB 3.9 MB/s eta 0:00:12\n", " - -------------------------------------- 2.1/46.2 MB 3.8 MB/s eta 0:00:12\n", " - -------------------------------------- 2.3/46.2 MB 3.8 MB/s eta 0:00:12\n", " -- ------------------------------------- 2.5/46.2 MB 3.8 MB/s eta 0:00:12\n", " -- ------------------------------------- 2.6/46.2 MB 3.8 MB/s eta 0:00:12\n", " -- ------------------------------------- 2.8/46.2 MB 3.8 MB/s eta 0:00:12\n", " -- ------------------------------------- 3.0/46.2 MB 3.9 MB/s eta 0:00:12\n", " -- ------------------------------------- 3.2/46.2 MB 3.9 MB/s eta 0:00:12\n", " -- ------------------------------------- 3.4/46.2 MB 3.9 MB/s eta 0:00:12\n", " --- ------------------------------------ 3.6/46.2 MB 3.9 MB/s eta 0:00:11\n", " --- ------------------------------------ 3.8/46.2 MB 3.9 MB/s eta 0:00:11\n", " --- ------------------------------------ 4.0/46.2 MB 3.9 MB/s eta 0:00:11\n", " --- ------------------------------------ 4.0/46.2 MB 3.9 MB/s eta 0:00:11\n", " --- ------------------------------------ 4.0/46.2 MB 3.9 MB/s eta 0:00:11\n", " --- ------------------------------------ 4.4/46.2 MB 3.8 MB/s eta 0:00:11\n", " --- ------------------------------------ 4.6/46.2 MB 3.8 MB/s eta 0:00:11\n", " ---- ----------------------------------- 4.8/46.2 MB 3.8 MB/s eta 0:00:11\n", " ---- ----------------------------------- 5.0/46.2 MB 3.8 MB/s eta 0:00:11\n", " ---- ----------------------------------- 5.2/46.2 MB 3.8 MB/s eta 0:00:11\n", " ---- ----------------------------------- 5.3/46.2 MB 3.8 MB/s eta 0:00:11\n", " ---- ----------------------------------- 5.4/46.2 MB 3.8 MB/s eta 0:00:11\n", " ---- ----------------------------------- 5.6/46.2 MB 3.8 MB/s eta 0:00:11\n", " ----- ---------------------------------- 5.8/46.2 MB 3.8 MB/s eta 0:00:11\n", " ----- ---------------------------------- 5.9/46.2 MB 3.7 MB/s eta 0:00:11\n", " ----- ---------------------------------- 6.1/46.2 MB 3.7 MB/s eta 0:00:11\n", " ----- ---------------------------------- 6.3/46.2 MB 3.7 MB/s eta 0:00:11\n", " ----- ---------------------------------- 6.4/46.2 MB 3.7 MB/s eta 0:00:11\n", " ----- ---------------------------------- 6.6/46.2 MB 3.7 MB/s eta 0:00:11\n", " ----- ---------------------------------- 6.8/46.2 MB 3.8 MB/s eta 0:00:11\n", " ----- ---------------------------------- 6.9/46.2 MB 3.7 MB/s eta 0:00:11\n", " ------ --------------------------------- 7.1/46.2 MB 3.7 MB/s eta 0:00:11\n", " ------ --------------------------------- 7.3/46.2 MB 3.7 MB/s eta 0:00:11\n", " ------ --------------------------------- 7.5/46.2 MB 3.7 MB/s eta 0:00:11\n", " ------ --------------------------------- 7.7/46.2 MB 3.7 MB/s eta 0:00:11\n", " ------ --------------------------------- 7.9/46.2 MB 3.7 MB/s eta 0:00:11\n", " ------ --------------------------------- 8.0/46.2 MB 3.7 MB/s eta 0:00:11\n", " ------- -------------------------------- 8.2/46.2 MB 3.7 MB/s eta 0:00:11\n", " ------- -------------------------------- 8.4/46.2 MB 3.7 MB/s eta 0:00:11\n", " ------- -------------------------------- 8.6/46.2 MB 3.7 MB/s eta 0:00:11\n", " ------- -------------------------------- 8.8/46.2 MB 3.8 MB/s eta 0:00:10\n", " ------- -------------------------------- 8.8/46.2 MB 3.7 MB/s eta 0:00:11\n", " ------- -------------------------------- 9.0/46.2 MB 3.7 MB/s eta 0:00:11\n", " ------- -------------------------------- 9.2/46.2 MB 3.7 MB/s eta 0:00:10\n", " -------- ------------------------------- 9.4/46.2 MB 3.7 MB/s eta 0:00:10\n", " -------- ------------------------------- 9.6/46.2 MB 3.7 MB/s eta 0:00:10\n", " -------- ------------------------------- 9.7/46.2 MB 3.7 MB/s eta 0:00:10\n", " -------- ------------------------------- 9.9/46.2 MB 3.7 MB/s eta 0:00:10\n", " -------- ------------------------------- 10.1/46.2 MB 3.7 MB/s eta 0:00:10\n", " -------- ------------------------------- 10.3/46.2 MB 3.7 MB/s eta 0:00:10\n", " --------- ------------------------------ 10.4/46.2 MB 3.7 MB/s eta 0:00:10\n", " --------- ------------------------------ 10.6/46.2 MB 3.7 MB/s eta 0:00:10\n", " --------- ------------------------------ 10.8/46.2 MB 3.7 MB/s eta 0:00:10\n", " --------- ------------------------------ 11.0/46.2 MB 3.7 MB/s eta 0:00:10\n", " --------- ------------------------------ 11.2/46.2 MB 3.7 MB/s eta 0:00:10\n", " --------- ------------------------------ 11.4/46.2 MB 3.7 MB/s eta 0:00:10\n", " ---------- ----------------------------- 11.6/46.2 MB 3.7 MB/s eta 0:00:10\n", " ---------- ----------------------------- 11.8/46.2 MB 3.9 MB/s eta 0:00:09\n", " ---------- ----------------------------- 12.0/46.2 MB 3.9 MB/s eta 0:00:09\n", " ---------- ----------------------------- 12.1/46.2 MB 3.8 MB/s eta 0:00:10\n", " ---------- ----------------------------- 12.3/46.2 MB 3.7 MB/s eta 0:00:10\n", " ---------- ----------------------------- 12.5/46.2 MB 3.8 MB/s eta 0:00:09\n", " ---------- ----------------------------- 12.6/46.2 MB 3.7 MB/s eta 0:00:09\n", " ----------- ---------------------------- 12.8/46.2 MB 3.7 MB/s eta 0:00:09\n", " ----------- ---------------------------- 12.9/46.2 MB 3.7 MB/s eta 0:00:09\n", " ----------- ---------------------------- 13.0/46.2 MB 3.7 MB/s eta 0:00:09\n", " ----------- ---------------------------- 13.2/46.2 MB 3.7 MB/s eta 0:00:09\n", " ----------- ---------------------------- 13.4/46.2 MB 3.7 MB/s eta 0:00:09\n", " ----------- ---------------------------- 13.6/46.2 MB 3.7 MB/s eta 0:00:09\n", " ----------- ---------------------------- 13.7/46.2 MB 3.7 MB/s eta 0:00:09\n", " ----------- ---------------------------- 13.8/46.2 MB 3.6 MB/s eta 0:00:09\n", " ------------ --------------------------- 13.9/46.2 MB 3.6 MB/s eta 0:00:09\n", " ------------ --------------------------- 14.1/46.2 MB 3.6 MB/s eta 0:00:09\n", " ------------ --------------------------- 14.1/46.2 MB 3.6 MB/s eta 0:00:09\n", " ------------ --------------------------- 14.3/46.2 MB 3.7 MB/s eta 0:00:09\n", " ------------ --------------------------- 14.4/46.2 MB 3.6 MB/s eta 0:00:09\n", " ------------ --------------------------- 14.5/46.2 MB 3.6 MB/s eta 0:00:09\n", " ------------ --------------------------- 14.6/46.2 MB 3.5 MB/s eta 0:00:09\n", " ------------ --------------------------- 14.7/46.2 MB 3.5 MB/s eta 0:00:09\n", " ------------ --------------------------- 14.8/46.2 MB 3.5 MB/s eta 0:00:09\n", " ------------ --------------------------- 14.9/46.2 MB 3.4 MB/s eta 0:00:10\n", " ------------- -------------------------- 15.1/46.2 MB 3.5 MB/s eta 0:00:09\n", " ------------- -------------------------- 15.2/46.2 MB 3.4 MB/s eta 0:00:10\n", " ------------- -------------------------- 15.4/46.2 MB 3.4 MB/s eta 0:00:10\n", " ------------- -------------------------- 15.5/46.2 MB 3.4 MB/s eta 0:00:09\n", " ------------- -------------------------- 15.7/46.2 MB 3.4 MB/s eta 0:00:09\n", " ------------- -------------------------- 15.8/46.2 MB 3.4 MB/s eta 0:00:09\n", " ------------- -------------------------- 16.0/46.2 MB 3.4 MB/s eta 0:00:09\n", " ------------- -------------------------- 16.1/46.2 MB 3.4 MB/s eta 0:00:09\n", " -------------- ------------------------- 16.3/46.2 MB 3.4 MB/s eta 0:00:09\n", " -------------- ------------------------- 16.5/46.2 MB 3.4 MB/s eta 0:00:09\n", " -------------- ------------------------- 16.6/46.2 MB 3.4 MB/s eta 0:00:09\n", " -------------- ------------------------- 16.7/46.2 MB 3.4 MB/s eta 0:00:09\n", " -------------- ------------------------- 16.9/46.2 MB 3.4 MB/s eta 0:00:09\n", " -------------- ------------------------- 17.1/46.2 MB 3.4 MB/s eta 0:00:09\n", " -------------- ------------------------- 17.2/46.2 MB 3.4 MB/s eta 0:00:09\n", " --------------- ------------------------ 17.4/46.2 MB 3.4 MB/s eta 0:00:09\n", " --------------- ------------------------ 17.6/46.2 MB 3.4 MB/s eta 0:00:09\n", " --------------- ------------------------ 17.8/46.2 MB 3.4 MB/s eta 0:00:09\n", " --------------- ------------------------ 18.0/46.2 MB 3.4 MB/s eta 0:00:09\n", " --------------- ------------------------ 18.2/46.2 MB 3.4 MB/s eta 0:00:09\n", " --------------- ------------------------ 18.5/46.2 MB 3.4 MB/s eta 0:00:09\n", " ---------------- ----------------------- 18.6/46.2 MB 3.4 MB/s eta 0:00:08\n", " ---------------- ----------------------- 18.8/46.2 MB 3.4 MB/s eta 0:00:08\n", " ---------------- ----------------------- 19.0/46.2 MB 3.4 MB/s eta 0:00:08\n", " ---------------- ----------------------- 19.2/46.2 MB 3.5 MB/s eta 0:00:08\n", " ---------------- ----------------------- 19.4/46.2 MB 3.5 MB/s eta 0:00:08\n", " ---------------- ----------------------- 19.6/46.2 MB 3.5 MB/s eta 0:00:08\n", " ----------------- ---------------------- 19.8/46.2 MB 3.5 MB/s eta 0:00:08\n", " ----------------- ---------------------- 20.0/46.2 MB 3.5 MB/s eta 0:00:08\n", " ----------------- ---------------------- 20.2/46.2 MB 3.5 MB/s eta 0:00:08\n", " ----------------- ---------------------- 20.3/46.2 MB 3.5 MB/s eta 0:00:08\n", " ----------------- ---------------------- 20.5/46.2 MB 3.5 MB/s eta 0:00:08\n", " ----------------- ---------------------- 20.7/46.2 MB 3.4 MB/s eta 0:00:08\n", " ------------------ --------------------- 20.8/46.2 MB 3.4 MB/s eta 0:00:08\n", " ------------------ --------------------- 20.9/46.2 MB 3.4 MB/s eta 0:00:08\n", " ------------------ --------------------- 21.1/46.2 MB 3.4 MB/s eta 0:00:08\n", " ------------------ --------------------- 21.2/46.2 MB 3.4 MB/s eta 0:00:08\n", " ------------------ --------------------- 21.3/46.2 MB 3.4 MB/s eta 0:00:08\n", " ------------------ --------------------- 21.5/46.2 MB 3.4 MB/s eta 0:00:08\n", " ------------------ --------------------- 21.6/46.2 MB 3.4 MB/s eta 0:00:08\n", " ------------------ --------------------- 21.9/46.2 MB 3.4 MB/s eta 0:00:08\n", " ------------------ --------------------- 21.9/46.2 MB 3.3 MB/s eta 0:00:08\n", " ------------------- -------------------- 22.1/46.2 MB 3.3 MB/s eta 0:00:08\n", " ------------------- -------------------- 22.3/46.2 MB 3.4 MB/s eta 0:00:08\n", " ------------------- -------------------- 22.3/46.2 MB 3.4 MB/s eta 0:00:08\n", " ------------------- -------------------- 22.6/46.2 MB 3.3 MB/s eta 0:00:08\n", " ------------------- -------------------- 22.6/46.2 MB 3.3 MB/s eta 0:00:08\n", " ------------------- -------------------- 22.6/46.2 MB 3.3 MB/s eta 0:00:08\n", " ------------------- -------------------- 23.0/46.2 MB 3.3 MB/s eta 0:00:08\n", " -------------------- ------------------- 23.1/46.2 MB 3.3 MB/s eta 0:00:08\n", " -------------------- ------------------- 23.2/46.2 MB 3.3 MB/s eta 0:00:07\n", " -------------------- ------------------- 23.3/46.2 MB 3.3 MB/s eta 0:00:07\n", " -------------------- ------------------- 23.4/46.2 MB 3.2 MB/s eta 0:00:08\n", " -------------------- ------------------- 23.6/46.2 MB 3.2 MB/s eta 0:00:07\n", " -------------------- ------------------- 23.7/46.2 MB 3.2 MB/s eta 0:00:07\n", " -------------------- ------------------- 23.9/46.2 MB 3.2 MB/s eta 0:00:07\n", " -------------------- ------------------- 24.0/46.2 MB 3.2 MB/s eta 0:00:07\n", " -------------------- ------------------- 24.1/46.2 MB 3.2 MB/s eta 0:00:07\n", " -------------------- ------------------- 24.2/46.2 MB 3.2 MB/s eta 0:00:07\n", " --------------------- ------------------ 24.3/46.2 MB 3.2 MB/s eta 0:00:07\n", " --------------------- ------------------ 24.4/46.2 MB 3.2 MB/s eta 0:00:07\n", " --------------------- ------------------ 24.5/46.2 MB 3.2 MB/s eta 0:00:07\n", " --------------------- ------------------ 24.7/46.2 MB 3.2 MB/s eta 0:00:07\n", " --------------------- ------------------ 24.8/46.2 MB 3.2 MB/s eta 0:00:07\n", " --------------------- ------------------ 24.9/46.2 MB 3.2 MB/s eta 0:00:07\n", " --------------------- ------------------ 25.0/46.2 MB 3.2 MB/s eta 0:00:07\n", " --------------------- ------------------ 25.1/46.2 MB 3.3 MB/s eta 0:00:07\n", " --------------------- ------------------ 25.3/46.2 MB 3.2 MB/s eta 0:00:07\n", " --------------------- ------------------ 25.4/46.2 MB 3.2 MB/s eta 0:00:07\n", " ---------------------- ----------------- 25.5/46.2 MB 3.2 MB/s eta 0:00:07\n", " ---------------------- ----------------- 25.7/46.2 MB 3.2 MB/s eta 0:00:07\n", " ---------------------- ----------------- 25.8/46.2 MB 3.2 MB/s eta 0:00:07\n", " ---------------------- ----------------- 25.9/46.2 MB 3.2 MB/s eta 0:00:07\n", " ---------------------- ----------------- 26.1/46.2 MB 3.2 MB/s eta 0:00:07\n", " ---------------------- ----------------- 26.2/46.2 MB 3.2 MB/s eta 0:00:07\n", " ---------------------- ----------------- 26.3/46.2 MB 3.2 MB/s eta 0:00:07\n", " ---------------------- ----------------- 26.4/46.2 MB 3.2 MB/s eta 0:00:07\n", " ---------------------- ----------------- 26.5/46.2 MB 3.2 MB/s eta 0:00:07\n", " ----------------------- ---------------- 26.6/46.2 MB 3.1 MB/s eta 0:00:07\n", " ----------------------- ---------------- 26.6/46.2 MB 3.1 MB/s eta 0:00:07\n", " ----------------------- ---------------- 26.7/46.2 MB 3.1 MB/s eta 0:00:07\n", " ----------------------- ---------------- 26.8/46.2 MB 3.1 MB/s eta 0:00:07\n", " ----------------------- ---------------- 27.0/46.2 MB 3.1 MB/s eta 0:00:07\n", " ----------------------- ---------------- 27.1/46.2 MB 3.1 MB/s eta 0:00:07\n", " ----------------------- ---------------- 27.2/46.2 MB 3.0 MB/s eta 0:00:07\n", " ----------------------- ---------------- 27.3/46.2 MB 3.0 MB/s eta 0:00:07\n", " ----------------------- ---------------- 27.4/46.2 MB 3.0 MB/s eta 0:00:07\n", " ----------------------- ---------------- 27.5/46.2 MB 3.0 MB/s eta 0:00:07\n", " ----------------------- ---------------- 27.6/46.2 MB 3.0 MB/s eta 0:00:07\n", " ----------------------- ---------------- 27.6/46.2 MB 3.0 MB/s eta 0:00:07\n", " ------------------------ --------------- 27.9/46.2 MB 3.0 MB/s eta 0:00:07\n", " ------------------------ --------------- 28.0/46.2 MB 2.9 MB/s eta 0:00:07\n", " ------------------------ --------------- 28.1/46.2 MB 2.9 MB/s eta 0:00:07\n", " ------------------------ --------------- 28.2/46.2 MB 2.9 MB/s eta 0:00:07\n", " ------------------------ --------------- 28.3/46.2 MB 2.9 MB/s eta 0:00:07\n", " ------------------------ --------------- 28.4/46.2 MB 2.9 MB/s eta 0:00:07\n", " ------------------------ --------------- 28.6/46.2 MB 2.9 MB/s eta 0:00:07\n", " ------------------------ --------------- 28.7/46.2 MB 2.8 MB/s eta 0:00:07\n", " ------------------------ --------------- 28.8/46.2 MB 2.8 MB/s eta 0:00:07\n", " ------------------------- -------------- 28.9/46.2 MB 2.8 MB/s eta 0:00:07\n", " ------------------------- -------------- 29.0/46.2 MB 2.8 MB/s eta 0:00:07\n", " ------------------------- -------------- 29.2/46.2 MB 2.8 MB/s eta 0:00:07\n", " ------------------------- -------------- 29.3/46.2 MB 2.8 MB/s eta 0:00:07\n", " ------------------------- -------------- 29.4/46.2 MB 2.8 MB/s eta 0:00:07\n", " ------------------------- -------------- 29.4/46.2 MB 2.8 MB/s eta 0:00:07\n", " ------------------------- -------------- 29.6/46.2 MB 2.7 MB/s eta 0:00:07\n", " ------------------------- -------------- 29.7/46.2 MB 2.7 MB/s eta 0:00:07\n", " ------------------------- -------------- 29.8/46.2 MB 2.7 MB/s eta 0:00:07\n", " ------------------------- -------------- 29.8/46.2 MB 2.7 MB/s eta 0:00:07\n", " ------------------------- -------------- 29.9/46.2 MB 2.7 MB/s eta 0:00:07\n", " -------------------------- ------------- 30.0/46.2 MB 2.7 MB/s eta 0:00:07\n", " -------------------------- ------------- 30.1/46.2 MB 2.6 MB/s eta 0:00:07\n", " -------------------------- ------------- 30.2/46.2 MB 2.6 MB/s eta 0:00:07\n", " -------------------------- ------------- 30.3/46.2 MB 2.6 MB/s eta 0:00:07\n", " -------------------------- ------------- 30.4/46.2 MB 2.6 MB/s eta 0:00:07\n", " -------------------------- ------------- 30.5/46.2 MB 2.6 MB/s eta 0:00:07\n", " -------------------------- ------------- 30.6/46.2 MB 2.5 MB/s eta 0:00:07\n", " -------------------------- ------------- 30.6/46.2 MB 2.5 MB/s eta 0:00:07\n", " -------------------------- ------------- 30.8/46.2 MB 2.5 MB/s eta 0:00:07\n", " -------------------------- ------------- 30.9/46.2 MB 2.5 MB/s eta 0:00:07\n", " -------------------------- ------------- 30.9/46.2 MB 2.5 MB/s eta 0:00:07\n", " -------------------------- ------------- 31.0/46.2 MB 2.5 MB/s eta 0:00:07\n", " -------------------------- ------------- 31.2/46.2 MB 2.5 MB/s eta 0:00:07\n", " --------------------------- ------------ 31.2/46.2 MB 2.5 MB/s eta 0:00:06\n", " --------------------------- ------------ 31.3/46.2 MB 2.5 MB/s eta 0:00:07\n", " --------------------------- ------------ 31.4/46.2 MB 2.5 MB/s eta 0:00:07\n", " --------------------------- ------------ 31.5/46.2 MB 2.5 MB/s eta 0:00:06\n", " --------------------------- ------------ 31.5/46.2 MB 2.4 MB/s eta 0:00:06\n", " --------------------------- ------------ 31.6/46.2 MB 2.4 MB/s eta 0:00:06\n", " --------------------------- ------------ 31.7/46.2 MB 2.4 MB/s eta 0:00:06\n", " --------------------------- ------------ 31.8/46.2 MB 2.4 MB/s eta 0:00:06\n", " --------------------------- ------------ 31.9/46.2 MB 2.4 MB/s eta 0:00:06\n", " --------------------------- ------------ 32.1/46.2 MB 2.4 MB/s eta 0:00:06\n", " --------------------------- ------------ 32.2/46.2 MB 2.4 MB/s eta 0:00:06\n", " --------------------------- ------------ 32.3/46.2 MB 2.4 MB/s eta 0:00:06\n", " ---------------------------- ----------- 32.4/46.2 MB 2.4 MB/s eta 0:00:06\n", " ---------------------------- ----------- 32.5/46.2 MB 2.4 MB/s eta 0:00:06\n", " ---------------------------- ----------- 32.6/46.2 MB 2.4 MB/s eta 0:00:06\n", " ---------------------------- ----------- 32.7/46.2 MB 2.4 MB/s eta 0:00:06\n", " ---------------------------- ----------- 32.8/46.2 MB 2.3 MB/s eta 0:00:06\n", " ---------------------------- ----------- 32.9/46.2 MB 2.4 MB/s eta 0:00:06\n", " ---------------------------- ----------- 33.0/46.2 MB 2.3 MB/s eta 0:00:06\n", " ---------------------------- ----------- 33.0/46.2 MB 2.3 MB/s eta 0:00:06\n", " ---------------------------- ----------- 33.1/46.2 MB 2.3 MB/s eta 0:00:06\n", " ---------------------------- ----------- 33.2/46.2 MB 2.3 MB/s eta 0:00:06\n", " ---------------------------- ----------- 33.2/46.2 MB 2.3 MB/s eta 0:00:06\n", " ---------------------------- ----------- 33.2/46.2 MB 2.3 MB/s eta 0:00:06\n", " ---------------------------- ----------- 33.2/46.2 MB 2.3 MB/s eta 0:00:06\n", " ---------------------------- ----------- 33.2/46.2 MB 2.3 MB/s eta 0:00:06\n", " ---------------------------- ----------- 33.2/46.2 MB 2.3 MB/s eta 0:00:06\n", " ---------------------------- ----------- 33.2/46.2 MB 2.3 MB/s eta 0:00:06\n", " ---------------------------- ----------- 33.2/46.2 MB 2.3 MB/s eta 0:00:06\n", " ---------------------------- ----------- 33.3/46.2 MB 2.1 MB/s eta 0:00:07\n", " ---------------------------- ----------- 33.4/46.2 MB 2.1 MB/s eta 0:00:07\n", " ---------------------------- ----------- 33.4/46.2 MB 2.1 MB/s eta 0:00:07\n", " ---------------------------- ----------- 33.5/46.2 MB 2.1 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.5/46.2 MB 2.1 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.5/46.2 MB 2.1 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.5/46.2 MB 2.1 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.5/46.2 MB 2.1 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.5/46.2 MB 2.1 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.5/46.2 MB 2.1 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.5/46.2 MB 2.1 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.5/46.2 MB 2.1 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.6/46.2 MB 1.9 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.6/46.2 MB 1.9 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.6/46.2 MB 1.9 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.6/46.2 MB 1.9 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.6/46.2 MB 1.9 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.6/46.2 MB 1.9 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.6/46.2 MB 1.9 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.6/46.2 MB 1.9 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.6/46.2 MB 1.9 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.6/46.2 MB 1.9 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.6/46.2 MB 1.9 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.7/46.2 MB 1.8 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.7/46.2 MB 1.8 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.7/46.2 MB 1.8 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.7/46.2 MB 1.8 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.7/46.2 MB 1.8 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.7/46.2 MB 1.8 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.7/46.2 MB 1.8 MB/s eta 0:00:07\n", " ----------------------------- ---------- 33.7/46.2 MB 1.7 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.7/46.2 MB 1.7 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.7/46.2 MB 1.7 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.8/46.2 MB 1.7 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.8/46.2 MB 1.6 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.8/46.2 MB 1.6 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.8/46.2 MB 1.6 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.8/46.2 MB 1.6 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.8/46.2 MB 1.6 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.8/46.2 MB 1.6 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.8/46.2 MB 1.6 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.8/46.2 MB 1.6 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.8/46.2 MB 1.6 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.8/46.2 MB 1.6 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.8/46.2 MB 1.5 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.8/46.2 MB 1.5 MB/s eta 0:00:08\n", " ----------------------------- ---------- 33.9/46.2 MB 1.5 MB/s eta 0:00:09\n", " ----------------------------- ---------- 33.9/46.2 MB 1.5 MB/s eta 0:00:09\n", " ----------------------------- ---------- 33.9/46.2 MB 1.5 MB/s eta 0:00:09\n", " ----------------------------- ---------- 33.9/46.2 MB 1.5 MB/s eta 0:00:09\n", " ----------------------------- ---------- 33.9/46.2 MB 1.5 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.5 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.5 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.5 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.5 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.5 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.5 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.5 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.5 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.5 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.4 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.4 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.4 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.4 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.4 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.4 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.4 MB/s eta 0:00:09\n", " ----------------------------- ---------- 34.0/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.1/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.1/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.1/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.1/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.1/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.3 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.2 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.2 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.2 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.2 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.2 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.2/46.2 MB 1.2 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.3/46.2 MB 1.2 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.3/46.2 MB 1.2 MB/s eta 0:00:10\n", " ----------------------------- ---------- 34.3/46.2 MB 1.2 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.3/46.2 MB 1.2 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.3/46.2 MB 1.2 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.3/46.2 MB 1.2 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.3/46.2 MB 1.2 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.3/46.2 MB 1.2 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.3/46.2 MB 1.2 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.3/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.3/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:11\n", " ----------------------------- ---------- 34.4/46.2 MB 1.1 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.4/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.4/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.5/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.5/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.5/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.5/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.5/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.6/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.6/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.6/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.6/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.6/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.6/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.6/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.6/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.6/46.2 MB 1.0 MB/s eta 0:00:12\n", " ----------------------------- ---------- 34.6/46.2 MB 1.0 MB/s eta 0:00:12\n", " ------------------------------ --------- 34.6/46.2 MB 975.7 kB/s eta 0:00:12\n", " ------------------------------ --------- 34.7/46.2 MB 972.8 kB/s eta 0:00:12\n", " ------------------------------ --------- 34.7/46.2 MB 972.8 kB/s eta 0:00:12\n", " ------------------------------ --------- 34.7/46.2 MB 972.8 kB/s eta 0:00:12\n", " ------------------------------ --------- 34.7/46.2 MB 972.8 kB/s eta 0:00:12\n", " ------------------------------ --------- 34.7/46.2 MB 957.1 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.7/46.2 MB 957.1 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.7/46.2 MB 947.5 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.7/46.2 MB 947.5 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.7/46.2 MB 940.7 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.7/46.2 MB 938.0 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.7/46.2 MB 934.0 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.8/46.2 MB 927.4 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.8/46.2 MB 926.0 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.8/46.2 MB 923.3 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.8/46.2 MB 919.5 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 917.0 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 917.0 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 917.0 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 917.0 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 917.0 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 917.0 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 917.0 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 917.0 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 885.9 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 885.9 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 885.9 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 878.8 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 878.8 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 878.8 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 866.0 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 866.0 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 866.0 kB/s eta 0:00:13\n", " ------------------------------ --------- 34.9/46.2 MB 859.1 kB/s eta 0:00:14\n", " ------------------------------ --------- 34.9/46.2 MB 853.5 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.0/46.2 MB 851.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.0/46.2 MB 850.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.0/46.2 MB 845.9 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.0/46.2 MB 843.7 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 840.4 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 838.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 838.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 838.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 838.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 838.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 838.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 838.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 838.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 838.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 809.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 809.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 809.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 809.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 809.3 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 794.5 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 794.5 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 794.5 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 788.8 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.1/46.2 MB 788.8 kB/s eta 0:00:14\n", " ------------------------------ --------- 35.2/46.2 MB 784.1 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 780.4 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 780.4 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 774.8 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 774.8 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 774.8 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 774.8 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 774.8 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 774.8 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 774.8 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 774.8 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 774.8 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 754.2 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 754.2 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 754.2 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 745.7 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 745.7 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 745.7 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 745.7 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.2/46.2 MB 745.7 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.3/46.2 MB 733.2 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.3/46.2 MB 733.2 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.3/46.2 MB 728.3 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.3/46.2 MB 728.3 kB/s eta 0:00:15\n", " ------------------------------ --------- 35.3/46.2 MB 725.1 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.3/46.2 MB 721.1 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.3/46.2 MB 718.7 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.3/46.2 MB 717.1 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.4/46.2 MB 714.8 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.4/46.2 MB 714.0 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.4/46.2 MB 712.4 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.4/46.2 MB 710.1 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.4/46.2 MB 708.6 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.5/46.2 MB 705.5 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.5/46.2 MB 703.9 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.5/46.2 MB 701.0 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.5/46.2 MB 700.2 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.5/46.2 MB 699.5 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.5/46.2 MB 699.5 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.6/46.2 MB 695.8 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.6/46.2 MB 694.3 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.6/46.2 MB 692.8 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.6/46.2 MB 689.9 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.6/46.2 MB 688.5 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 687.0 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 687.0 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 687.0 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 687.0 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 687.0 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 687.0 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 687.0 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 687.0 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 670.1 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 670.1 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 666.0 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 666.0 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 661.3 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 661.3 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.7/46.2 MB 658.7 kB/s eta 0:00:16\n", " ------------------------------ --------- 35.8/46.2 MB 657.3 kB/s eta 0:00:16\n", " ------------------------------- -------- 35.8/46.2 MB 654.7 kB/s eta 0:00:16\n", " ------------------------------- -------- 35.8/46.2 MB 653.4 kB/s eta 0:00:16\n", " ------------------------------- -------- 35.9/46.2 MB 651.5 kB/s eta 0:00:16\n", " ------------------------------- -------- 35.9/46.2 MB 650.2 kB/s eta 0:00:16\n", " ------------------------------- -------- 35.9/46.2 MB 647.6 kB/s eta 0:00:16\n", " ------------------------------- -------- 35.9/46.2 MB 647.6 kB/s eta 0:00:16\n", " ------------------------------- -------- 35.9/46.2 MB 646.3 kB/s eta 0:00:16\n", " ------------------------------- -------- 35.9/46.2 MB 646.3 kB/s eta 0:00:16\n", " ------------------------------- -------- 35.9/46.2 MB 646.3 kB/s eta 0:00:16\n", " ------------------------------- -------- 35.9/46.2 MB 646.3 kB/s eta 0:00:16\n", " ------------------------------- -------- 35.9/46.2 MB 646.3 kB/s eta 0:00:16\n", " ------------------------------- -------- 35.9/46.2 MB 646.3 kB/s eta 0:00:16\n", " ------------------------------- -------- 35.9/46.2 MB 646.3 kB/s eta 0:00:16\n", " ------------------------------- -------- 35.9/46.2 MB 632.0 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.0/46.2 MB 630.7 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.0/46.2 MB 630.7 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.0/46.2 MB 630.7 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.0/46.2 MB 630.7 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.0/46.2 MB 624.7 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.0/46.2 MB 624.7 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.0/46.2 MB 624.7 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.0/46.2 MB 619.4 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.0/46.2 MB 619.4 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.0/46.2 MB 615.9 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.0/46.2 MB 614.2 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.0/46.2 MB 611.9 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.1/46.2 MB 610.7 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.1/46.2 MB 610.7 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.1/46.2 MB 607.9 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.1/46.2 MB 606.2 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.1/46.2 MB 605.6 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.1/46.2 MB 603.4 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.1/46.2 MB 602.8 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.2/46.2 MB 601.8 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.2/46.2 MB 599.5 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.2/46.2 MB 597.4 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.2/46.2 MB 597.4 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.2/46.2 MB 595.2 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.2/46.2 MB 593.6 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.3/46.2 MB 592.5 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.3/46.2 MB 592.5 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.3/46.2 MB 592.5 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.3/46.2 MB 592.5 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.3/46.2 MB 592.5 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.3/46.2 MB 592.5 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.3/46.2 MB 592.5 kB/s eta 0:00:17\n", " ------------------------------- -------- 36.3/46.2 MB 580.9 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.3/46.2 MB 580.9 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.3/46.2 MB 578.9 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.3/46.2 MB 578.9 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.3/46.2 MB 578.9 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.3/46.2 MB 578.9 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.3/46.2 MB 573.3 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.3/46.2 MB 573.3 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.3/46.2 MB 569.8 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.3/46.2 MB 569.8 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 567.8 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 566.4 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 566.4 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 563.4 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 562.9 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 561.5 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 560.1 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 560.1 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 560.1 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 560.1 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 560.1 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 560.1 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 560.1 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 549.7 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.4/46.2 MB 549.7 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 546.9 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 546.9 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 546.9 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 546.9 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 542.0 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 542.0 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 542.0 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 538.4 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 536.6 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 536.6 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 536.6 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 536.6 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 536.6 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 536.6 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 536.6 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 536.6 kB/s eta 0:00:18\n", " ------------------------------- -------- 36.5/46.2 MB 527.6 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.5/46.2 MB 527.6 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.5/46.2 MB 527.6 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.6/46.2 MB 524.2 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.6/46.2 MB 524.2 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.6/46.2 MB 521.3 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.6/46.2 MB 521.3 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.6/46.2 MB 519.2 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.6/46.2 MB 518.0 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.6/46.2 MB 518.0 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.6/46.2 MB 516.8 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.6/46.2 MB 515.5 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.7/46.2 MB 513.9 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.7/46.2 MB 513.9 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.7/46.2 MB 512.3 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.7/46.2 MB 511.1 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.7/46.2 MB 510.3 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 509.5 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 509.5 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 509.5 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 509.5 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 509.5 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 509.5 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 509.5 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 501.7 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 501.7 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 501.7 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 498.6 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 498.6 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 496.0 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 496.0 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.8/46.2 MB 494.1 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.9/46.2 MB 493.4 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.9/46.2 MB 493.4 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.9/46.2 MB 491.9 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.9/46.2 MB 491.2 kB/s eta 0:00:19\n", " ------------------------------- -------- 36.9/46.2 MB 490.4 kB/s eta 0:00:19\n", " -------------------------------- ------- 36.9/46.2 MB 488.6 kB/s eta 0:00:19\n", " -------------------------------- ------- 36.9/46.2 MB 488.2 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.0/46.2 MB 486.8 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.0/46.2 MB 486.4 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.0/46.2 MB 485.3 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.0/46.2 MB 485.0 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.0/46.2 MB 485.0 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.0/46.2 MB 485.0 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.0/46.2 MB 485.0 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.0/46.2 MB 485.0 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.0/46.2 MB 485.0 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.0/46.2 MB 477.9 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.0/46.2 MB 476.8 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.0/46.2 MB 476.8 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.0/46.2 MB 476.8 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.1/46.2 MB 474.8 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.1/46.2 MB 474.8 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.1/46.2 MB 474.8 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.1/46.2 MB 472.4 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.1/46.2 MB 470.7 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.1/46.2 MB 470.0 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.1/46.2 MB 469.3 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.2/46.2 MB 468.0 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.2/46.2 MB 467.3 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.2/46.2 MB 466.6 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.2/46.2 MB 465.3 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.2/46.2 MB 464.3 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.2/46.2 MB 464.0 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.2/46.2 MB 463.3 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.3/46.2 MB 462.4 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.3/46.2 MB 461.4 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.3/46.2 MB 460.7 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.3/46.2 MB 459.8 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.3/46.2 MB 459.1 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.4/46.2 MB 457.9 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.4/46.2 MB 456.9 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.4/46.2 MB 456.5 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.4/46.2 MB 455.9 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.4/46.2 MB 455.3 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.5/46.2 MB 454.0 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.5/46.2 MB 453.4 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.5/46.2 MB 452.4 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.6/46.2 MB 451.8 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.6/46.2 MB 451.2 kB/s eta 0:00:20\n", " -------------------------------- ------- 37.6/46.2 MB 450.9 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.6/46.2 MB 450.0 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.7/46.2 MB 449.3 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.7/46.2 MB 448.7 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.7/46.2 MB 447.8 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.8/46.2 MB 447.5 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.8/46.2 MB 446.9 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.9/46.2 MB 446.0 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.9/46.2 MB 446.9 kB/s eta 0:00:19\n", " -------------------------------- ------- 37.9/46.2 MB 445.7 kB/s eta 0:00:19\n", " -------------------------------- ------- 38.0/46.2 MB 444.8 kB/s eta 0:00:19\n", " -------------------------------- ------- 38.0/46.2 MB 444.2 kB/s eta 0:00:19\n", " -------------------------------- ------- 38.1/46.2 MB 443.0 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.1/46.2 MB 442.7 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.1/46.2 MB 442.7 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.1/46.2 MB 442.7 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.1/46.2 MB 442.7 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.1/46.2 MB 442.7 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.1/46.2 MB 442.7 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.1/46.2 MB 437.1 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.1/46.2 MB 436.5 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.1/46.2 MB 436.5 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.2/46.2 MB 435.0 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.2/46.2 MB 434.2 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.2/46.2 MB 434.2 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.2/46.2 MB 432.7 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.2/46.2 MB 432.1 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.3/46.2 MB 431.3 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.3/46.2 MB 431.0 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.3/46.2 MB 430.4 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.4/46.2 MB 429.9 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.4/46.2 MB 429.0 kB/s eta 0:00:19\n", " --------------------------------- ------ 38.5/46.2 MB 428.8 kB/s eta 0:00:18\n", " --------------------------------- ------ 38.5/46.2 MB 428.5 kB/s eta 0:00:18\n", " --------------------------------- ------ 38.5/46.2 MB 427.6 kB/s eta 0:00:18\n", " --------------------------------- ------ 38.6/46.2 MB 427.1 kB/s eta 0:00:18\n", " --------------------------------- ------ 38.6/46.2 MB 426.8 kB/s eta 0:00:18\n", " --------------------------------- ------ 38.6/46.2 MB 426.0 kB/s eta 0:00:18\n", " --------------------------------- ------ 38.7/46.2 MB 425.7 kB/s eta 0:00:18\n", " --------------------------------- ------ 38.7/46.2 MB 425.1 kB/s eta 0:00:18\n", " --------------------------------- ------ 38.7/46.2 MB 425.1 kB/s eta 0:00:18\n", " --------------------------------- ------ 38.8/46.2 MB 423.8 kB/s eta 0:00:18\n", " --------------------------------- ------ 38.8/46.2 MB 423.2 kB/s eta 0:00:18\n", " --------------------------------- ------ 38.9/46.2 MB 422.9 kB/s eta 0:00:18\n", " --------------------------------- ------ 38.9/46.2 MB 422.4 kB/s eta 0:00:18\n", " --------------------------------- ------ 38.9/46.2 MB 421.8 kB/s eta 0:00:18\n", " --------------------------------- ------ 38.9/46.2 MB 421.3 kB/s eta 0:00:18\n", " --------------------------------- ------ 39.0/46.2 MB 420.2 kB/s eta 0:00:18\n", " --------------------------------- ------ 39.0/46.2 MB 419.7 kB/s eta 0:00:18\n", " --------------------------------- ------ 39.0/46.2 MB 419.4 kB/s eta 0:00:17\n", " --------------------------------- ------ 39.1/46.2 MB 418.6 kB/s eta 0:00:17\n", " --------------------------------- ------ 39.1/46.2 MB 418.3 kB/s eta 0:00:17\n", " --------------------------------- ------ 39.1/46.2 MB 417.8 kB/s eta 0:00:17\n", " --------------------------------- ------ 39.2/46.2 MB 417.0 kB/s eta 0:00:17\n", " --------------------------------- ------ 39.2/46.2 MB 417.0 kB/s eta 0:00:17\n", " --------------------------------- ------ 39.2/46.2 MB 417.0 kB/s eta 0:00:17\n", " --------------------------------- ------ 39.2/46.2 MB 417.0 kB/s eta 0:00:17\n", " --------------------------------- ------ 39.2/46.2 MB 417.0 kB/s eta 0:00:17\n", " --------------------------------- ------ 39.2/46.2 MB 417.0 kB/s eta 0:00:17\n", " --------------------------------- ------ 39.2/46.2 MB 417.0 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.2/46.2 MB 412.0 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.3/46.2 MB 411.0 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.3/46.2 MB 411.0 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.3/46.2 MB 409.7 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.3/46.2 MB 408.9 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.3/46.2 MB 408.4 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.3/46.2 MB 407.9 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.3/46.2 MB 407.4 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.4/46.2 MB 406.9 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.4/46.2 MB 406.2 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.4/46.2 MB 405.4 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.5/46.2 MB 404.9 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.5/46.2 MB 404.4 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.5/46.2 MB 403.4 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.5/46.2 MB 402.9 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.6/46.2 MB 402.6 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.6/46.2 MB 402.2 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.6/46.2 MB 401.4 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.6/46.2 MB 400.7 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.7/46.2 MB 401.2 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.7/46.2 MB 400.7 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.8/46.2 MB 399.9 kB/s eta 0:00:17\n", " ---------------------------------- ----- 39.8/46.2 MB 399.2 kB/s eta 0:00:16\n", " ---------------------------------- ----- 39.8/46.2 MB 398.5 kB/s eta 0:00:16\n", " ---------------------------------- ----- 39.9/46.2 MB 398.2 kB/s eta 0:00:16\n", " ---------------------------------- ----- 39.9/46.2 MB 397.8 kB/s eta 0:00:16\n", " ---------------------------------- ----- 39.9/46.2 MB 397.5 kB/s eta 0:00:16\n", " ---------------------------------- ----- 40.0/46.2 MB 396.8 kB/s eta 0:00:16\n", " ---------------------------------- ----- 40.0/46.2 MB 396.8 kB/s eta 0:00:16\n", " ---------------------------------- ----- 40.1/46.2 MB 396.3 kB/s eta 0:00:16\n", " ---------------------------------- ----- 40.1/46.2 MB 396.1 kB/s eta 0:00:16\n", " ---------------------------------- ----- 40.2/46.2 MB 395.4 kB/s eta 0:00:16\n", " ---------------------------------- ----- 40.2/46.2 MB 395.1 kB/s eta 0:00:16\n", " ---------------------------------- ----- 40.3/46.2 MB 394.9 kB/s eta 0:00:15\n", " ---------------------------------- ----- 40.3/46.2 MB 394.4 kB/s eta 0:00:15\n", " ---------------------------------- ----- 40.3/46.2 MB 394.2 kB/s eta 0:00:15\n", " ----------------------------------- ---- 40.4/46.2 MB 393.9 kB/s eta 0:00:15\n", " ----------------------------------- ---- 40.4/46.2 MB 393.7 kB/s eta 0:00:15\n", " ----------------------------------- ---- 40.5/46.2 MB 393.2 kB/s eta 0:00:15\n", " ----------------------------------- ---- 40.6/46.2 MB 393.2 kB/s eta 0:00:15\n", " ----------------------------------- ---- 40.6/46.2 MB 393.0 kB/s eta 0:00:15\n", " ----------------------------------- ---- 40.7/46.2 MB 392.3 kB/s eta 0:00:15\n", " ----------------------------------- ---- 40.7/46.2 MB 392.3 kB/s eta 0:00:14\n", " ----------------------------------- ---- 40.8/46.2 MB 392.0 kB/s eta 0:00:14\n", " ----------------------------------- ---- 40.8/46.2 MB 391.8 kB/s eta 0:00:14\n", " ----------------------------------- ---- 40.9/46.2 MB 391.3 kB/s eta 0:00:14\n", " ----------------------------------- ---- 40.9/46.2 MB 390.9 kB/s eta 0:00:14\n", " ----------------------------------- ---- 40.9/46.2 MB 390.4 kB/s eta 0:00:14\n", " ----------------------------------- ---- 41.0/46.2 MB 389.9 kB/s eta 0:00:14\n", " ----------------------------------- ---- 41.0/46.2 MB 389.7 kB/s eta 0:00:14\n", " ----------------------------------- ---- 41.1/46.2 MB 389.2 kB/s eta 0:00:14\n", " ----------------------------------- ---- 41.1/46.2 MB 389.0 kB/s eta 0:00:13\n", " ----------------------------------- ---- 41.2/46.2 MB 388.6 kB/s eta 0:00:13\n", " ----------------------------------- ---- 41.2/46.2 MB 388.3 kB/s eta 0:00:13\n", " ----------------------------------- ---- 41.3/46.2 MB 387.9 kB/s eta 0:00:13\n", " ----------------------------------- ---- 41.3/46.2 MB 387.4 kB/s eta 0:00:13\n", " ----------------------------------- ---- 41.4/46.2 MB 386.9 kB/s eta 0:00:13\n", " ----------------------------------- ---- 41.4/46.2 MB 386.7 kB/s eta 0:00:13\n", " ----------------------------------- ---- 41.5/46.2 MB 386.3 kB/s eta 0:00:13\n", " ----------------------------------- ---- 41.5/46.2 MB 386.5 kB/s eta 0:00:13\n", " ----------------------------------- ---- 41.5/46.2 MB 386.3 kB/s eta 0:00:12\n", " ------------------------------------ --- 41.6/46.2 MB 386.0 kB/s eta 0:00:12\n", " ------------------------------------ --- 41.7/46.2 MB 385.8 kB/s eta 0:00:12\n", " ------------------------------------ --- 41.7/46.2 MB 385.6 kB/s eta 0:00:12\n", " ------------------------------------ --- 41.8/46.2 MB 385.1 kB/s eta 0:00:12\n", " ------------------------------------ --- 41.8/46.2 MB 384.9 kB/s eta 0:00:12\n", " ------------------------------------ --- 41.9/46.2 MB 384.7 kB/s eta 0:00:12\n", " ------------------------------------ --- 41.9/46.2 MB 384.4 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.0/46.2 MB 384.2 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.0/46.2 MB 384.2 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.0/46.2 MB 384.2 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.0/46.2 MB 384.2 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.0/46.2 MB 384.2 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.0/46.2 MB 384.2 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.0/46.2 MB 384.2 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.0/46.2 MB 379.5 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.0/46.2 MB 379.5 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.0/46.2 MB 378.7 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.1/46.2 MB 377.8 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.1/46.2 MB 377.1 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.1/46.2 MB 376.9 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.1/46.2 MB 376.3 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.2/46.2 MB 376.0 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.2/46.2 MB 375.6 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.3/46.2 MB 375.2 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.4/46.2 MB 374.8 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.4/46.2 MB 374.6 kB/s eta 0:00:11\n", " ------------------------------------ --- 42.4/46.2 MB 374.1 kB/s eta 0:00:10\n", " ------------------------------------ --- 42.5/46.2 MB 373.7 kB/s eta 0:00:10\n", " ------------------------------------ --- 42.5/46.2 MB 373.5 kB/s eta 0:00:10\n", " ------------------------------------ --- 42.6/46.2 MB 373.0 kB/s eta 0:00:10\n", " ------------------------------------ --- 42.6/46.2 MB 372.8 kB/s eta 0:00:10\n", " ------------------------------------ --- 42.7/46.2 MB 372.4 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.7/46.2 MB 371.8 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.7/46.2 MB 371.8 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.7/46.2 MB 371.8 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.7/46.2 MB 371.8 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.7/46.2 MB 371.8 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.7/46.2 MB 371.8 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.7/46.2 MB 371.8 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.7/46.2 MB 371.8 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.7/46.2 MB 371.8 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.8/46.2 MB 366.8 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.8/46.2 MB 366.8 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.8/46.2 MB 366.8 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.8/46.2 MB 365.5 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.8/46.2 MB 364.9 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.9/46.2 MB 364.1 kB/s eta 0:00:10\n", " ------------------------------------- -- 42.9/46.2 MB 363.7 kB/s eta 0:00:09\n", " ------------------------------------- -- 42.9/46.2 MB 363.7 kB/s eta 0:00:09\n", " ------------------------------------- -- 43.0/46.2 MB 363.5 kB/s eta 0:00:09\n", " ------------------------------------- -- 43.0/46.2 MB 363.1 kB/s eta 0:00:09\n", " ------------------------------------- -- 43.1/46.2 MB 362.7 kB/s eta 0:00:09\n", " ------------------------------------- -- 43.1/46.2 MB 362.5 kB/s eta 0:00:09\n", " ------------------------------------- -- 43.2/46.2 MB 362.1 kB/s eta 0:00:09\n", " ------------------------------------- -- 43.2/46.2 MB 361.7 kB/s eta 0:00:09\n", " ------------------------------------- -- 43.3/46.2 MB 361.3 kB/s eta 0:00:09\n", " ------------------------------------- -- 43.3/46.2 MB 361.5 kB/s eta 0:00:08\n", " ------------------------------------- -- 43.4/46.2 MB 361.1 kB/s eta 0:00:08\n", " ------------------------------------- -- 43.4/46.2 MB 361.3 kB/s eta 0:00:08\n", " ------------------------------------- -- 43.5/46.2 MB 360.7 kB/s eta 0:00:08\n", " ------------------------------------- -- 43.5/46.2 MB 364.5 kB/s eta 0:00:08\n", " ------------------------------------- -- 43.6/46.2 MB 364.5 kB/s eta 0:00:08\n", " ------------------------------------- -- 43.6/46.2 MB 363.7 kB/s eta 0:00:08\n", " ------------------------------------- -- 43.7/46.2 MB 364.1 kB/s eta 0:00:07\n", " ------------------------------------- -- 43.7/46.2 MB 369.3 kB/s eta 0:00:07\n", " ------------------------------------- -- 43.8/46.2 MB 368.9 kB/s eta 0:00:07\n", " ------------------------------------- -- 43.8/46.2 MB 370.1 kB/s eta 0:00:07\n", " -------------------------------------- - 43.9/46.2 MB 374.5 kB/s eta 0:00:07\n", " -------------------------------------- - 44.0/46.2 MB 379.1 kB/s eta 0:00:06\n", " -------------------------------------- - 44.0/46.2 MB 380.6 kB/s eta 0:00:06\n", " -------------------------------------- - 44.1/46.2 MB 386.7 kB/s eta 0:00:06\n", " -------------------------------------- - 44.1/46.2 MB 388.8 kB/s eta 0:00:06\n", " -------------------------------------- - 44.2/46.2 MB 389.9 kB/s eta 0:00:06\n", " -------------------------------------- - 44.2/46.2 MB 398.0 kB/s eta 0:00:05\n", " -------------------------------------- - 44.3/46.2 MB 402.1 kB/s eta 0:00:05\n", " -------------------------------------- - 44.4/46.2 MB 403.6 kB/s eta 0:00:05\n", " -------------------------------------- - 44.5/46.2 MB 411.0 kB/s eta 0:00:05\n", " -------------------------------------- - 44.5/46.2 MB 416.5 kB/s eta 0:00:04\n", " -------------------------------------- - 44.6/46.2 MB 421.0 kB/s eta 0:00:04\n", " -------------------------------------- - 44.6/46.2 MB 430.7 kB/s eta 0:00:04\n", " -------------------------------------- - 44.7/46.2 MB 436.2 kB/s eta 0:00:04\n", " -------------------------------------- - 44.8/46.2 MB 438.5 kB/s eta 0:00:04\n", " -------------------------------------- - 44.9/46.2 MB 441.8 kB/s eta 0:00:03\n", " -------------------------------------- - 44.9/46.2 MB 451.2 kB/s eta 0:00:03\n", " -------------------------------------- - 45.0/46.2 MB 456.6 kB/s eta 0:00:03\n", " --------------------------------------- 45.1/46.2 MB 458.5 kB/s eta 0:00:03\n", " --------------------------------------- 45.1/46.2 MB 469.3 kB/s eta 0:00:03\n", " --------------------------------------- 45.2/46.2 MB 477.9 kB/s eta 0:00:02\n", " --------------------------------------- 45.3/46.2 MB 480.7 kB/s eta 0:00:02\n", " --------------------------------------- 45.4/46.2 MB 498.6 kB/s eta 0:00:02\n", " --------------------------------------- 45.5/46.2 MB 513.1 kB/s eta 0:00:02\n", " --------------------------------------- 45.5/46.2 MB 530.1 kB/s eta 0:00:02\n", " --------------------------------------- 45.6/46.2 MB 532.7 kB/s eta 0:00:02\n", " --------------------------------------- 45.7/46.2 MB 536.6 kB/s eta 0:00:01\n", " --------------------------------------- 45.8/46.2 MB 540.2 kB/s eta 0:00:01\n", " --------------------------------------- 45.9/46.2 MB 545.6 kB/s eta 0:00:01\n", " --------------------------------------- 45.9/46.2 MB 557.7 kB/s eta 0:00:01\n", " --------------------------------------- 46.0/46.2 MB 567.8 kB/s eta 0:00:01\n", " --------------------------------------- 46.1/46.2 MB 572.3 kB/s eta 0:00:01\n", " --------------------------------------- 46.1/46.2 MB 572.3 kB/s eta 0:00:01\n", " --------------------------------------- 46.2/46.2 MB 572.8 kB/s eta 0:00:01\n", " --------------------------------------- 46.2/46.2 MB 572.8 kB/s eta 0:00:01\n", " ---------------------------------------- 46.2/46.2 MB 581.9 kB/s eta 0:00:00\n", "Downloading threadpoolctl-3.4.0-py3-none-any.whl (17 kB)\n", "Installing collected packages: threadpoolctl, scipy, joblib, scikit-learn\n", "Successfully installed joblib-1.3.2 scikit-learn-1.4.1.post1 scipy-1.12.0 threadpoolctl-3.4.0\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "pip install scikit-learn" ] }, { "cell_type": "markdown", "id": "135b1bd0", "metadata": {}, "source": [ "### CHECKING VERSION AND UPGRADING PYTHON, PIP" ] }, { "cell_type": "markdown", "id": "163c2665", "metadata": {}, "source": [ "Now, the same way we might check the libraries we can check the version of python we have and the pip and upgrade them if necessary." ] }, { "cell_type": "code", "execution_count": 5, "id": "e96527b9", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python 3.11.8\n" ] } ], "source": [ "!python --version" ] }, { "cell_type": "code", "execution_count": 6, "id": "79a74bef", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pip 23.3.1 from C:\\Users\\micro\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pip (python 3.11)\n", "\n" ] } ], "source": [ "!pip --version" ] }, { "cell_type": "markdown", "id": "737977b0", "metadata": {}, "source": [ "We can also upgrade pip and Python, but we won't be doing it here." ] }, { "cell_type": "markdown", "id": "5af984f8", "metadata": {}, "source": [ "### USING CONDA" ] }, { "cell_type": "markdown", "id": "387a4171", "metadata": {}, "source": [ "If something doesn't work properly with pip we can try using conda for installing it. If you want to learn more about it, check this site:" ] }, { "cell_type": "markdown", "id": "755ba62c", "metadata": {}, "source": [ "https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/installing-with-conda.html" ] }, { "cell_type": "markdown", "id": "1adf5827", "metadata": {}, "source": [ "### IMPORTING SOMETHING AS STH, FROM STH, ETC." ] }, { "cell_type": "markdown", "id": "24fd77a0", "metadata": {}, "source": [ "Now that we have some of our libraries installed on our computer we can import them to our project, simply by writing:\n", "\n", "*import greatlibrary*\n", "\n", "or \n", "\n", "*import some_great_api as greatapi*\n", "\n", "We are using the phrase 'import as' when we don't want to write in the following code the whole 'some_great_api' name, because it's long and we could make a mistake while typing. Instead, thanks to that 'as' part we can just type 'greatapi' to use our library in the future.\n", "\n", "If you ever need some kind of library, package or module in your project, you can always import them with this single line of code:\n", "\n", "*import NAME_OF_MODULE_OR_PACKAGE_OR_LIBRARY* (for example: import time)\n", " \n", "*import NAME_OF_MODULE_OR_PACKAGE_OR_LIBRARY.PART_OF_THE_LIBRARY* (for example: import time.time)\n", "\n", "or you can use longer version\n", "\n", "*import NAME_OF_MODULE_OR_PACKAGE_OR_LIBRARY as SHORT_NAME* (for example: import numpy as np)\n", "\n", "*import NAME_OF_MODULE_OR_PACKAGE_OR_LIBRARY.PART_OF_THE_LIBRARY as SHORT_NAME* (for example: import matplotlib.pyplot as plt)\n", "\n", "or you can even write\n", "\n", "*from NAME_OF_MODULE_OR_PACKAGE_OR_LIBRARY import SOMETHING* (for example: from matplotlib import pyplot)\n", "\n", "*from NAME_OF_MODULE_OR_PACKAGE_OR_LIBRARY.PART_1 import SOMETHING* (for example: from matplotlib.pyplot import plot)\n", "\n", "when you want to install part of some library or\n", "\n", "*from NAME_OF_MODULE_OR_PACKAGE_OR_LIBRARY import ** (for example: from matplotlib import *)\n", "\n", "when you want to install all that's there, but this might cause problems if the library uses the same names as the names already used by the Standard library, so I would recommend avoiding this last way if you are not sure what's inside the library.\n", "\n", "Ok. Let's start importing stuff after restarting the kernel, so we have all our installed libraries as they should be." ] }, { "cell_type": "markdown", "id": "64661cfd", "metadata": {}, "source": [ "AFTER RESTARTING THE KERNEL." ] }, { "cell_type": "markdown", "id": "9986104c", "metadata": {}, "source": [ "### IMPORT SOMETHING AS STH" ] }, { "cell_type": "markdown", "id": "d61e19a0", "metadata": {}, "source": [ "### numpy as np" ] }, { "cell_type": "markdown", "id": "14ee0d19", "metadata": {}, "source": [ "First we import numpy library.\n", "\n", "NumPy is a Python library that is used for working with arrays and matrices. It is widely used in scientific computing, data analysis, and machine learning applications, so you will be using it a lot if you plan to do some machine learning." ] }, { "cell_type": "markdown", "id": "d2c65e56", "metadata": {}, "source": [ "So, first, we can see that we can't use the numpy before importing it." ] }, { "cell_type": "code", "execution_count": 7, "id": "4bda6cac", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'numpy' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[7], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m numpy\u001b[38;5;241m.\u001b[39mzeros([\u001b[38;5;241m2\u001b[39m,\u001b[38;5;241m3\u001b[39m])\n", "\u001b[1;31mNameError\u001b[0m: name 'numpy' is not defined" ] } ], "source": [ "numpy.zeros([2,3])" ] }, { "cell_type": "code", "execution_count": 8, "id": "3b4ab8b4", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'np' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[8], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m np\u001b[38;5;241m.\u001b[39mzeros([\u001b[38;5;241m2\u001b[39m,\u001b[38;5;241m3\u001b[39m])\n", "\u001b[1;31mNameError\u001b[0m: name 'np' is not defined" ] } ], "source": [ "np.zeros([2,3])" ] }, { "cell_type": "markdown", "id": "44aea48f", "metadata": {}, "source": [ "Then we import it as np and we can import stuff from that library by using the name np, otherwise it won't work." ] }, { "cell_type": "code", "execution_count": 9, "id": "5e5c6154", "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 10, "id": "6c23e4bd", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'numpy' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[10], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m numpy\u001b[38;5;241m.\u001b[39mzeros([\u001b[38;5;241m2\u001b[39m,\u001b[38;5;241m3\u001b[39m])\n", "\u001b[1;31mNameError\u001b[0m: name 'numpy' is not defined" ] } ], "source": [ "numpy.zeros([2,3])" ] }, { "cell_type": "code", "execution_count": 11, "id": "772d6996", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0., 0., 0.],\n", " [0., 0., 0.]])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.zeros([2,3])" ] }, { "cell_type": "markdown", "id": "1142b02e", "metadata": {}, "source": [ "And finally we've created an array 2 by 3 full of zeros. I won't tell you more about Numpy libary, because it's a bit more advanced topic, but if you plan to work with numbers, machine learning, artificial intelligence in Python, you definitely should learn more about it.\n", "\n", "What I want to tell you here is that, as you can see, because we've used import numpy as np, the 'np' is the name we have to use in our code in order to make it work properly." ] }, { "cell_type": "markdown", "id": "b1ad44d5", "metadata": {}, "source": [ "### IMPORT THING.SOMETHING AS STH" ] }, { "cell_type": "markdown", "id": "1c4b53dd", "metadata": {}, "source": [ "Now let's move on to matplotlib.\n", "\n", "Matplotlib is a library for creating visualizations in Python. It provides a wide range of plot types, like scatter plots, bar plots, histograms, etc.\n", "\n", "If you're interested in learning more about Matplotlib, you can check out the official Matplotlib documentation. \n", "\n", "In here we will only see how we can import, for example part of it called pyplot with 'as' and plot a simple plot in a couple of different ways.\n", "\n", "As usual, at first we can see that we don't have the library imported." ] }, { "cell_type": "markdown", "id": "59d622fc", "metadata": {}, "source": [ "### matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 12, "id": "78982759", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'plt' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[12], line 3\u001b[0m\n\u001b[0;32m 1\u001b[0m x \u001b[38;5;241m=\u001b[39m [\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m2\u001b[39m]\n\u001b[0;32m 2\u001b[0m y \u001b[38;5;241m=\u001b[39m [\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m2\u001b[39m]\n\u001b[1;32m----> 3\u001b[0m plt\u001b[38;5;241m.\u001b[39mplot(x, y)\n\u001b[0;32m 4\u001b[0m plt\u001b[38;5;241m.\u001b[39mshow()\n", "\u001b[1;31mNameError\u001b[0m: name 'plt' is not defined" ] } ], "source": [ "x = [0, 1, 2]\n", "y = [0, 1, 2]\n", "plt.plot(x, y)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "ab89feb7", "metadata": {}, "source": [ "We import it and the magic starts." ] }, { "cell_type": "code", "execution_count": 13, "id": "577214fb", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 14, "id": "0eb9ebac", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = [0, 1, 2]\n", "y = [0, 1, 2]\n", "plt.plot(x, y)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 15, "id": "9b5cc3a0", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGdCAYAAAAxCSikAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABO2ElEQVR4nO3deVyVZf7/8dcB5IAIKKIsior7DqhJmE46oWhmMZW51GROy0xf16hM+5VmNWFlpiaT00xlzeRaLlOaLZSaaToJuOWG4i64wgGU7Zz790cTM+R6ELwP8H4+HvdDz32u++JzeZ/D/fa+7nMfi2EYBiIiIiIuzM3sAkRERESuRoFFREREXJ4Ci4iIiLg8BRYRERFxeQosIiIi4vIUWERERMTlKbCIiIiIy1NgEREREZfnYXYBFcHhcHD8+HF8fX2xWCxmlyMiIiLXwDAMcnNzCQ0Nxc3tyudQqkVgOX78OGFhYWaXISIiIuVw5MgRGjdufMU21SKw+Pr6Aj8P2M/Pz+RqRERE5FrYbDbCwsJKj+NXUi0Cyy/TQH5+fgosIiIiVcy1XM6hi25FRETE5SmwiIiIiMtTYBERERGXp8AiIiIiLk+BRURERFyeAouIiIi4PAUWERERcXkKLCIiIuLyFFhERETE5TkVWBITE7npppvw9fWlYcOGxMfHs2fPnqtut2TJEtq2bYuXlxedOnVi1apVZZ43DIPJkycTEhKCt7c3sbGx7Nu3z7mRiIiISLXlVGBZu3Yto0aN4ocffuCrr76iuLiYfv36kZ+ff9ltNmzYwLBhw3j44YdJTU0lPj6e+Ph4duzYUdrmtddeY/bs2cydO5dNmzbh4+NDXFwcBQUF5R+ZiIiIVBsWwzCM8m586tQpGjZsyNq1a/nNb35zyTZDhgwhPz+fzz77rHTdzTffTGRkJHPnzsUwDEJDQ3nyySd56qmnAMjJySEoKIh58+YxdOjQq9Zhs9nw9/cnJydH3yUkIiJSRThz/L6ua1hycnIACAgIuGybjRs3EhsbW2ZdXFwcGzduBCAjI4PMzMwybfz9/YmOji5t82uFhYXYbLYyi4iIiFQ8u8Ngxpd7mJ1s7qUa5f62ZofDwfjx47nlllvo2LHjZdtlZmYSFBRUZl1QUBCZmZmlz/+y7nJtfi0xMZGpU6eWt3QRERG5Blm2AsYuSGVTxlncLHB7pxBaNqxjSi3lPsMyatQoduzYwcKFCyuynmsyadIkcnJySpcjR47c8BpERESqs7V7TzFg1ndsyjiLj6c7bw6JNC2sQDnPsIwePZrPPvuMdevW0bhx4yu2DQ4OJisrq8y6rKwsgoODS5//ZV1ISEiZNpGRkZfs02q1YrVay1O6iIiIXEGJ3cEbX+3l7TX7AWgf4sec4VE0b2BeWAEnz7AYhsHo0aNZtmwZ33zzDeHh4VfdJiYmhuTk5DLrvvrqK2JiYgAIDw8nODi4TBubzcamTZtK24iIiEjlO559gaHv/FAaVn5/c1OW/l8P08MKOHmGZdSoUcyfP58VK1bg6+tbeo2Jv78/3t7eADz44IM0atSIxMREAMaNG8ett97KG2+8wcCBA1m4cCE//vgj77zzDgAWi4Xx48fz8ssv06pVK8LDw3n++ecJDQ0lPj6+AocqIiIil5O8K4snl2wl+3wxvlYPpt3TmYGdQ66+4Q3iVGB5++23Aejdu3eZ9e+//z4PPfQQAIcPH8bN7b8nbnr06MH8+fN57rnnePbZZ2nVqhXLly8vc6HuhAkTyM/P57HHHiM7O5uePXuyevVqvLy8yjksERERuRZFJQ5e/2I3f/suA4BOjfyZMzyKpvV9TK6srOu6D4ur0H1YREREnHfk7HnGLEgl7Ug2ACNvacbEAW2xerjfkJ/vzPG73B9rFhERkarri52ZPL1kK7aCEvy8PHh9cARxHYLNLuuyFFhERERqkMISO4mrdjNvw0EAIsPq8tawKMICaptb2FUosIiIiNQQh87kM3p+KtuP/Xyn+kd7hfN0XFs8Pa7rxvc3hAKLiIhIDbBy2wkmfrKN3MIS6tauxRuDI7itXdDVN3QRCiwiIiLVWEGxnZdX/sQ/fzgMQLem9Zg9LIrQut4mV+YcBRYREZFq6sCpPEbNT2XXiZ+/JPj/ercgoW9rPNxdfwro1xRYREREqqEVacd4dul28ovs1PfxZMaQSG5t3cDssspNgUVERKQauVBkZ+qnO1n475+/GDg6PIDZw6II8qvaN2NVYBEREakm0k/mMuqjVPZk5WKxwJjftmLsb1tWySmgX1NgERERqQY+3nKU55fv4EKxncA6VmYNjeSWloFml1VhFFhERESqsPNFJTy/fCefpBwF4JaW9XlzSCQNfav2FNCvKbCIiIhUUXsycxk1P4X0k3m4WWB8bGtG9WmJu5vF7NIqnAKLiIhIFWMYBot/PMLkFTspLHEQ5Gdl1tAobm5e3+zSKo0Ci4iISBWSV1jCc8u2szztOAC3tm7AjPsiqF/HanJllUuBRUREpIr46biN0fNTOHA6H3c3C0/1a8Mff9Mct2o4BfRrCiwiIiIuzjAMPtp0mBc/+4miEgch/l68NSyKbs0CzC7thlFgERERcWG2gmImLd3Oym0nALitbUOmD46gno+nyZXdWAosIiIiLmr70RxGzU/h8NnzeLhZmDigLQ/3DMdiqf5TQL+mwCIiIuJiDMPggw0HeWXVborsDhrV9WbO8CiimtQzuzTTKLCIiIi4kJzzxUz4ZCtf7MwCoF/7IF6/NwL/2rVMrsxcCiwiIiIuIvXwOcYsSOXouQvUcrfw7O3teKhHsxo5BfRrCiwiIiImMwyDd9dnMO3z3ZQ4DJoE1GbO8Cg6N65rdmkuQ4FFRETEROfyi3hqyVaSd58EYGCnEBLv6YSfV82eAvo1BRYRERGTbDl0ljHzUzmeU4CnhxuT72jP/dFNNAV0CQosIiIiN5jDYfDXdQeY/uUe7A6D8EAf5gyPokOov9mluSwFFhERkRvoTF4hCYu3snbvKQDuigzlz7/rRB2rDslXon8dERGRG2TTgTOMXZhKlq0Qq4cbL97Vgfu6hWkK6BoosIiIiFQyu8PgL9+m8+bXe3EY0KKBD3+5vyttgn3NLq3KUGARERGpRKdyCxm/KJXv088AcE+XxrwU34HanjoEO0P/WiIiIpXk+/TTjFuYxum8QrxrufNSfEfu7drY7LKqJAUWERGRCmZ3GMxK3sdb3+zDMKBNkC9zhkfRKkhTQOXl5uwG69atY9CgQYSGhmKxWFi+fPkV2z/00ENYLJaLlg4dOpS2eeGFFy56vm3btk4PRkRExGxZtgLu//sPzE7+OawMvSmM5aNuUVi5Tk6fYcnPzyciIoI//OEP3H333VdtP2vWLKZNm1b6uKSkhIiICAYPHlymXYcOHfj666//W5iHTv6IiEjVsnbvKRIWpXEmvwgfT3deubsTd0U2MrusasHpVDBgwAAGDBhwze39/f3x9//vjXCWL1/OuXPnGDlyZNlCPDwIDg52thwRERHTldgdzPhqL39Zsx+AdiF+JA2PonmDOiZXVn3c8NMY7777LrGxsTRt2rTM+n379hEaGoqXlxcxMTEkJibSpEmTS/ZRWFhIYWFh6WObzVapNYuIiFzOiZwLjF2Qyr8PngPggZub8NzA9njVcje5surF6WtYrsfx48f5/PPPeeSRR8qsj46OZt68eaxevZq3336bjIwMevXqRW5u7iX7SUxMLD1z4+/vT1hY2I0oX0REpIxvdmdx+6zv+PfBc/haPZgzPIqX4zsprFQCi2EYRrk3tlhYtmwZ8fHx19Q+MTGRN954g+PHj+Pp6XnZdtnZ2TRt2pQZM2bw8MMPX/T8pc6whIWFkZOTg5+fn9PjEBERcUax3cHrX+zhnXUHAOjUyJ85w6NoWt/H5MqqFpvNhr+//zUdv2/YlJBhGLz33nv8/ve/v2JYAahbty6tW7cmPT39ks9brVasVmtllCkiInJFR8+dZ/T8VNKOZAPwUI9mTLq9LVYPnVWpTDdsSmjt2rWkp6df8ozJr+Xl5bF//35CQkJuQGUiIiLX5oudmdw+6zvSjmTj5+XB3Ae68sKdHRRWbgCnz7Dk5eWVOfORkZFBWloaAQEBNGnShEmTJnHs2DE+/PDDMtu9++67REdH07Fjx4v6fOqppxg0aBBNmzbl+PHjTJkyBXd3d4YNG1aOIYmIiFSsohIHiZ/v4v3vDwIQEVaXOcOiCAuobW5hNYjTgeXHH3+kT58+pY8TEhIAGDFiBPPmzePEiRMcPny4zDY5OTl88sknzJo165J9Hj16lGHDhnHmzBkaNGhAz549+eGHH2jQoIGz5YmIiFSow2fOM3pBCtuO5gDwaK9wno5ri6fHDf3cSo13XRfdugpnLtoRERG5Vqu2n+CZj7eRW1hC3dq1mH5vBLHtg8wuq9pwyYtuRUREqoqCYjt/XrmLf/xwCIBuTesxe1gUoXW9Ta6s5lJgERER+R8Zp/MZ9VEKP534+aakj/duQULf1tRy1xSQmRRYRERE/mNF2jGeXbqd/CI7AT6ezLgvgt5tGppdlqDAIiIiQkGxnamf7mTB5iMAdA8PYPbQKIL9vUyuTH6hwCIiIjVa+sk8Rn2Uwp6sXCwWGNOnJWNva4WHpoBcigKLiIjUWJ9sOcpzy3dwodhOYB0rM4dE0rNVoNllySUosIiISI1zvqiEySt28vGWowD0aFGfmUMjaeirKSBXpcAiIiI1yt6sXEZ9lMK+k3m4WWB8bGtG9WmJu5vF7NLkChRYRESkRjAMg8U/HmHKv3ZSUOygoa+VWUOjiGlR3+zS5BoosIiISLWXV1jCc8u2szztOAC9WgXy5pBIAutYTa5MrpUCi4iIVGs/Hbcxen4KB07n4+5m4cl+rfnTb1rgpimgKkWBRUREqiXDMJi/+TBTP/2JohIHIf5ezB4WxU3NAswuTcpBgUVERKqd3IJiJi7dzsptJwD4bduGvDE4gno+niZXJuWlwCIiItXK9qM5jF6QwqEz5/Fws/BM/7Y83DNcU0BVnAKLiIhUC4Zh8MGGg7yyajdFdgeN6nrz1vAoujSpZ3ZpUgEUWEREpMrLuVDMMx9vY/XOTAD6tQ/i9Xsj8K9dy+TKpKIosIiISJWWdiSb0fNTOHruArXcLTx7ezse6tEMi0VTQNWJAouIiFRJhmHw7voMpn2+mxKHQZOA2swZHkXnxnXNLk0qgQKLiIhUOdnni3hqyVa+3nUSgNs7BTPtns74eWkKqLpSYBERkSply6GzjJmfyvGcAjw93Hj+jvY8EN1EU0DVnAKLiIhUCQ6HwTvfHeD1L/ZgdxiEB/owZ3gUHUL9zS5NbgAFFhERcXln8gp5cslW1uw5BcCdEaG8cncn6lh1GKsptKdFRMSlbTpwhrELU8myFWL1cGPqnR0YclOYpoBqGAUWERFxSXaHwV++TefNr/fiMKBFAx+S7u9C22A/s0sTEyiwiIiIyzmVW8gTi9JYn34agLu7NOKluzrioymgGkt7XkREXMqG9NOMW5TGqdxCvGu58+JdHRjcLczsssRkCiwiIuIS7A6DWcn7eOubfRgGtA6qQ9LwLrQK8jW7NHEBCiwiImK6LFsB4xam8sOBswAM6RbGC3d2wNvT3eTKxFUosIiIiKnW7T3FE4vSOJNfRG1Pd175XSfioxqZXZa4GAUWERExRYndwZtf7+Uva/ZjGNAuxI+k4VE0b1DH7NLEBSmwiIjIDXci5wJjF6Ty74PnALg/ugnP39Eer1qaApJLc3N2g3Xr1jFo0CBCQ0OxWCwsX778iu3XrFmDxWK5aMnMzCzTLikpiWbNmuHl5UV0dDSbN292tjQREakCvt19kttnfce/D56jjtWDOcOj+PPvOimsyBU5HVjy8/OJiIggKSnJqe327NnDiRMnSpeGDRuWPrdo0SISEhKYMmUKKSkpREREEBcXx8mTJ50tT0REXFSx3UHiql2MnPdvzp0vpmMjP1aO7ckdnUPNLk2qAKenhAYMGMCAAQOc/kENGzakbt26l3xuxowZPProo4wcORKAuXPnsnLlSt577z0mTpzo9M8SERHXcvTcecYsSCX1cDYAD/VoxqTb22L10FkVuTZOn2Epr8jISEJCQujbty/ff/996fqioiK2bNlCbGzsf4tycyM2NpaNGzdesq/CwkJsNluZRUREXNOXOzMZOHs9qYez8fXyYO4DXXjhzg4KK+KUSg8sISEhzJ07l08++YRPPvmEsLAwevfuTUpKCgCnT5/GbrcTFBRUZrugoKCLrnP5RWJiIv7+/qVLWJjugCgi4mqKShxM/XQnj/1jCzkXiokIq8uqsb3o3zHE7NKkCqr0Twm1adOGNm3alD7u0aMH+/fv58033+Qf//hHufqcNGkSCQkJpY9tNptCi4iICzl85jyjF6Sw7WgOAI/0DGdC/7Z4etywE/tSzZjysebu3buzfv16AAIDA3F3dycrK6tMm6ysLIKDgy+5vdVqxWq1VnqdIiLivM+3n2DCx9vILSzB37sWbwyOILZ90NU3FLkCU6JuWloaISE/nxL09PSka9euJCcnlz7vcDhITk4mJibGjPJERKQcCortTF6xg8c/SiG3sISuTeuxalwvhRWpEE6fYcnLyyM9Pb30cUZGBmlpaQQEBNCkSRMmTZrEsWPH+PDDDwGYOXMm4eHhdOjQgYKCAv7+97/zzTff8OWXX5b2kZCQwIgRI+jWrRvdu3dn5syZ5Ofnl35qSEREXFvG6XxGz09h5/GfPwTxp1tb8GS/1tRy1xSQVAynA8uPP/5Inz59Sh//ci3JiBEjmDdvHidOnODw4cOlzxcVFfHkk09y7NgxateuTefOnfn666/L9DFkyBBOnTrF5MmTyczMJDIyktWrV190Ia6IiLief209zrNLt5NXWEKAjycz7ougd5uGV99QxAkWwzAMs4u4XjabDX9/f3JycvDz8zO7HBGRGqGg2M7UT39iweaf/5PaPTyA2UOjCPb3MrkyqSqcOX7ru4RERMRp6SfzGD0/hd2ZuVgsMLpPS8bd1goPTQFJJVFgERERpyxNOcpzy3dwvshOYB1PZg6JomerQLPLkmpOgUVERK7J+aISpqzYyZItRwHo0aI+M4dE0tBPU0BS+RRYRETkqvZm5TLqoxT2nczDzQLjbmvN6N+2xN3NYnZpUkMosIiIyGUZhsGSH48y+V87KCh20NDXyqyhUcS0qG92aVLDKLCIiMgl5ReW8NzyHSxLPQZAr1aBvDkkksA6utO43HgKLCIicpFdJ2yM+iiFA6fzcXezkNC3NY/f2gI3TQGJSRRYRESklGEYzN98mKmf/kRRiYNgPy/eGh7FTc0CzC5NajgFFhERASC3oJhJS7fz2bYTAPy2bUOmD44gwMfT5MpEFFhERATYcSyH0fNTOHjmPB5uFib0b8MjPZtrCkhchgKLiEgNZhgGH248xJ9X7qLI7qBRXW/eGh5Flyb1zC5NpAwFFhGRGirnQjHPfLyN1TszAejbPojX7+1M3dqaAhLXo8AiIlIDpR3JZvT8FI6eu0AtdwuTBrRj5C3NsFg0BSSuSYFFRKQGMQyDd9dn8Orq3RTbDcICvJkzrAsRYXXNLk3kihRYRERqiOzzRTy1ZBtf78oCYEDHYKbd0xl/71omVyZydQosIiI1wJZD5xgzP4XjOQV4urvx/B3teODmppoCkipDgUVEpBpzOAze+e4Ar3+xB7vDoFn92swZ3oWOjfzNLk3EKQosIiLV1Nn8IhIWp7FmzykA7owI5ZW7O1HHql/9UvXoVSsiUg1tzjjL2AWpZNoKsHq48cKdHRh6U5imgKTKUmAREalGHA6Dv6xJZ8ZXe3EY0LyBD0nDu9AuxM/s0kSuiwKLiEg1cSq3kITFaXy37zQAd0c14qX4jvhoCkiqAb2KRUSqgQ3ppxm3KI1TuYV41XLjpbs6MrhbmNlliVQYBRYRkSrM7jCYnbyP2d/swzCgdVAdkoZ3oVWQr9mliVQoBRYRkSrqpK2AcQvT2HjgDAD3dWvM1Ds74u3pbnJlIhVPgUVEpAr6bt8pnliUxum8Imp7uvPn33Xkd1GNzS5LpNIosIiIVCEldgczv95H0pp0DAPaBvuSdH8XWjSoY3ZpIpVKgUVEpIo4kXOBcQvS2HzwLADDo5sw+Y72eNXSFJBUfwosIiJVwLe7T5KwOI1z54upY/Ug8e5ODIoINbsskRtGgUVExIUV2x1M/2IPf113AICOjfyYM6wLzQJ9TK5M5MZSYBERcVHHsi8wZn4KKYezAXioRzMm3d4Wq4emgKTmUWAREXFBX/2UxVNLtpJzoRhfLw9ev7cz/TuGmF2WiGncnN1g3bp1DBo0iNDQUCwWC8uXL79i+6VLl9K3b18aNGiAn58fMTExfPHFF2XavPDCC1gsljJL27ZtnS1NRKTKKypx8OKnP/Hohz+Sc6GYiMb+rBrbS2FFajynA0t+fj4REREkJSVdU/t169bRt29fVq1axZYtW+jTpw+DBg0iNTW1TLsOHTpw4sSJ0mX9+vXOliYiUqUdOXuewXM38N73GQA83DOcJX/qQVhAbZMrEzGf01NCAwYMYMCAAdfcfubMmWUev/LKK6xYsYJPP/2UqKio/xbi4UFwcLCz5YiIVAurd5zg6Y+3kVtQgr93LaYPjqBv+yCzyxJxGTf8GhaHw0Fubi4BAQFl1u/bt4/Q0FC8vLyIiYkhMTGRJk2aXLKPwsJCCgsLSx/bbLZKrVlEpLIUFNtJXLWLDzYeAqBLk7q8NbwLjep6m1yZiGtxekroek2fPp28vDzuu+++0nXR0dHMmzeP1atX8/bbb5ORkUGvXr3Izc29ZB+JiYn4+/uXLmFh+kZSEal6Dp7O5563N5SGlT/e2pxFf4xRWBG5BIthGEa5N7ZYWLZsGfHx8dfUfv78+Tz66KOsWLGC2NjYy7bLzs6madOmzJgxg4cffvii5y91hiUsLIycnBz8/PycHoeIyI326dbjTFq6nbzCEgJ8PHnjvgj6tGlodlkiN5TNZsPf3/+ajt83bEpo4cKFPPLIIyxZsuSKYQWgbt26tG7dmvT09Es+b7VasVqtlVGmiEilKii28+JnPzF/02EAujcLYPawKIL9vUyuTMS13ZApoQULFjBy5EgWLFjAwIEDr9o+Ly+P/fv3ExKij/GJSPWx/1Qe8UnfM3/TYSwWGPPblsx/NFphReQaOH2GJS8vr8yZj4yMDNLS0ggICKBJkyZMmjSJY8eO8eGHHwI/TwONGDGCWbNmER0dTWZmJgDe3t74+/sD8NRTTzFo0CCaNm3K8ePHmTJlCu7u7gwbNqwixigiYrplqUf5f8t2cL7ITmAdT94cEkmvVg3MLkukynA6sPz444/06dOn9HFCQgIAI0aMYN68eZw4cYLDhw+XPv/OO+9QUlLCqFGjGDVqVOn6X9oDHD16lGHDhnHmzBkaNGhAz549+eGHH2jQQG9mEanaLhTZmbxiB0u2HAUgpnl9Zg2NpKGfzqqIOOO6Lrp1Fc5ctCMicqPszcpl1Ecp7DuZh8UC425rxZjftsLdzWJ2aSIuwSUvuhURqSkMw2DJlqNMXrGDgmIHDXytzBoaSY8WgWaXJlJlKbCIiFSg/MISnl++g6WpxwDo1SqQN4dEElhHn2wUuR4KLCIiFWTXCRuj5qdw4FQ+bhZ4sl8bHr+1BW6aAhK5bgosIiLXyTAMFmw+wtRPd1JY4iDYz4vZw6LoHh5w9Y1F5JoosIiIXIfcgmKeXbaDT7ceB6B3mwbMuC+SAB9PkysTqV4UWEREymnHsRxGz0/h4JnzeLhZeDquDY/2aq4pIJFKoMAiIuIkwzD4xw+HePmzXRTZHTSq683sYVF0bVrP7NJEqi0FFhERJ+RcKGbiJ9v4fMfPd+2ObRfE9MGdqVtbU0AilUmBRUTkGm09ks3oBSkcOXuBWu4WJg5oxx9uaYbFoikgkcqmwCIichWGYfDe9weZ9vkuiu0GYQHezBnWhYiwumaXJlJjKLCIiFxB9vkinlqyja93ZQEwoGMw0+7pjL93LZMrE6lZFFhERC5jy6FzjF2QyrHsC3i6u/HcHe34/c1NNQUkYgIFFhGRX3E4DP723QFe/2IPJQ6DpvVrkzS8Cx0b+ZtdmkiNpcAiIvI/zuYX8eTiNL7dcwqAOzqHkHh3J3y9NAUkYiYFFhGR/9iccZaxC1LJtBVg9XBjyqAODOsepikgERegwCIiNZ7DYfD22v3M+GovdodB8wY+JA3vQrsQP7NLE5H/UGARkRrtdF4hTyxK47t9pwG4O6oRL8V3xMeqX48irkTvSBGpsTbsP824hWmcyi3Eq5YbL97VkcFdG2sKSMQFKbCISI1jdxi89c0+Zifvw2FAq4Z1SLq/C62DfM0uTUQuQ4FFRGqUk7YCxi9KY8P+MwDc160xU+/siLenu8mViciVKLCISI3x3b5TPLEojdN5RdT2dOfl+I7c3aWx2WWJyDVQYBGRaq/E7mDm1/tIWpOOYUDbYF/mDO9Cy4Z1zC5NRK6RAouIVGuZOQWMXZDK5oNnARge3YTJd7THq5amgESqEgUWEam2vt1zkicXb+VsfhF1rB68cncn7owINbssESkHBRYRqXaK7Q6mf7mHv649AECHUD+ShnehWaCPyZWJSHkpsIhItXIs+wJjF6Sy5dA5AEbENGXS7e00BSRSxSmwiEi18dVPWTy1ZCs5F4rx9fLgtXs6M6BTiNlliUgFUGARkSqvqMTBq6t38+76DAAiGvvz1rAuNKlf2+TKRKSiKLCISJV25Ox5Ri9IZeuRbAD+cEs4Ewe0xdPDzdzCRKRCKbCISJW1escJnv54G7kFJfh712L64Aj6tg8yuywRqQQKLCJS5RSW2Hll5S4+2HgIgKgmdXlrWBSN62kKSKS6cvqc6bp16xg0aBChoaFYLBaWL19+1W3WrFlDly5dsFqttGzZknnz5l3UJikpiWbNmuHl5UV0dDSbN292tjQRqQEOns7nnrc3lIaVP97anMV/jFFYEanmnA4s+fn5REREkJSUdE3tMzIyGDhwIH369CEtLY3x48fzyCOP8MUXX5S2WbRoEQkJCUyZMoWUlBQiIiKIi4vj5MmTzpYnItXYZ9uOc8db69lxzEa92rV4/6GbmDSgHbXcdb2KSHVnMQzDKPfGFgvLli0jPj7+sm2eeeYZVq5cyY4dO0rXDR06lOzsbFavXg1AdHQ0N910E3PmzAHA4XAQFhbGmDFjmDhx4lXrsNls+Pv7k5OTg5+fX3mHIyIuqqDYzouf/cT8TYcBuKlZPWYPiyLE39vkykTkejhz/K70/5Zs3LiR2NjYMuvi4uLYuHEjAEVFRWzZsqVMGzc3N2JjY0vb/FphYSE2m63MIiLV0/5TecQnfc/8TYexWGB0n5YsePRmhRWRGqbSA0tmZiZBQWWv2g8KCsJms3HhwgVOnz6N3W6/ZJvMzMxL9pmYmIi/v3/pEhYWVmn1i4h5lqUeZdBb69mdmUt9H08+/EN3noprg4emgERqnCr5rp80aRI5OTmly5EjR8wuSUQq0IUiOxM+3soTi7ZyvshOTPP6rBrXi16tGphdmoiYpNI/1hwcHExWVlaZdVlZWfj5+eHt7Y27uzvu7u6XbBMcHHzJPq1WK1artdJqFhHz7MvKZdT8FPZm5WGxwNjftmLsba1wd7OYXZqImKjSz7DExMSQnJxcZt1XX31FTEwMAJ6ennTt2rVMG4fDQXJycmkbEakZlvx4hEFz1rM3K48GvlY+ejiaJ/q2VlgREefPsOTl5ZGenl76OCMjg7S0NAICAmjSpAmTJk3i2LFjfPjhhwD86U9/Ys6cOUyYMIE//OEPfPPNNyxevJiVK1eW9pGQkMCIESPo1q0b3bt3Z+bMmeTn5zNy5MgKGKKIuLr8whKeX7GDpSnHAOjVKpAZ90XSwFdnUkXkZ04Hlh9//JE+ffqUPk5ISABgxIgRzJs3jxMnTnD48OHS58PDw1m5ciVPPPEEs2bNonHjxvz9738nLi6utM2QIUM4deoUkydPJjMzk8jISFavXn3RhbgiUv3szrQx6qMU9p/Kx80CCX1b83+9W+Kmsyoi8j+u6z4srkL3YRGpegzDYOG/j/DCv3ZSWOIgyM/K7KFRRDevb3ZpInKDOHP81ncJicgNl1tQzLPLdvDp1uMA9G7TgDcGR1C/jqaAROTSFFhE5IbacSyH0fNTOHjmPO5uFibEteHRXs01BSQiV6TAIiI3hGEY/POHQ7z02S6K7A5C/b14a3gXujatZ3ZpIlIFKLCISKWzFRQz8ZNtrNr+892rY9sFMX1wZ+rW9jS5MhGpKhRYRKRSbT2SzegFKRw5e4Fa7hae6d+Wh3uGY7FoCkhErp0Ci4hUCsMweP/7gyR+votiu0Hjet7MGd6FyLC6ZpcmIlWQAouIVLjs80U8/fE2vvrp56/c6N8hmFfv7Yy/dy2TKxORqkqBRUQqVMrhc4yZn8qx7At4urvx/wa248GYppoCEpHrosAiIhXC4TD4+/oDvLZ6DyUOg6b1a5M0vAsdG/mbXZqIVAMKLCJy3c7mF/HUkq18s/skAHd0DiHx7k74emkKSEQqhgKLiFyXfx88y9gFqZzIKcDTw40XBnVgWPcwTQGJSIVSYBGRcnE4DN5eu58ZX+3F7jBoHuhD0v1daBei7/MSkYqnwCIiTjudV8gTi9L4bt9pAH4X1YiX4zviY9WvFBGpHPrtIiJO2bj/DOMWpnIytxCvWm68eGdHBndrrCkgEalUCiwick3sDoM536QzK3kvDgNaNaxD0v1daB3ka3ZpIlIDKLCIyFWdzC1g/MI0Nuw/A8Dgro2ZelcHanvqV4iI3Bj6bSMiV7R+32nGL0rldF4RtT3deTm+I3d3aWx2WSJSwyiwiMglldgdzErex5xv0zEMaBvsy5zhXWjZsI7ZpYlIDaTAIiIXycwpYOzCVDZnnAVgWPcmTBnUHq9a7iZXJiI1lQKLiJSxZs9JEhZv5Wx+ET6e7iTe05k7I0LNLktEajgFFhEBoNju4I0v9zJ37X4A2of4kXR/F8IDfUyuTEREgUVEgOPZFxizIJUth84B8GBMU569vZ2mgETEZSiwiNRwX/+UxVMfbyX7fDG+Vg9evbczt3cKMbssEZEyFFhEaqiiEgevrd7N39dnANC5sT9zhnWhSf3aJlcmInIxBRaRGujI2fOMXpDK1iPZAPzhlnAmDmiLp4ebuYWJiFyGAotIDbN6RyZPf7yV3IIS/Lw8mD44gn4dgs0uS0TkihRYRGqIwhI7iat2M2/DQQCimtTlrWFRNK6nKSARcX0KLCI1wKEz+Yyen8r2YzkA/PE3zXkqrg213DUFJCJVgwKLSDX32bbjTPxkO3mFJdSrXYs37ovgt22DzC5LRMQpCiwi1VRBsZ2XPvuJjzYdBuCmZvWYPSyKEH9vkysTEXGeAotINXTgVB6j5qey64QNiwX+r3cLnohtjYemgESkiirXb6+kpCSaNWuGl5cX0dHRbN68+bJte/fujcViuWgZOHBgaZuHHnroouf79+9fntJEarzlqce446317Dpho76PJx+M7M7TcW0VVkSkSnP6DMuiRYtISEhg7ty5REdHM3PmTOLi4tizZw8NGza8qP3SpUspKioqfXzmzBkiIiIYPHhwmXb9+/fn/fffL31stVqdLU2kRrtQZOeFf+1k0Y9HALi5eQCzhkYR5OdlcmUiItfP6cAyY8YMHn30UUaOHAnA3LlzWblyJe+99x4TJ068qH1AQECZxwsXLqR27doXBRar1UpwsO4FIVIe6SdzGfVRKnuycrFYYOxvWzH2tla4u1nMLk1EpEI4dY64qKiILVu2EBsb+98O3NyIjY1l48aN19THu+++y9ChQ/HxKfsNsGvWrKFhw4a0adOGxx9/nDNnzly2j8LCQmw2W5lFpKb6eMtRBr31PXuycmnga+Wjh6N5om9rhRURqVacOsNy+vRp7HY7QUFlPxIZFBTE7t27r7r95s2b2bFjB++++26Z9f379+fuu+8mPDyc/fv38+yzzzJgwAA2btyIu/vF3xabmJjI1KlTnSldpNrJLyzh+RU7WJpyDICeLQN5c0gkDXw1nSoi1c8N/ZTQu+++S6dOnejevXuZ9UOHDi39e6dOnejcuTMtWrRgzZo13HbbbRf1M2nSJBISEkof22w2wsLCKq9wERezO9PGqI9S2H8qHzcLJPRtzeO9W+qsiohUW04FlsDAQNzd3cnKyiqzPisr66rXn+Tn57Nw4UJefPHFq/6c5s2bExgYSHp6+iUDi9Vq1UW5UiMZhsGifx9hyr92UljiIMjPyuyhUUQ3r292aSIilcqpa1g8PT3p2rUrycnJpescDgfJycnExMRccdslS5ZQWFjIAw88cNWfc/ToUc6cOUNISIgz5YlUa3mFJYxbmMbEpdspLHFwa+sGrBrbS2FFRGoEp6eEEhISGDFiBN26daN79+7MnDmT/Pz80k8NPfjggzRq1IjExMQy27377rvEx8dTv37ZX655eXlMnTqVe+65h+DgYPbv38+ECRNo2bIlcXFx1zE0kepj5/EcRs9PJeN0Pu5uFp6Oa8NjvZrjpikgEakhnA4sQ4YM4dSpU0yePJnMzEwiIyNZvXp16YW4hw8fxs2t7ImbPXv2sH79er788suL+nN3d2fbtm188MEHZGdnExoaSr9+/XjppZc07SM1nmEY/HPTYV767CeKShyE+nvx1vAoujYNuPrGIiLViMUwDMPsIq6XzWbD39+fnJwc/Pz8zC5HpELYCoqZ9Ml2Vm4/AUBsu4a8fm8E9Xw8Ta5MRKRiOHP81ncJibigbUezGT0/lcNnz+PhZmHigLY83DMci0VTQCJSMymwiLgQwzCYt+Egr6zaRbHdoHE9b+YM70JkWF2zSxMRMZUCi4iLyDlfzNMfb+XLn36+bUBchyBeuzcCf+9aJlcmImI+BRYRF5B6+Byj56dyLPsCnu5u/L+B7XgwpqmmgERE/kOBRcREDofBu+szeHX1bkocBk3r12bOsC50auxvdmkiIi5FgUXEJOfyi3hyyVa+2X0SgIGdQ0i8uxN+XpoCEhH5NQUWERP8ePAsYxakciKnAE8PNybf0Z77o5toCkhE5DIUWERuIIfDYO66/bzx5V7sDoPmgT7MGd6F9qG6f5CIyJUosIjcIKfzCklYvJV1e08BEB8Zysu/60Qdq96GIiJXo9+UIjfADwfOMHZBKidzC/Gq5caLd3ZkcLfGmgISEblGCiwilcjuMEj6Np2ZX+/FYUDLhnVIGt6FNsG+ZpcmIlKlKLCIVJKTuQU8sSiN79PPAHBv18a8eFcHanvqbSci4iz95hSpBN+nn2bcwjRO5xXiXcudl+M7ck/XxmaXJSJSZSmwiFSgEruD2cn7eOvbdAwD2gT5knR/F1o2rGN2aSIiVZoCi0gFybIVMGZBKpszzgIwrHsYUwZ1wKuWu8mViYhUfQosIhVgzZ6TJCzeytn8Inw83Xnl7k7cFdnI7LJERKoNBRaR61Bid/DGV3t5e81+ANqH+DFneBTNG2gKSESkIimwiJTT8ewLjF2Qyo+HzgHw+5ub8v8GttMUkIhIJVBgESmH5F1ZPLlkK9nni/G1evDqvZ25vVOI2WWJiFRbCiwiTigqcfD6F7v523cZAHRu7M+cYV1oUr+2yZWJiFRvCiwi1+jI2fOMWZBK2pFsAEbe0oyJA9pi9dAUkIhIZVNgEbkGX+zM5OklW7EVlODn5cHrgyOI6xBsdlkiIjWGAovIFRSW2ElctZt5Gw4CEBlWlznDo2hcT1NAIiI3kgKLyGUcOpPP6PmpbD+WA8Bjv2nO03FtqOXuZnJlIiI1jwKLyCWs3HaCiZ9sI7ewhLq1azHjvgh+2zbI7LJERGosBRaR/1FQbOfllT/xzx8OA9CtaT1mD4sitK63yZWJiNRsCiwi/3HgVB6j5qey64QNgP/r3YKEvq3x0BSQiIjpFFhEgBVpx3h26Xbyi+zU9/FkxpBIbm3dwOyyRETkPxRYpEa7UGRn6qc7WfjvIwDc3DyAWUOjCPLzMrkyERH5XwosUmOln8xl1Eep7MnKxWKBMb9txbjbWuHuZjG7NBER+RUFFqmRPt5ylOeX7+BCsZ3AOlZmDY3klpaBZpclIiKXUa6rCZOSkmjWrBleXl5ER0ezefPmy7adN28eFoulzOLlVfZ0u2EYTJ48mZCQELy9vYmNjWXfvn3lKU3kis4XlfDk4q08tWQrF4rt3NKyPqvG9VRYERFxcU4HlkWLFpGQkMCUKVNISUkhIiKCuLg4Tp48edlt/Pz8OHHiROly6NChMs+/9tprzJ49m7lz57Jp0yZ8fHyIi4ujoKDA+RGJXMaezFzunPM9n6Qcxc0CT/ZtzYd/iKahr65XERFxdU4HlhkzZvDoo48ycuRI2rdvz9y5c6lduzbvvffeZbexWCwEBweXLkFB/70Bl2EYzJw5k+eee4677rqLzp078+GHH3L8+HGWL19erkGJ/C/DMFi4+TB3zllP+sk8gvyszH/0ZsboehURkSrDqcBSVFTEli1biI2N/W8Hbm7ExsaycePGy26Xl5dH06ZNCQsL46677mLnzp2lz2VkZJCZmVmmT39/f6Kjoy/bZ2FhITabrcwicil5hSWMX5TGxKXbKSxxcGvrBqwa24ubm9c3uzQREXGCU4Hl9OnT2O32MmdIAIKCgsjMzLzkNm3atOG9995jxYoV/POf/8ThcNCjRw+OHj0KULqdM30mJibi7+9fuoSFhTkzDKkhdh7P4c631rMi7Tjubhae6d+W9x+6ifp1rGaXJiIiTqr0W3jGxMTw4IMPEhkZya233srSpUtp0KABf/3rX8vd56RJk8jJySldjhw5UoEVS1VnGAb/+OEQv/vLBg6czifE34tFj93M471b4KYpIBGRKsmpjzUHBgbi7u5OVlZWmfVZWVkEBwdfUx+1atUiKiqK9PR0gNLtsrKyCAkJKdNnZGTkJfuwWq1YrfpfslzMVlDMpKXbWbntBAC3tW3I9MER1PPxNLkyERG5Hk6dYfH09KRr164kJyeXrnM4HCQnJxMTE3NNfdjtdrZv314aTsLDwwkODi7Tp81mY9OmTdfcpwjA9qM53DF7PSu3ncDDzcJzA9vx9xHdFFZERKoBp28cl5CQwIgRI+jWrRvdu3dn5syZ5OfnM3LkSAAefPBBGjVqRGJiIgAvvvgiN998My1btiQ7O5vXX3+dQ4cO8cgjjwA/f4Jo/PjxvPzyy7Rq1Yrw8HCef/55QkNDiY+Pr7iRSrVlGAYfbDjIK6t2U2R30KiuN3OGRxHVpJ7ZpYmISAVxOrAMGTKEU6dOMXnyZDIzM4mMjGT16tWlF80ePnwYN7f/nrg5d+4cjz76KJmZmdSrV4+uXbuyYcMG2rdvX9pmwoQJ5Ofn89hjj5GdnU3Pnj1ZvXr1RTeYE/m1nPPFTPhkK1/s/Hmasl/7IF6/NwL/2rVMrkxERCqSxTAMw+wirpfNZsPf35+cnBz8/PzMLkdukNTD5xizIJWj5y7g6e7Gs7e3ZUSPZlgsurBWRKQqcOb4re8SkirHMAzeXZ/BtM93U+IwaBJQm6ThXejU2N/s0kREpJIosEiVci6/iKeWbCV5989fBTGwUwiJ93TCz0tTQCIi1ZkCi1QZPx48y9gFqRzPKcDTw43Jd7Tn/ugmmgISEakBFFjE5TkcBnPX7eeNL/didxiEB/owZ3gUHUI1BSQiUlMosIhLO5NXSMLirazdewqAuyJD+fPvOlHHqpeuiEhNot/64rI2HTjD2IWpZNkKsXq48eJdHbivW5imgEREaiAFFnE5dofBX75N582v9+IwoGXDOiQN70KbYF+zSxMREZMosIhLOZVbyPhFqXyffgaAe7o05qX4DtT21EtVRKQm01FAXMb36acZtzCN03mFeNdy56X4jtzbtbHZZYmIiAtQYBHT2R0Gs5L38dY3+zAMaBPkS9L9UbRsqCkgERH5mQKLmCrLVsC4han8cOAsAENvCmPKoA54e7qbXJmIiLgSBRYxzdq9p0hYlMaZ/CJ8PN155e5O3BXZyOyyRETEBSmwyA1XYnfwxld7eXvNfgDahfiRNDyK5g3qmFyZiIi4KgUWuaGOZ19g7IJUfjx0DoAHbm7CcwPb41VLU0AiInJ5Cixyw3yzO4uExVvJPl+Mr9WDxHs6cUfnULPLEhGRKkCBRSpdsd3B61/s4Z11BwDo1MifOcOjaFrfx+TKRESkqlBgkUp19Nx5Rs9PJe1INgAP9WjGpNvbYvXQFJCIiFw7BRapNF/szOTpJVuxFZTg5+XB64MjiOsQbHZZIiJSBSmwSIUrKnGQ+Pku3v/+IACRYXV5a1gUYQG1zS1MRESqLAUWqVCHz5xn9IIUth3NAeDRXuE8HdcWTw83kysTEZGqTIFFKsyq7Sd45uNt5BaWULd2Ld4YHMFt7YLMLktERKoBBRa5bgXFdv68chf/+OEQAN2a1mP2sChC63qbXJmIiFQXCixyXTJO5zPqoxR+OmED4PHeLUjo25pa7poCEhGRiqPAIuW2Iu0Yzy7dTn6RnQAfT2bcF0HvNg3NLktERKohBRZxWkGxnamf7mTB5iMARIcHMHtYFEF+XiZXJiIi1ZUCizgl/WQeoz5KYU9WLhYLjOnTkrG3tcJDU0AiIlKJFFjkmn2y5SjPLd/BhWI7gXWszBwSSc9WgWaXJSIiNYACi1zV+aISJq/YycdbjgJwS8v6vDkkkoa+mgISEZEbQ4FFrmhvVi6jPkph38k83CwwPrY1o/q0xN3NYnZpIiJSgyiwyCUZhsHiH48w5V87KSh20NDXyuxhUdzcvL7ZpYmISA2kwCIXySss4bll21medhyA37RuwIz7IgisYzW5MhERqanK9dGOpKQkmjVrhpeXF9HR0WzevPmybf/2t7/Rq1cv6tWrR7169YiNjb2o/UMPPYTFYimz9O/fvzylyXX66biNO99az/K047i7WZjQvw3zHrpJYUVEREzldGBZtGgRCQkJTJkyhZSUFCIiIoiLi+PkyZOXbL9mzRqGDRvGt99+y8aNGwkLC6Nfv34cO3asTLv+/ftz4sSJ0mXBggXlG5GUi2EY/POHQ8T/5XsOnM4nxN+LhY/dzP/1bombrlcRERGTWQzDMJzZIDo6mptuuok5c+YA4HA4CAsLY8yYMUycOPGq29vtdurVq8ecOXN48MEHgZ/PsGRnZ7N8+XLnRwDYbDb8/f3JycnBz8+vXH3UZLkFxUxcup2V204AcFvbhkwfHEE9H0+TKxMRkerMmeO3U2dYioqK2LJlC7Gxsf/twM2N2NhYNm7ceE19nD9/nuLiYgICAsqsX7NmDQ0bNqRNmzY8/vjjnDlz5rJ9FBYWYrPZyixSPtuP5nDHW+tZue0EHm4W/t/t7fj7iG4KKyIi4lKcCiynT5/GbrcTFBRUZn1QUBCZmZnX1MczzzxDaGhomdDTv39/PvzwQ5KTk3n11VdZu3YtAwYMwG63X7KPxMRE/P39S5ewsDBnhiH8PAU07/sM7nl7A4fOnKdRXW8W/ymGR3/THItFU0AiIuJabuinhKZNm8bChQtZs2YNXl7/venY0KFDS//eqVMnOnfuTIsWLVizZg233XbbRf1MmjSJhISE0sc2m02hxQk5F4p55uNtrN75c8js1z6I1++NwL92LZMrExERuTSnAktgYCDu7u5kZWWVWZ+VlUVwcPAVt50+fTrTpk3j66+/pnPnzlds27x5cwIDA0lPT79kYLFarVit+tRKeaQdyWb0/BSOnrtALXcLz97ejod6NNNZFRERcWlOTQl5enrStWtXkpOTS9c5HA6Sk5OJiYm57HavvfYaL730EqtXr6Zbt25X/TlHjx7lzJkzhISEOFOeXIFhGPz9uwPc+/YGjp67QJOA2nzyeA9G3hKusCIiIi7P6SmhhIQERowYQbdu3ejevTszZ84kPz+fkSNHAvDggw/SqFEjEhMTAXj11VeZPHky8+fPp1mzZqXXutSpU4c6deqQl5fH1KlTueeeewgODmb//v1MmDCBli1bEhcXV4FDrbmyzxfx1JKtfL3r54+e394pmGn3dMbPS1NAIiJSNTgdWIYMGcKpU6eYPHkymZmZREZGsnr16tILcQ8fPoyb239P3Lz99tsUFRVx7733lulnypQpvPDCC7i7u7Nt2zY++OADsrOzCQ0NpV+/frz00kua9qkAWw6dZcz8VI7nFODp4cbzd7TngegmOqsiIiJVitP3YXFFug/LxRwOg3e+O8DrX+zB7jAID/RhzvAoOoT6m12aiIgI4NzxW98lVA2dySvkySVbWbPnFAB3RoTyyt2dqGPV7hYRkapJR7BqZtOBM4xdmEqWrRCrhxtT7+zAkJvCNAUkIiJVmgJLNWF3GPzl23Te/HovDgNaNPAh6f4utA3WFJmIiFR9CizVwKncQp5YlMb69NMA3NOlMS/Fd6C2p3aviIhUDzqiVXEb0k8zblEap3IL8a7lzkvxHbm3a2OzyxIREalQCixVlN1hMCt5H299sw/DgNZBdUga3oVWQb5mlyYiIlLhFFiqoCxbAeMWpvLDgbMADL0pjCmDOuDt6W5yZSIiIpVDgaWKWbf3FE8sSuNMfhE+nu68cncn7opsZHZZIiIilUqBpYoosTt48+u9/GXNfgwD2oX4kTQ8iuYN6phdmoiISKVTYKkCTuRcYOyCVP598BwA90c34fk72uNVS1NAIiJSMyiwuLhvd58kYXEa584XU8fqwbR7OnFH51CzyxIREbmhFFhcVLHdwfQv9vDXdQcA6NTInznDo2ha38fkykRERG48BRYXdPTcecYsSCX1cDYAD/VoxqTb22L10BSQiIjUTAosLubLnZk8/fE2ci4U4+flwWv3RtC/Y7DZZYmIiJhKgcVFFJU4SPx8F+9/fxCAiLC6zBkWRVhAbXMLExERcQEKLC7g8JnzjF6QwrajOQA82iucp+Pa4unhZnJlIiIirkGBxWSfbz/BhI+3kVtYQt3atZh+bwSx7YPMLktERMSlKLCYpKDYziurdvHhxkMAdG1aj9nDomhU19vkykRERFyPAosJMk7nM3p+CjuP2wD4060teLJfa2q5awpIRETkUhRYbrB/bT3Os0u3k1dYQoCPJzPui6B3m4ZmlyUiIuLSFFhukIJiO1M//YkFmw8D0D08gNlDowj29zK5MhEREdenwHIDpJ/MY/T8FHZn5mKxwOg+LRl3Wys8NAUkIiJyTRRYKtnSlKM8t3wH54vsBNaxMnNIJD1bBZpdloiISJWiwFJJzheVMGXFTpZsOQpAjxb1mTk0koa+mgISERFxlgJLJdiblcuoj1LYdzIPNwuMu601o3/bEnc3i9mliYiIVEkKLBXIMAyW/HiUyf/aQUGxg4a+VmYNjSKmRX2zSxMREanSFFgqSH5hCc8t38Gy1GMA9GoVyJtDIgmsYzW5MhERkapPgaUC7DphY9RHKRw4nY+7m4WEvq15/NYWuGkKSEREpEIosFwHwzCYv/kwUz/9iaISB8F+Xrw1PIqbmgWYXZqIiEi1osBSTrkFxUxaup3Ptp0A4LdtGzJ9cAQBPp4mVyYiIlL9KLCUw45jOYyen8LBM+fxcLMwoX8bHunZXFNAIiIilaRct1pNSkqiWbNmeHl5ER0dzebNm6/YfsmSJbRt2xYvLy86derEqlWryjxvGAaTJ08mJCQEb29vYmNj2bdvX3lKq1SGYfDBhoPc/ZcNHDxznkZ1vVn8pxge+42uVxEREalMTgeWRYsWkZCQwJQpU0hJSSEiIoK4uDhOnjx5yfYbNmxg2LBhPPzww6SmphIfH098fDw7duwobfPaa68xe/Zs5s6dy6ZNm/Dx8SEuLo6CgoLyj6yC5Vwo5vF/pjDlXzspsjvo2z6IVWN70aVJPbNLExERqfYshmEYzmwQHR3NTTfdxJw5cwBwOByEhYUxZswYJk6ceFH7IUOGkJ+fz2effVa67uabbyYyMpK5c+diGAahoaE8+eSTPPXUUwDk5OQQFBTEvHnzGDp06FVrstls+Pv7k5OTg5+fnzPDuSZpR7IZPT+Fo+cuUMvdwqQB7Rh5SzMsFp1VERERKS9njt9OnWEpKipiy5YtxMbG/rcDNzdiY2PZuHHjJbfZuHFjmfYAcXFxpe0zMjLIzMws08bf35/o6OjL9llYWIjNZiuzVAbDMPj7dwcYPHcDR89dICzAm4//1IM/9AxXWBEREbmBnAosp0+fxm63ExQUVGZ9UFAQmZmZl9wmMzPziu1/+dOZPhMTE/H39y9dwsLCnBnGNdt+LIeXV+6i2G5we6dgVo7tRURY3Ur5WSIiInJ5VfJTQpMmTSIhIaH0sc1mq5TQ0rlxXcbHtqK+jycP3NxUZ1VERERM4lRgCQwMxN3dnaysrDLrs7KyCA4OvuQ2wcHBV2z/y59ZWVmEhISUaRMZGXnJPq1WK1brjbnl/fjY1jfk54iIiMjlOTUl5OnpSdeuXUlOTi5d53A4SE5OJiYm5pLbxMTElGkP8NVXX5W2Dw8PJzg4uEwbm83Gpk2bLtuniIiI1CxOTwklJCQwYsQIunXrRvfu3Zk5cyb5+fmMHDkSgAcffJBGjRqRmJgIwLhx47j11lt54403GDhwIAsXLuTHH3/knXfeAcBisTB+/HhefvllWrVqRXh4OM8//zyhoaHEx8dX3EhFRESkynI6sAwZMoRTp04xefJkMjMziYyMZPXq1aUXzR4+fBg3t/+euOnRowfz58/nueee49lnn6VVq1YsX76cjh07lraZMGEC+fn5PPbYY2RnZ9OzZ09Wr16Nl5dXBQxRREREqjqn78Piiir7PiwiIiJS8SrtPiwiIiIiZlBgEREREZenwCIiIiIuT4FFREREXJ4Ci4iIiLg8BRYRERFxeQosIiIi4vIUWERERMTlKbCIiIiIy3P61vyu6Jeb9dpsNpMrERERkWv1y3H7Wm66Xy0CS25uLgBhYWEmVyIiIiLOys3Nxd/f/4ptqsV3CTkcDo4fP46vry8Wi6VC+7bZbISFhXHkyJFq+T1F1X18UP3HqPFVfdV9jNV9fFD9x1hZ4zMMg9zcXEJDQ8t8cfKlVIszLG5ubjRu3LhSf4afn1+1fBH+orqPD6r/GDW+qq+6j7G6jw+q/xgrY3xXO7PyC110KyIiIi5PgUVERERcngLLVVitVqZMmYLVajW7lEpR3ccH1X+MGl/VV93HWN3HB9V/jK4wvmpx0a2IiIhUbzrDIiIiIi5PgUVERERcngKLiIiIuDwFFhEREXF5NTKwJCUl0axZM7y8vIiOjmbz5s1XbL9kyRLatm2Ll5cXnTp1YtWqVWWeNwyDyZMnExISgre3N7Gxsezbt68yh3BFzozvb3/7G7169aJevXrUq1eP2NjYi9o/9NBDWCyWMkv//v0rexiX5cz45s2bd1HtXl5eZdq42v4D58bYu3fvi8ZosVgYOHBgaRtX2ofr1q1j0KBBhIaGYrFYWL58+VW3WbNmDV26dMFqtdKyZUvmzZt3URtn39eVxdnxLV26lL59+9KgQQP8/PyIiYnhiy++KNPmhRdeuGj/tW3bthJHcXnOjm/NmjWXfH1mZmaWaecq+w+cH+Ol3l8Wi4UOHTqUtnGlfZiYmMhNN92Er68vDRs2JD4+nj179lx1O7OPhTUusCxatIiEhASmTJlCSkoKERERxMXFcfLkyUu237BhA8OGDePhhx8mNTWV+Ph44uPj2bFjR2mb1157jdmzZzN37lw2bdqEj48PcXFxFBQU3KhhlXJ2fGvWrGHYsGF8++23bNy4kbCwMPr168exY8fKtOvfvz8nTpwoXRYsWHAjhnMRZ8cHP9+Z8X9rP3ToUJnnXWn/gfNjXLp0aZnx7dixA3d3dwYPHlymnavsw/z8fCIiIkhKSrqm9hkZGQwcOJA+ffqQlpbG+PHjeeSRR8oc1Mvzuqgszo5v3bp19O3bl1WrVrFlyxb69OnDoEGDSE1NLdOuQ4cOZfbf+vXrK6P8q3J2fL/Ys2dPmfobNmxY+pwr7T9wfoyzZs0qM7YjR44QEBBw0XvQVfbh2rVrGTVqFD/88ANfffUVxcXF9OvXj/z8/Mtu4xLHQqOG6d69uzFq1KjSx3a73QgNDTUSExMv2f6+++4zBg4cWGZddHS08cc//tEwDMNwOBxGcHCw8frrr5c+n52dbVitVmPBggWVMIIrc3Z8v1ZSUmL4+voaH3zwQem6ESNGGHfddVdFl1ouzo7v/fffN/z9/S/bn6vtP8O4/n345ptvGr6+vkZeXl7pOlfah/8LMJYtW3bFNhMmTDA6dOhQZt2QIUOMuLi40sfX+29WWa5lfJfSvn17Y+rUqaWPp0yZYkRERFRcYRXkWsb37bffGoBx7ty5y7Zx1f1nGOXbh8uWLTMsFotx8ODB0nWuug8NwzBOnjxpAMbatWsv28YVjoU16gxLUVERW7ZsITY2tnSdm5sbsbGxbNy48ZLbbNy4sUx7gLi4uNL2GRkZZGZmlmnj7+9PdHT0ZfusLOUZ36+dP3+e4uJiAgICyqxfs2YNDRs2pE2bNjz++OOcOXOmQmu/FuUdX15eHk2bNiUsLIy77rqLnTt3lj7nSvsPKmYfvvvuuwwdOhQfH58y611hH5bH1d6DFfFv5kocDge5ubkXvQf37dtHaGgozZs35/777+fw4cMmVVg+kZGRhISE0LdvX77//vvS9dVt/8HP78HY2FiaNm1aZr2r7sOcnByAi15z/8sVjoU1KrCcPn0au91OUFBQmfVBQUEXzaf+IjMz84rtf/nTmT4rS3nG92vPPPMMoaGhZV50/fv358MPPyQ5OZlXX32VtWvXMmDAAOx2e4XWfzXlGV+bNm147733WLFiBf/85z9xOBz06NGDo0ePAq61/+D69+HmzZvZsWMHjzzySJn1rrIPy+Ny70GbzcaFCxcq5HXvSqZPn05eXh733Xdf6bro6GjmzZvH6tWrefvtt8nIyKBXr17k5uaaWOm1CQkJYe7cuXzyySd88sknhIWF0bt3b1JSUoCK+b3lSo4fP87nn39+0XvQVfehw+Fg/Pjx3HLLLXTs2PGy7VzhWFgtvq1ZKsa0adNYuHAha9asKXNh6tChQ0v/3qlTJzp37kyLFi1Ys2YNt912mxmlXrOYmBhiYmJKH/fo0YN27drx17/+lZdeesnEyirHu+++S6dOnejevXuZ9VV5H9Yk8+fPZ+rUqaxYsaLMNR4DBgwo/Xvnzp2Jjo6madOmLF68mIcfftiMUq9ZmzZtaNOmTenjHj16sH//ft58803+8Y9/mFhZ5fjggw+oW7cu8fHxZda76j4cNWoUO3bsMO16GmfUqDMsgYGBuLu7k5WVVWZ9VlYWwcHBl9wmODj4iu1/+dOZPitLecb3i+nTpzNt2jS+/PJLOnfufMW2zZs3JzAwkPT09Ouu2RnXM75f1KpVi6ioqNLaXWn/wfWNMT8/n4ULF17TLz+z9mF5XO496Ofnh7e3d4W8LlzBwoULeeSRR1i8ePFFp95/rW7durRu3bpK7L9L6d69e2nt1WX/wc+fknnvvff4/e9/j6en5xXbusI+HD16NJ999hnffvstjRs3vmJbVzgW1qjA4unpSdeuXUlOTi5d53A4SE5OLvO/8P8VExNTpj3AV199Vdo+PDyc4ODgMm1sNhubNm26bJ+VpTzjg5+v7H7ppZdYvXo13bp1u+rPOXr0KGfOnCEkJKRC6r5W5R3f/7Lb7Wzfvr20dlfaf3B9Y1yyZAmFhYU88MADV/05Zu3D8rjae7AiXhdmW7BgASNHjmTBggVlPo5+OXl5eezfv79K7L9LSUtLK629Ouy/X6xdu5b09PRr+k+DmfvQMAxGjx7NsmXL+OabbwgPD7/qNi5xLKyQS3erkIULFxpWq9WYN2+e8dNPPxmPPfaYUbduXSMzM9MwDMP4/e9/b0ycOLG0/ffff294eHgY06dPN3bt2mVMmTLFqFWrlrF9+/bSNtOmTTPq1q1rrFixwti2bZtx1113GeHh4caFCxdcfnzTpk0zPD09jY8//tg4ceJE6ZKbm2sYhmHk5uYaTz31lLFx40YjIyPD+Prrr40uXboYrVq1MgoKClx+fFOnTjW++OILY//+/caWLVuMoUOHGl5eXsbOnTtL27jS/jMM58f4i549expDhgy5aL2r7cPc3FwjNTXVSE1NNQBjxowZRmpqqnHo0CHDMAxj4sSJxu9///vS9gcOHDBq165tPP3008auXbuMpKQkw93d3Vi9enVpm6v9m7ny+D766CPDw8PDSEpKKvMezM7OLm3z5JNPGmvWrDEyMjKM77//3oiNjTUCAwONkydPuvz43nzzTWP58uXGvn37jO3btxvjxo0z3NzcjK+//rq0jSvtP8Nwfoy/eOCBB4zo6OhL9ulK+/Dxxx83/P39jTVr1pR5zZ0/f760jSseC2tcYDEMw3jrrbeMJk2aGJ6enkb37t2NH374ofS5W2+91RgxYkSZ9osXLzZat25teHp6Gh06dDBWrlxZ5nmHw2E8//zzRlBQkGG1Wo3bbrvN2LNnz40YyiU5M76mTZsawEXLlClTDMMwjPPnzxv9+vUzGjRoYNSqVcto2rSp8eijj5r2i8QwnBvf+PHjS9sGBQUZt99+u5GSklKmP1fbf4bh/Gt09+7dBmB8+eWXF/Xlavvwl4+5/nr5ZUwjRowwbr311ou2iYyMNDw9PY3mzZsb77///kX9Xunf7EZydny33nrrFdsbxs8f4w4JCTE8PT2NRo0aGUOGDDHS09Nv7MD+w9nxvfrqq0aLFi0MLy8vIyAgwOjdu7fxzTffXNSvq+w/wyjfazQ7O9vw9vY23nnnnUv26Ur78FJjA8q8r1zxWGj5T/EiIiIiLqtGXcMiIiIiVZMCi4iIiLg8BRYRERFxeQosIiIi4vIUWERERMTlKbCIiIiIy1NgEREREZenwCIiIiIuT4FFREREXJ4Ci4iIiLg8BRYRERFxeQosIiIi4vL+PwlOdp9YduMRAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.show(plt.plot(x,y))" ] }, { "cell_type": "markdown", "id": "38e46e04", "metadata": {}, "source": [ "### FROM THING.SOMETHING IMPORT SOMETHING1, SOMETHING2" ] }, { "cell_type": "markdown", "id": "14cde198", "metadata": {}, "source": [ "We can also import several libraries, modules or packages in the same line, like here we do it with plot and show.\n", "\n", "As always, we try to use functions from that library without importing it and as expected it doesn't work." ] }, { "cell_type": "markdown", "id": "ff7597c8", "metadata": {}, "source": [ "### from matplotlib.pyplot import plot, show" ] }, { "cell_type": "code", "execution_count": 16, "id": "78d35ef7", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'plot' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[16], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m plot(x,y)\n", "\u001b[1;31mNameError\u001b[0m: name 'plot' is not defined" ] } ], "source": [ "plot(x,y)" ] }, { "cell_type": "code", "execution_count": 17, "id": "5f6c3977", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'show' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[17], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m show(plot(x,y))\n", "\u001b[1;31mNameError\u001b[0m: name 'show' is not defined" ] } ], "source": [ "show(plot(x,y))" ] }, { "cell_type": "markdown", "id": "12cef953", "metadata": {}, "source": [ "And after importing our modules we create beautiful plot using two different ways." ] }, { "cell_type": "code", "execution_count": 18, "id": "88b9c376", "metadata": {}, "outputs": [], "source": [ "from matplotlib.pyplot import plot, show" ] }, { "cell_type": "code", "execution_count": 19, "id": "17eb034b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGdCAYAAAAxCSikAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABO2ElEQVR4nO3deVyVZf7/8dcB5IAIKKIsior7DqhJmE46oWhmMZW51GROy0xf16hM+5VmNWFlpiaT00xlzeRaLlOaLZSaaToJuOWG4i64wgGU7Zz790cTM+R6ELwP8H4+HvdDz32u++JzeZ/D/fa+7nMfi2EYBiIiIiIuzM3sAkRERESuRoFFREREXJ4Ci4iIiLg8BRYRERFxeQosIiIi4vIUWERERMTlKbCIiIiIy1NgEREREZfnYXYBFcHhcHD8+HF8fX2xWCxmlyMiIiLXwDAMcnNzCQ0Nxc3tyudQqkVgOX78OGFhYWaXISIiIuVw5MgRGjdufMU21SKw+Pr6Aj8P2M/Pz+RqRERE5FrYbDbCwsJKj+NXUi0Cyy/TQH5+fgosIiIiVcy1XM6hi25FRETE5SmwiIiIiMtTYBERERGXp8AiIiIiLk+BRURERFyeAouIiIi4PAUWERERcXkKLCIiIuLyFFhERETE5TkVWBITE7npppvw9fWlYcOGxMfHs2fPnqtut2TJEtq2bYuXlxedOnVi1apVZZ43DIPJkycTEhKCt7c3sbGx7Nu3z7mRiIiISLXlVGBZu3Yto0aN4ocffuCrr76iuLiYfv36kZ+ff9ltNmzYwLBhw3j44YdJTU0lPj6e+Ph4duzYUdrmtddeY/bs2cydO5dNmzbh4+NDXFwcBQUF5R+ZiIiIVBsWwzCM8m586tQpGjZsyNq1a/nNb35zyTZDhgwhPz+fzz77rHTdzTffTGRkJHPnzsUwDEJDQ3nyySd56qmnAMjJySEoKIh58+YxdOjQq9Zhs9nw9/cnJydH3yUkIiJSRThz/L6ua1hycnIACAgIuGybjRs3EhsbW2ZdXFwcGzduBCAjI4PMzMwybfz9/YmOji5t82uFhYXYbLYyi4iIiFQ8u8Ngxpd7mJ1s7qUa5f62ZofDwfjx47nlllvo2LHjZdtlZmYSFBRUZl1QUBCZmZmlz/+y7nJtfi0xMZGpU6eWt3QRERG5Blm2AsYuSGVTxlncLHB7pxBaNqxjSi3lPsMyatQoduzYwcKFCyuynmsyadIkcnJySpcjR47c8BpERESqs7V7TzFg1ndsyjiLj6c7bw6JNC2sQDnPsIwePZrPPvuMdevW0bhx4yu2DQ4OJisrq8y6rKwsgoODS5//ZV1ISEiZNpGRkZfs02q1YrVay1O6iIiIXEGJ3cEbX+3l7TX7AWgf4sec4VE0b2BeWAEnz7AYhsHo0aNZtmwZ33zzDeHh4VfdJiYmhuTk5DLrvvrqK2JiYgAIDw8nODi4TBubzcamTZtK24iIiEjlO559gaHv/FAaVn5/c1OW/l8P08MKOHmGZdSoUcyfP58VK1bg6+tbeo2Jv78/3t7eADz44IM0atSIxMREAMaNG8ett97KG2+8wcCBA1m4cCE//vgj77zzDgAWi4Xx48fz8ssv06pVK8LDw3n++ecJDQ0lPj6+AocqIiIil5O8K4snl2wl+3wxvlYPpt3TmYGdQ66+4Q3iVGB5++23Aejdu3eZ9e+//z4PPfQQAIcPH8bN7b8nbnr06MH8+fN57rnnePbZZ2nVqhXLly8vc6HuhAkTyM/P57HHHiM7O5uePXuyevVqvLy8yjksERERuRZFJQ5e/2I3f/suA4BOjfyZMzyKpvV9TK6srOu6D4ur0H1YREREnHfk7HnGLEgl7Ug2ACNvacbEAW2xerjfkJ/vzPG73B9rFhERkarri52ZPL1kK7aCEvy8PHh9cARxHYLNLuuyFFhERERqkMISO4mrdjNvw0EAIsPq8tawKMICaptb2FUosIiIiNQQh87kM3p+KtuP/Xyn+kd7hfN0XFs8Pa7rxvc3hAKLiIhIDbBy2wkmfrKN3MIS6tauxRuDI7itXdDVN3QRCiwiIiLVWEGxnZdX/sQ/fzgMQLem9Zg9LIrQut4mV+YcBRYREZFq6sCpPEbNT2XXiZ+/JPj/ercgoW9rPNxdfwro1xRYREREqqEVacd4dul28ovs1PfxZMaQSG5t3cDssspNgUVERKQauVBkZ+qnO1n475+/GDg6PIDZw6II8qvaN2NVYBEREakm0k/mMuqjVPZk5WKxwJjftmLsb1tWySmgX1NgERERqQY+3nKU55fv4EKxncA6VmYNjeSWloFml1VhFFhERESqsPNFJTy/fCefpBwF4JaW9XlzSCQNfav2FNCvKbCIiIhUUXsycxk1P4X0k3m4WWB8bGtG9WmJu5vF7NIqnAKLiIhIFWMYBot/PMLkFTspLHEQ5Gdl1tAobm5e3+zSKo0Ci4iISBWSV1jCc8u2szztOAC3tm7AjPsiqF/HanJllUuBRUREpIr46biN0fNTOHA6H3c3C0/1a8Mff9Mct2o4BfRrCiwiIiIuzjAMPtp0mBc/+4miEgch/l68NSyKbs0CzC7thlFgERERcWG2gmImLd3Oym0nALitbUOmD46gno+nyZXdWAosIiIiLmr70RxGzU/h8NnzeLhZmDigLQ/3DMdiqf5TQL+mwCIiIuJiDMPggw0HeWXVborsDhrV9WbO8CiimtQzuzTTKLCIiIi4kJzzxUz4ZCtf7MwCoF/7IF6/NwL/2rVMrsxcCiwiIiIuIvXwOcYsSOXouQvUcrfw7O3teKhHsxo5BfRrCiwiIiImMwyDd9dnMO3z3ZQ4DJoE1GbO8Cg6N65rdmkuQ4FFRETEROfyi3hqyVaSd58EYGCnEBLv6YSfV82eAvo1BRYRERGTbDl0ljHzUzmeU4CnhxuT72jP/dFNNAV0CQosIiIiN5jDYfDXdQeY/uUe7A6D8EAf5gyPokOov9mluSwFFhERkRvoTF4hCYu3snbvKQDuigzlz7/rRB2rDslXon8dERGRG2TTgTOMXZhKlq0Qq4cbL97Vgfu6hWkK6BoosIiIiFQyu8PgL9+m8+bXe3EY0KKBD3+5vyttgn3NLq3KUGARERGpRKdyCxm/KJXv088AcE+XxrwU34HanjoEO0P/WiIiIpXk+/TTjFuYxum8QrxrufNSfEfu7drY7LKqJAUWERGRCmZ3GMxK3sdb3+zDMKBNkC9zhkfRKkhTQOXl5uwG69atY9CgQYSGhmKxWFi+fPkV2z/00ENYLJaLlg4dOpS2eeGFFy56vm3btk4PRkRExGxZtgLu//sPzE7+OawMvSmM5aNuUVi5Tk6fYcnPzyciIoI//OEP3H333VdtP2vWLKZNm1b6uKSkhIiICAYPHlymXYcOHfj666//W5iHTv6IiEjVsnbvKRIWpXEmvwgfT3deubsTd0U2MrusasHpVDBgwAAGDBhwze39/f3x9//vjXCWL1/OuXPnGDlyZNlCPDwIDg52thwRERHTldgdzPhqL39Zsx+AdiF+JA2PonmDOiZXVn3c8NMY7777LrGxsTRt2rTM+n379hEaGoqXlxcxMTEkJibSpEmTS/ZRWFhIYWFh6WObzVapNYuIiFzOiZwLjF2Qyr8PngPggZub8NzA9njVcje5surF6WtYrsfx48f5/PPPeeSRR8qsj46OZt68eaxevZq3336bjIwMevXqRW5u7iX7SUxMLD1z4+/vT1hY2I0oX0REpIxvdmdx+6zv+PfBc/haPZgzPIqX4zsprFQCi2EYRrk3tlhYtmwZ8fHx19Q+MTGRN954g+PHj+Pp6XnZdtnZ2TRt2pQZM2bw8MMPX/T8pc6whIWFkZOTg5+fn9PjEBERcUax3cHrX+zhnXUHAOjUyJ85w6NoWt/H5MqqFpvNhr+//zUdv2/YlJBhGLz33nv8/ve/v2JYAahbty6tW7cmPT39ks9brVasVmtllCkiInJFR8+dZ/T8VNKOZAPwUI9mTLq9LVYPnVWpTDdsSmjt2rWkp6df8ozJr+Xl5bF//35CQkJuQGUiIiLX5oudmdw+6zvSjmTj5+XB3Ae68sKdHRRWbgCnz7Dk5eWVOfORkZFBWloaAQEBNGnShEmTJnHs2DE+/PDDMtu9++67REdH07Fjx4v6fOqppxg0aBBNmzbl+PHjTJkyBXd3d4YNG1aOIYmIiFSsohIHiZ/v4v3vDwIQEVaXOcOiCAuobW5hNYjTgeXHH3+kT58+pY8TEhIAGDFiBPPmzePEiRMcPny4zDY5OTl88sknzJo165J9Hj16lGHDhnHmzBkaNGhAz549+eGHH2jQoIGz5YmIiFSow2fOM3pBCtuO5gDwaK9wno5ri6fHDf3cSo13XRfdugpnLtoRERG5Vqu2n+CZj7eRW1hC3dq1mH5vBLHtg8wuq9pwyYtuRUREqoqCYjt/XrmLf/xwCIBuTesxe1gUoXW9Ta6s5lJgERER+R8Zp/MZ9VEKP534+aakj/duQULf1tRy1xSQmRRYRERE/mNF2jGeXbqd/CI7AT6ezLgvgt5tGppdlqDAIiIiQkGxnamf7mTB5iMAdA8PYPbQKIL9vUyuTH6hwCIiIjVa+sk8Rn2Uwp6sXCwWGNOnJWNva4WHpoBcigKLiIjUWJ9sOcpzy3dwodhOYB0rM4dE0rNVoNllySUosIiISI1zvqiEySt28vGWowD0aFGfmUMjaeirKSBXpcAiIiI1yt6sXEZ9lMK+k3m4WWB8bGtG9WmJu5vF7NLkChRYRESkRjAMg8U/HmHKv3ZSUOygoa+VWUOjiGlR3+zS5BoosIiISLWXV1jCc8u2szztOAC9WgXy5pBIAutYTa5MrpUCi4iIVGs/Hbcxen4KB07n4+5m4cl+rfnTb1rgpimgKkWBRUREqiXDMJi/+TBTP/2JohIHIf5ezB4WxU3NAswuTcpBgUVERKqd3IJiJi7dzsptJwD4bduGvDE4gno+niZXJuWlwCIiItXK9qM5jF6QwqEz5/Fws/BM/7Y83DNcU0BVnAKLiIhUC4Zh8MGGg7yyajdFdgeN6nrz1vAoujSpZ3ZpUgEUWEREpMrLuVDMMx9vY/XOTAD6tQ/i9Xsj8K9dy+TKpKIosIiISJWWdiSb0fNTOHruArXcLTx7ezse6tEMi0VTQNWJAouIiFRJhmHw7voMpn2+mxKHQZOA2swZHkXnxnXNLk0qgQKLiIhUOdnni3hqyVa+3nUSgNs7BTPtns74eWkKqLpSYBERkSply6GzjJmfyvGcAjw93Hj+jvY8EN1EU0DVnAKLiIhUCQ6HwTvfHeD1L/ZgdxiEB/owZ3gUHUL9zS5NbgAFFhERcXln8gp5cslW1uw5BcCdEaG8cncn6lh1GKsptKdFRMSlbTpwhrELU8myFWL1cGPqnR0YclOYpoBqGAUWERFxSXaHwV++TefNr/fiMKBFAx+S7u9C22A/s0sTEyiwiIiIyzmVW8gTi9JYn34agLu7NOKluzrioymgGkt7XkREXMqG9NOMW5TGqdxCvGu58+JdHRjcLczsssRkCiwiIuIS7A6DWcn7eOubfRgGtA6qQ9LwLrQK8jW7NHEBCiwiImK6LFsB4xam8sOBswAM6RbGC3d2wNvT3eTKxFUosIiIiKnW7T3FE4vSOJNfRG1Pd175XSfioxqZXZa4GAUWERExRYndwZtf7+Uva/ZjGNAuxI+k4VE0b1DH7NLEBSmwiIjIDXci5wJjF6Ty74PnALg/ugnP39Eer1qaApJLc3N2g3Xr1jFo0CBCQ0OxWCwsX778iu3XrFmDxWK5aMnMzCzTLikpiWbNmuHl5UV0dDSbN292tjQREakCvt19kttnfce/D56jjtWDOcOj+PPvOimsyBU5HVjy8/OJiIggKSnJqe327NnDiRMnSpeGDRuWPrdo0SISEhKYMmUKKSkpREREEBcXx8mTJ50tT0REXFSx3UHiql2MnPdvzp0vpmMjP1aO7ckdnUPNLk2qAKenhAYMGMCAAQOc/kENGzakbt26l3xuxowZPProo4wcORKAuXPnsnLlSt577z0mTpzo9M8SERHXcvTcecYsSCX1cDYAD/VoxqTb22L10FkVuTZOn2Epr8jISEJCQujbty/ff/996fqioiK2bNlCbGzsf4tycyM2NpaNGzdesq/CwkJsNluZRUREXNOXOzMZOHs9qYez8fXyYO4DXXjhzg4KK+KUSg8sISEhzJ07l08++YRPPvmEsLAwevfuTUpKCgCnT5/GbrcTFBRUZrugoKCLrnP5RWJiIv7+/qVLWJjugCgi4mqKShxM/XQnj/1jCzkXiokIq8uqsb3o3zHE7NKkCqr0Twm1adOGNm3alD7u0aMH+/fv58033+Qf//hHufqcNGkSCQkJpY9tNptCi4iICzl85jyjF6Sw7WgOAI/0DGdC/7Z4etywE/tSzZjysebu3buzfv16AAIDA3F3dycrK6tMm6ysLIKDgy+5vdVqxWq1VnqdIiLivM+3n2DCx9vILSzB37sWbwyOILZ90NU3FLkCU6JuWloaISE/nxL09PSka9euJCcnlz7vcDhITk4mJibGjPJERKQcCortTF6xg8c/SiG3sISuTeuxalwvhRWpEE6fYcnLyyM9Pb30cUZGBmlpaQQEBNCkSRMmTZrEsWPH+PDDDwGYOXMm4eHhdOjQgYKCAv7+97/zzTff8OWXX5b2kZCQwIgRI+jWrRvdu3dn5syZ5Ofnl35qSEREXFvG6XxGz09h5/GfPwTxp1tb8GS/1tRy1xSQVAynA8uPP/5Inz59Sh//ci3JiBEjmDdvHidOnODw4cOlzxcVFfHkk09y7NgxateuTefOnfn666/L9DFkyBBOnTrF5MmTyczMJDIyktWrV190Ia6IiLief209zrNLt5NXWEKAjycz7ougd5uGV99QxAkWwzAMs4u4XjabDX9/f3JycvDz8zO7HBGRGqGg2M7UT39iweaf/5PaPTyA2UOjCPb3MrkyqSqcOX7ru4RERMRp6SfzGD0/hd2ZuVgsMLpPS8bd1goPTQFJJVFgERERpyxNOcpzy3dwvshOYB1PZg6JomerQLPLkmpOgUVERK7J+aISpqzYyZItRwHo0aI+M4dE0tBPU0BS+RRYRETkqvZm5TLqoxT2nczDzQLjbmvN6N+2xN3NYnZpUkMosIiIyGUZhsGSH48y+V87KCh20NDXyqyhUcS0qG92aVLDKLCIiMgl5ReW8NzyHSxLPQZAr1aBvDkkksA6utO43HgKLCIicpFdJ2yM+iiFA6fzcXezkNC3NY/f2gI3TQGJSRRYRESklGEYzN98mKmf/kRRiYNgPy/eGh7FTc0CzC5NajgFFhERASC3oJhJS7fz2bYTAPy2bUOmD44gwMfT5MpEFFhERATYcSyH0fNTOHjmPB5uFib0b8MjPZtrCkhchgKLiEgNZhgGH248xJ9X7qLI7qBRXW/eGh5Flyb1zC5NpAwFFhGRGirnQjHPfLyN1TszAejbPojX7+1M3dqaAhLXo8AiIlIDpR3JZvT8FI6eu0AtdwuTBrRj5C3NsFg0BSSuSYFFRKQGMQyDd9dn8Orq3RTbDcICvJkzrAsRYXXNLk3kihRYRERqiOzzRTy1ZBtf78oCYEDHYKbd0xl/71omVyZydQosIiI1wJZD5xgzP4XjOQV4urvx/B3teODmppoCkipDgUVEpBpzOAze+e4Ar3+xB7vDoFn92swZ3oWOjfzNLk3EKQosIiLV1Nn8IhIWp7FmzykA7owI5ZW7O1HHql/9UvXoVSsiUg1tzjjL2AWpZNoKsHq48cKdHRh6U5imgKTKUmAREalGHA6Dv6xJZ8ZXe3EY0LyBD0nDu9AuxM/s0kSuiwKLiEg1cSq3kITFaXy37zQAd0c14qX4jvhoCkiqAb2KRUSqgQ3ppxm3KI1TuYV41XLjpbs6MrhbmNlliVQYBRYRkSrM7jCYnbyP2d/swzCgdVAdkoZ3oVWQr9mliVQoBRYRkSrqpK2AcQvT2HjgDAD3dWvM1Ds74u3pbnJlIhVPgUVEpAr6bt8pnliUxum8Imp7uvPn33Xkd1GNzS5LpNIosIiIVCEldgczv95H0pp0DAPaBvuSdH8XWjSoY3ZpIpVKgUVEpIo4kXOBcQvS2HzwLADDo5sw+Y72eNXSFJBUfwosIiJVwLe7T5KwOI1z54upY/Ug8e5ODIoINbsskRtGgUVExIUV2x1M/2IPf113AICOjfyYM6wLzQJ9TK5M5MZSYBERcVHHsi8wZn4KKYezAXioRzMm3d4Wq4emgKTmUWAREXFBX/2UxVNLtpJzoRhfLw9ev7cz/TuGmF2WiGncnN1g3bp1DBo0iNDQUCwWC8uXL79i+6VLl9K3b18aNGiAn58fMTExfPHFF2XavPDCC1gsljJL27ZtnS1NRKTKKypx8OKnP/Hohz+Sc6GYiMb+rBrbS2FFajynA0t+fj4REREkJSVdU/t169bRt29fVq1axZYtW+jTpw+DBg0iNTW1TLsOHTpw4sSJ0mX9+vXOliYiUqUdOXuewXM38N73GQA83DOcJX/qQVhAbZMrEzGf01NCAwYMYMCAAdfcfubMmWUev/LKK6xYsYJPP/2UqKio/xbi4UFwcLCz5YiIVAurd5zg6Y+3kVtQgr93LaYPjqBv+yCzyxJxGTf8GhaHw0Fubi4BAQFl1u/bt4/Q0FC8vLyIiYkhMTGRJk2aXLKPwsJCCgsLSx/bbLZKrVlEpLIUFNtJXLWLDzYeAqBLk7q8NbwLjep6m1yZiGtxekroek2fPp28vDzuu+++0nXR0dHMmzeP1atX8/bbb5ORkUGvXr3Izc29ZB+JiYn4+/uXLmFh+kZSEal6Dp7O5563N5SGlT/e2pxFf4xRWBG5BIthGEa5N7ZYWLZsGfHx8dfUfv78+Tz66KOsWLGC2NjYy7bLzs6madOmzJgxg4cffvii5y91hiUsLIycnBz8/PycHoeIyI326dbjTFq6nbzCEgJ8PHnjvgj6tGlodlkiN5TNZsPf3/+ajt83bEpo4cKFPPLIIyxZsuSKYQWgbt26tG7dmvT09Es+b7VasVqtlVGmiEilKii28+JnPzF/02EAujcLYPawKIL9vUyuTMS13ZApoQULFjBy5EgWLFjAwIEDr9o+Ly+P/fv3ExKij/GJSPWx/1Qe8UnfM3/TYSwWGPPblsx/NFphReQaOH2GJS8vr8yZj4yMDNLS0ggICKBJkyZMmjSJY8eO8eGHHwI/TwONGDGCWbNmER0dTWZmJgDe3t74+/sD8NRTTzFo0CCaNm3K8ePHmTJlCu7u7gwbNqwixigiYrplqUf5f8t2cL7ITmAdT94cEkmvVg3MLkukynA6sPz444/06dOn9HFCQgIAI0aMYN68eZw4cYLDhw+XPv/OO+9QUlLCqFGjGDVqVOn6X9oDHD16lGHDhnHmzBkaNGhAz549+eGHH2jQQG9mEanaLhTZmbxiB0u2HAUgpnl9Zg2NpKGfzqqIOOO6Lrp1Fc5ctCMicqPszcpl1Ecp7DuZh8UC425rxZjftsLdzWJ2aSIuwSUvuhURqSkMw2DJlqNMXrGDgmIHDXytzBoaSY8WgWaXJlJlKbCIiFSg/MISnl++g6WpxwDo1SqQN4dEElhHn2wUuR4KLCIiFWTXCRuj5qdw4FQ+bhZ4sl8bHr+1BW6aAhK5bgosIiLXyTAMFmw+wtRPd1JY4iDYz4vZw6LoHh5w9Y1F5JoosIiIXIfcgmKeXbaDT7ceB6B3mwbMuC+SAB9PkysTqV4UWEREymnHsRxGz0/h4JnzeLhZeDquDY/2aq4pIJFKoMAiIuIkwzD4xw+HePmzXRTZHTSq683sYVF0bVrP7NJEqi0FFhERJ+RcKGbiJ9v4fMfPd+2ObRfE9MGdqVtbU0AilUmBRUTkGm09ks3oBSkcOXuBWu4WJg5oxx9uaYbFoikgkcqmwCIichWGYfDe9weZ9vkuiu0GYQHezBnWhYiwumaXJlJjKLCIiFxB9vkinlqyja93ZQEwoGMw0+7pjL93LZMrE6lZFFhERC5jy6FzjF2QyrHsC3i6u/HcHe34/c1NNQUkYgIFFhGRX3E4DP723QFe/2IPJQ6DpvVrkzS8Cx0b+ZtdmkiNpcAiIvI/zuYX8eTiNL7dcwqAOzqHkHh3J3y9NAUkYiYFFhGR/9iccZaxC1LJtBVg9XBjyqAODOsepikgERegwCIiNZ7DYfD22v3M+GovdodB8wY+JA3vQrsQP7NLE5H/UGARkRrtdF4hTyxK47t9pwG4O6oRL8V3xMeqX48irkTvSBGpsTbsP824hWmcyi3Eq5YbL97VkcFdG2sKSMQFKbCISI1jdxi89c0+Zifvw2FAq4Z1SLq/C62DfM0uTUQuQ4FFRGqUk7YCxi9KY8P+MwDc160xU+/siLenu8mViciVKLCISI3x3b5TPLEojdN5RdT2dOfl+I7c3aWx2WWJyDVQYBGRaq/E7mDm1/tIWpOOYUDbYF/mDO9Cy4Z1zC5NRK6RAouIVGuZOQWMXZDK5oNnARge3YTJd7THq5amgESqEgUWEam2vt1zkicXb+VsfhF1rB68cncn7owINbssESkHBRYRqXaK7Q6mf7mHv649AECHUD+ShnehWaCPyZWJSHkpsIhItXIs+wJjF6Sy5dA5AEbENGXS7e00BSRSxSmwiEi18dVPWTy1ZCs5F4rx9fLgtXs6M6BTiNlliUgFUGARkSqvqMTBq6t38+76DAAiGvvz1rAuNKlf2+TKRKSiKLCISJV25Ox5Ri9IZeuRbAD+cEs4Ewe0xdPDzdzCRKRCKbCISJW1escJnv54G7kFJfh712L64Aj6tg8yuywRqQQKLCJS5RSW2Hll5S4+2HgIgKgmdXlrWBSN62kKSKS6cvqc6bp16xg0aBChoaFYLBaWL19+1W3WrFlDly5dsFqttGzZknnz5l3UJikpiWbNmuHl5UV0dDSbN292tjQRqQEOns7nnrc3lIaVP97anMV/jFFYEanmnA4s+fn5REREkJSUdE3tMzIyGDhwIH369CEtLY3x48fzyCOP8MUXX5S2WbRoEQkJCUyZMoWUlBQiIiKIi4vj5MmTzpYnItXYZ9uOc8db69lxzEa92rV4/6GbmDSgHbXcdb2KSHVnMQzDKPfGFgvLli0jPj7+sm2eeeYZVq5cyY4dO0rXDR06lOzsbFavXg1AdHQ0N910E3PmzAHA4XAQFhbGmDFjmDhx4lXrsNls+Pv7k5OTg5+fX3mHIyIuqqDYzouf/cT8TYcBuKlZPWYPiyLE39vkykTkejhz/K70/5Zs3LiR2NjYMuvi4uLYuHEjAEVFRWzZsqVMGzc3N2JjY0vb/FphYSE2m63MIiLV0/5TecQnfc/8TYexWGB0n5YsePRmhRWRGqbSA0tmZiZBQWWv2g8KCsJms3HhwgVOnz6N3W6/ZJvMzMxL9pmYmIi/v3/pEhYWVmn1i4h5lqUeZdBb69mdmUt9H08+/EN3noprg4emgERqnCr5rp80aRI5OTmly5EjR8wuSUQq0IUiOxM+3soTi7ZyvshOTPP6rBrXi16tGphdmoiYpNI/1hwcHExWVlaZdVlZWfj5+eHt7Y27uzvu7u6XbBMcHHzJPq1WK1artdJqFhHz7MvKZdT8FPZm5WGxwNjftmLsba1wd7OYXZqImKjSz7DExMSQnJxcZt1XX31FTEwMAJ6ennTt2rVMG4fDQXJycmkbEakZlvx4hEFz1rM3K48GvlY+ejiaJ/q2VlgREefPsOTl5ZGenl76OCMjg7S0NAICAmjSpAmTJk3i2LFjfPjhhwD86U9/Ys6cOUyYMIE//OEPfPPNNyxevJiVK1eW9pGQkMCIESPo1q0b3bt3Z+bMmeTn5zNy5MgKGKKIuLr8whKeX7GDpSnHAOjVKpAZ90XSwFdnUkXkZ04Hlh9//JE+ffqUPk5ISABgxIgRzJs3jxMnTnD48OHS58PDw1m5ciVPPPEEs2bNonHjxvz9738nLi6utM2QIUM4deoUkydPJjMzk8jISFavXn3RhbgiUv3szrQx6qMU9p/Kx80CCX1b83+9W+Kmsyoi8j+u6z4srkL3YRGpegzDYOG/j/DCv3ZSWOIgyM/K7KFRRDevb3ZpInKDOHP81ncJicgNl1tQzLPLdvDp1uMA9G7TgDcGR1C/jqaAROTSFFhE5IbacSyH0fNTOHjmPO5uFibEteHRXs01BSQiV6TAIiI3hGEY/POHQ7z02S6K7A5C/b14a3gXujatZ3ZpIlIFKLCISKWzFRQz8ZNtrNr+892rY9sFMX1wZ+rW9jS5MhGpKhRYRKRSbT2SzegFKRw5e4Fa7hae6d+Wh3uGY7FoCkhErp0Ci4hUCsMweP/7gyR+votiu0Hjet7MGd6FyLC6ZpcmIlWQAouIVLjs80U8/fE2vvrp56/c6N8hmFfv7Yy/dy2TKxORqkqBRUQqVMrhc4yZn8qx7At4urvx/wa248GYppoCEpHrosAiIhXC4TD4+/oDvLZ6DyUOg6b1a5M0vAsdG/mbXZqIVAMKLCJy3c7mF/HUkq18s/skAHd0DiHx7k74emkKSEQqhgKLiFyXfx88y9gFqZzIKcDTw40XBnVgWPcwTQGJSIVSYBGRcnE4DN5eu58ZX+3F7jBoHuhD0v1daBei7/MSkYqnwCIiTjudV8gTi9L4bt9pAH4X1YiX4zviY9WvFBGpHPrtIiJO2bj/DOMWpnIytxCvWm68eGdHBndrrCkgEalUCiwick3sDoM536QzK3kvDgNaNaxD0v1daB3ka3ZpIlIDKLCIyFWdzC1g/MI0Nuw/A8Dgro2ZelcHanvqV4iI3Bj6bSMiV7R+32nGL0rldF4RtT3deTm+I3d3aWx2WSJSwyiwiMglldgdzErex5xv0zEMaBvsy5zhXWjZsI7ZpYlIDaTAIiIXycwpYOzCVDZnnAVgWPcmTBnUHq9a7iZXJiI1lQKLiJSxZs9JEhZv5Wx+ET6e7iTe05k7I0LNLktEajgFFhEBoNju4I0v9zJ37X4A2of4kXR/F8IDfUyuTEREgUVEgOPZFxizIJUth84B8GBMU569vZ2mgETEZSiwiNRwX/+UxVMfbyX7fDG+Vg9evbczt3cKMbssEZEyFFhEaqiiEgevrd7N39dnANC5sT9zhnWhSf3aJlcmInIxBRaRGujI2fOMXpDK1iPZAPzhlnAmDmiLp4ebuYWJiFyGAotIDbN6RyZPf7yV3IIS/Lw8mD44gn4dgs0uS0TkihRYRGqIwhI7iat2M2/DQQCimtTlrWFRNK6nKSARcX0KLCI1wKEz+Yyen8r2YzkA/PE3zXkqrg213DUFJCJVgwKLSDX32bbjTPxkO3mFJdSrXYs37ovgt22DzC5LRMQpCiwi1VRBsZ2XPvuJjzYdBuCmZvWYPSyKEH9vkysTEXGeAotINXTgVB6j5qey64QNiwX+r3cLnohtjYemgESkiirXb6+kpCSaNWuGl5cX0dHRbN68+bJte/fujcViuWgZOHBgaZuHHnroouf79+9fntJEarzlqce446317Dpho76PJx+M7M7TcW0VVkSkSnP6DMuiRYtISEhg7ty5REdHM3PmTOLi4tizZw8NGza8qP3SpUspKioqfXzmzBkiIiIYPHhwmXb9+/fn/fffL31stVqdLU2kRrtQZOeFf+1k0Y9HALi5eQCzhkYR5OdlcmUiItfP6cAyY8YMHn30UUaOHAnA3LlzWblyJe+99x4TJ068qH1AQECZxwsXLqR27doXBRar1UpwsO4FIVIe6SdzGfVRKnuycrFYYOxvWzH2tla4u1nMLk1EpEI4dY64qKiILVu2EBsb+98O3NyIjY1l48aN19THu+++y9ChQ/HxKfsNsGvWrKFhw4a0adOGxx9/nDNnzly2j8LCQmw2W5lFpKb6eMtRBr31PXuycmnga+Wjh6N5om9rhRURqVacOsNy+vRp7HY7QUFlPxIZFBTE7t27r7r95s2b2bFjB++++26Z9f379+fuu+8mPDyc/fv38+yzzzJgwAA2btyIu/vF3xabmJjI1KlTnSldpNrJLyzh+RU7WJpyDICeLQN5c0gkDXw1nSoi1c8N/ZTQu+++S6dOnejevXuZ9UOHDi39e6dOnejcuTMtWrRgzZo13HbbbRf1M2nSJBISEkof22w2wsLCKq9wERezO9PGqI9S2H8qHzcLJPRtzeO9W+qsiohUW04FlsDAQNzd3cnKyiqzPisr66rXn+Tn57Nw4UJefPHFq/6c5s2bExgYSHp6+iUDi9Vq1UW5UiMZhsGifx9hyr92UljiIMjPyuyhUUQ3r292aSIilcqpa1g8PT3p2rUrycnJpescDgfJycnExMRccdslS5ZQWFjIAw88cNWfc/ToUc6cOUNISIgz5YlUa3mFJYxbmMbEpdspLHFwa+sGrBrbS2FFRGoEp6eEEhISGDFiBN26daN79+7MnDmT/Pz80k8NPfjggzRq1IjExMQy27377rvEx8dTv37ZX655eXlMnTqVe+65h+DgYPbv38+ECRNo2bIlcXFx1zE0kepj5/EcRs9PJeN0Pu5uFp6Oa8NjvZrjpikgEakhnA4sQ4YM4dSpU0yePJnMzEwiIyNZvXp16YW4hw8fxs2t7ImbPXv2sH79er788suL+nN3d2fbtm188MEHZGdnExoaSr9+/XjppZc07SM1nmEY/HPTYV767CeKShyE+nvx1vAoujYNuPrGIiLViMUwDMPsIq6XzWbD39+fnJwc/Pz8zC5HpELYCoqZ9Ml2Vm4/AUBsu4a8fm8E9Xw8Ta5MRKRiOHP81ncJibigbUezGT0/lcNnz+PhZmHigLY83DMci0VTQCJSMymwiLgQwzCYt+Egr6zaRbHdoHE9b+YM70JkWF2zSxMRMZUCi4iLyDlfzNMfb+XLn36+bUBchyBeuzcCf+9aJlcmImI+BRYRF5B6+Byj56dyLPsCnu5u/L+B7XgwpqmmgERE/kOBRcREDofBu+szeHX1bkocBk3r12bOsC50auxvdmkiIi5FgUXEJOfyi3hyyVa+2X0SgIGdQ0i8uxN+XpoCEhH5NQUWERP8ePAsYxakciKnAE8PNybf0Z77o5toCkhE5DIUWERuIIfDYO66/bzx5V7sDoPmgT7MGd6F9qG6f5CIyJUosIjcIKfzCklYvJV1e08BEB8Zysu/60Qdq96GIiJXo9+UIjfADwfOMHZBKidzC/Gq5caLd3ZkcLfGmgISEblGCiwilcjuMEj6Np2ZX+/FYUDLhnVIGt6FNsG+ZpcmIlKlKLCIVJKTuQU8sSiN79PPAHBv18a8eFcHanvqbSci4iz95hSpBN+nn2bcwjRO5xXiXcudl+M7ck/XxmaXJSJSZSmwiFSgEruD2cn7eOvbdAwD2gT5knR/F1o2rGN2aSIiVZoCi0gFybIVMGZBKpszzgIwrHsYUwZ1wKuWu8mViYhUfQosIhVgzZ6TJCzeytn8Inw83Xnl7k7cFdnI7LJERKoNBRaR61Bid/DGV3t5e81+ANqH+DFneBTNG2gKSESkIimwiJTT8ewLjF2Qyo+HzgHw+5ub8v8GttMUkIhIJVBgESmH5F1ZPLlkK9nni/G1evDqvZ25vVOI2WWJiFRbCiwiTigqcfD6F7v523cZAHRu7M+cYV1oUr+2yZWJiFRvCiwi1+jI2fOMWZBK2pFsAEbe0oyJA9pi9dAUkIhIZVNgEbkGX+zM5OklW7EVlODn5cHrgyOI6xBsdlkiIjWGAovIFRSW2ElctZt5Gw4CEBlWlznDo2hcT1NAIiI3kgKLyGUcOpPP6PmpbD+WA8Bjv2nO03FtqOXuZnJlIiI1jwKLyCWs3HaCiZ9sI7ewhLq1azHjvgh+2zbI7LJERGosBRaR/1FQbOfllT/xzx8OA9CtaT1mD4sitK63yZWJiNRsCiwi/3HgVB6j5qey64QNgP/r3YKEvq3x0BSQiIjpFFhEgBVpx3h26Xbyi+zU9/FkxpBIbm3dwOyyRETkPxRYpEa7UGRn6qc7WfjvIwDc3DyAWUOjCPLzMrkyERH5XwosUmOln8xl1Eep7MnKxWKBMb9txbjbWuHuZjG7NBER+RUFFqmRPt5ylOeX7+BCsZ3AOlZmDY3klpaBZpclIiKXUa6rCZOSkmjWrBleXl5ER0ezefPmy7adN28eFoulzOLlVfZ0u2EYTJ48mZCQELy9vYmNjWXfvn3lKU3kis4XlfDk4q08tWQrF4rt3NKyPqvG9VRYERFxcU4HlkWLFpGQkMCUKVNISUkhIiKCuLg4Tp48edlt/Pz8OHHiROly6NChMs+/9tprzJ49m7lz57Jp0yZ8fHyIi4ujoKDA+RGJXMaezFzunPM9n6Qcxc0CT/ZtzYd/iKahr65XERFxdU4HlhkzZvDoo48ycuRI2rdvz9y5c6lduzbvvffeZbexWCwEBweXLkFB/70Bl2EYzJw5k+eee4677rqLzp078+GHH3L8+HGWL19erkGJ/C/DMFi4+TB3zllP+sk8gvyszH/0ZsboehURkSrDqcBSVFTEli1biI2N/W8Hbm7ExsaycePGy26Xl5dH06ZNCQsL46677mLnzp2lz2VkZJCZmVmmT39/f6Kjoy/bZ2FhITabrcwicil5hSWMX5TGxKXbKSxxcGvrBqwa24ubm9c3uzQREXGCU4Hl9OnT2O32MmdIAIKCgsjMzLzkNm3atOG9995jxYoV/POf/8ThcNCjRw+OHj0KULqdM30mJibi7+9fuoSFhTkzDKkhdh7P4c631rMi7Tjubhae6d+W9x+6ifp1rGaXJiIiTqr0W3jGxMTw4IMPEhkZya233srSpUtp0KABf/3rX8vd56RJk8jJySldjhw5UoEVS1VnGAb/+OEQv/vLBg6czifE34tFj93M471b4KYpIBGRKsmpjzUHBgbi7u5OVlZWmfVZWVkEBwdfUx+1atUiKiqK9PR0gNLtsrKyCAkJKdNnZGTkJfuwWq1YrfpfslzMVlDMpKXbWbntBAC3tW3I9MER1PPxNLkyERG5Hk6dYfH09KRr164kJyeXrnM4HCQnJxMTE3NNfdjtdrZv314aTsLDwwkODi7Tp81mY9OmTdfcpwjA9qM53DF7PSu3ncDDzcJzA9vx9xHdFFZERKoBp28cl5CQwIgRI+jWrRvdu3dn5syZ5OfnM3LkSAAefPBBGjVqRGJiIgAvvvgiN998My1btiQ7O5vXX3+dQ4cO8cgjjwA/f4Jo/PjxvPzyy7Rq1Yrw8HCef/55QkNDiY+Pr7iRSrVlGAYfbDjIK6t2U2R30KiuN3OGRxHVpJ7ZpYmISAVxOrAMGTKEU6dOMXnyZDIzM4mMjGT16tWlF80ePnwYN7f/nrg5d+4cjz76KJmZmdSrV4+uXbuyYcMG2rdvX9pmwoQJ5Ofn89hjj5GdnU3Pnj1ZvXr1RTeYE/m1nPPFTPhkK1/s/Hmasl/7IF6/NwL/2rVMrkxERCqSxTAMw+wirpfNZsPf35+cnBz8/PzMLkdukNTD5xizIJWj5y7g6e7Gs7e3ZUSPZlgsurBWRKQqcOb4re8SkirHMAzeXZ/BtM93U+IwaBJQm6ThXejU2N/s0kREpJIosEiVci6/iKeWbCV5989fBTGwUwiJ93TCz0tTQCIi1ZkCi1QZPx48y9gFqRzPKcDTw43Jd7Tn/ugmmgISEakBFFjE5TkcBnPX7eeNL/didxiEB/owZ3gUHUI1BSQiUlMosIhLO5NXSMLirazdewqAuyJD+fPvOlHHqpeuiEhNot/64rI2HTjD2IWpZNkKsXq48eJdHbivW5imgEREaiAFFnE5dofBX75N582v9+IwoGXDOiQN70KbYF+zSxMREZMosIhLOZVbyPhFqXyffgaAe7o05qX4DtT21EtVRKQm01FAXMb36acZtzCN03mFeNdy56X4jtzbtbHZZYmIiAtQYBHT2R0Gs5L38dY3+zAMaBPkS9L9UbRsqCkgERH5mQKLmCrLVsC4han8cOAsAENvCmPKoA54e7qbXJmIiLgSBRYxzdq9p0hYlMaZ/CJ8PN155e5O3BXZyOyyRETEBSmwyA1XYnfwxld7eXvNfgDahfiRNDyK5g3qmFyZiIi4KgUWuaGOZ19g7IJUfjx0DoAHbm7CcwPb41VLU0AiInJ5Cixyw3yzO4uExVvJPl+Mr9WDxHs6cUfnULPLEhGRKkCBRSpdsd3B61/s4Z11BwDo1MifOcOjaFrfx+TKRESkqlBgkUp19Nx5Rs9PJe1INgAP9WjGpNvbYvXQFJCIiFw7BRapNF/szOTpJVuxFZTg5+XB64MjiOsQbHZZIiJSBSmwSIUrKnGQ+Pku3v/+IACRYXV5a1gUYQG1zS1MRESqLAUWqVCHz5xn9IIUth3NAeDRXuE8HdcWTw83kysTEZGqTIFFKsyq7Sd45uNt5BaWULd2Ld4YHMFt7YLMLktERKoBBRa5bgXFdv68chf/+OEQAN2a1mP2sChC63qbXJmIiFQXCixyXTJO5zPqoxR+OmED4PHeLUjo25pa7poCEhGRiqPAIuW2Iu0Yzy7dTn6RnQAfT2bcF0HvNg3NLktERKohBRZxWkGxnamf7mTB5iMARIcHMHtYFEF+XiZXJiIi1ZUCizgl/WQeoz5KYU9WLhYLjOnTkrG3tcJDU0AiIlKJFFjkmn2y5SjPLd/BhWI7gXWszBwSSc9WgWaXJSIiNYACi1zV+aISJq/YycdbjgJwS8v6vDkkkoa+mgISEZEbQ4FFrmhvVi6jPkph38k83CwwPrY1o/q0xN3NYnZpIiJSgyiwyCUZhsHiH48w5V87KSh20NDXyuxhUdzcvL7ZpYmISA2kwCIXySss4bll21medhyA37RuwIz7IgisYzW5MhERqanK9dGOpKQkmjVrhpeXF9HR0WzevPmybf/2t7/Rq1cv6tWrR7169YiNjb2o/UMPPYTFYimz9O/fvzylyXX66biNO99az/K047i7WZjQvw3zHrpJYUVEREzldGBZtGgRCQkJTJkyhZSUFCIiIoiLi+PkyZOXbL9mzRqGDRvGt99+y8aNGwkLC6Nfv34cO3asTLv+/ftz4sSJ0mXBggXlG5GUi2EY/POHQ8T/5XsOnM4nxN+LhY/dzP/1bombrlcRERGTWQzDMJzZIDo6mptuuok5c+YA4HA4CAsLY8yYMUycOPGq29vtdurVq8ecOXN48MEHgZ/PsGRnZ7N8+XLnRwDYbDb8/f3JycnBz8+vXH3UZLkFxUxcup2V204AcFvbhkwfHEE9H0+TKxMRkerMmeO3U2dYioqK2LJlC7Gxsf/twM2N2NhYNm7ceE19nD9/nuLiYgICAsqsX7NmDQ0bNqRNmzY8/vjjnDlz5rJ9FBYWYrPZyixSPtuP5nDHW+tZue0EHm4W/t/t7fj7iG4KKyIi4lKcCiynT5/GbrcTFBRUZn1QUBCZmZnX1MczzzxDaGhomdDTv39/PvzwQ5KTk3n11VdZu3YtAwYMwG63X7KPxMRE/P39S5ewsDBnhiH8PAU07/sM7nl7A4fOnKdRXW8W/ymGR3/THItFU0AiIuJabuinhKZNm8bChQtZs2YNXl7/venY0KFDS//eqVMnOnfuTIsWLVizZg233XbbRf1MmjSJhISE0sc2m02hxQk5F4p55uNtrN75c8js1z6I1++NwL92LZMrExERuTSnAktgYCDu7u5kZWWVWZ+VlUVwcPAVt50+fTrTpk3j66+/pnPnzlds27x5cwIDA0lPT79kYLFarVit+tRKeaQdyWb0/BSOnrtALXcLz97ejod6NNNZFRERcWlOTQl5enrStWtXkpOTS9c5HA6Sk5OJiYm57HavvfYaL730EqtXr6Zbt25X/TlHjx7lzJkzhISEOFOeXIFhGPz9uwPc+/YGjp67QJOA2nzyeA9G3hKusCIiIi7P6SmhhIQERowYQbdu3ejevTszZ84kPz+fkSNHAvDggw/SqFEjEhMTAXj11VeZPHky8+fPp1mzZqXXutSpU4c6deqQl5fH1KlTueeeewgODmb//v1MmDCBli1bEhcXV4FDrbmyzxfx1JKtfL3r54+e394pmGn3dMbPS1NAIiJSNTgdWIYMGcKpU6eYPHkymZmZREZGsnr16tILcQ8fPoyb239P3Lz99tsUFRVx7733lulnypQpvPDCC7i7u7Nt2zY++OADsrOzCQ0NpV+/frz00kua9qkAWw6dZcz8VI7nFODp4cbzd7TngegmOqsiIiJVitP3YXFFug/LxRwOg3e+O8DrX+zB7jAID/RhzvAoOoT6m12aiIgI4NzxW98lVA2dySvkySVbWbPnFAB3RoTyyt2dqGPV7hYRkapJR7BqZtOBM4xdmEqWrRCrhxtT7+zAkJvCNAUkIiJVmgJLNWF3GPzl23Te/HovDgNaNPAh6f4utA3WFJmIiFR9CizVwKncQp5YlMb69NMA3NOlMS/Fd6C2p3aviIhUDzqiVXEb0k8zblEap3IL8a7lzkvxHbm3a2OzyxIREalQCixVlN1hMCt5H299sw/DgNZBdUga3oVWQb5mlyYiIlLhFFiqoCxbAeMWpvLDgbMADL0pjCmDOuDt6W5yZSIiIpVDgaWKWbf3FE8sSuNMfhE+nu68cncn7opsZHZZIiIilUqBpYoosTt48+u9/GXNfgwD2oX4kTQ8iuYN6phdmoiISKVTYKkCTuRcYOyCVP598BwA90c34fk72uNVS1NAIiJSMyiwuLhvd58kYXEa584XU8fqwbR7OnFH51CzyxIREbmhFFhcVLHdwfQv9vDXdQcA6NTInznDo2ha38fkykRERG48BRYXdPTcecYsSCX1cDYAD/VoxqTb22L10BSQiIjUTAosLubLnZk8/fE2ci4U4+flwWv3RtC/Y7DZZYmIiJhKgcVFFJU4SPx8F+9/fxCAiLC6zBkWRVhAbXMLExERcQEKLC7g8JnzjF6QwrajOQA82iucp+Pa4unhZnJlIiIirkGBxWSfbz/BhI+3kVtYQt3atZh+bwSx7YPMLktERMSlKLCYpKDYziurdvHhxkMAdG1aj9nDomhU19vkykRERFyPAosJMk7nM3p+CjuP2wD4060teLJfa2q5awpIRETkUhRYbrB/bT3Os0u3k1dYQoCPJzPui6B3m4ZmlyUiIuLSFFhukIJiO1M//YkFmw8D0D08gNlDowj29zK5MhEREdenwHIDpJ/MY/T8FHZn5mKxwOg+LRl3Wys8NAUkIiJyTRRYKtnSlKM8t3wH54vsBNaxMnNIJD1bBZpdloiISJWiwFJJzheVMGXFTpZsOQpAjxb1mTk0koa+mgISERFxlgJLJdiblcuoj1LYdzIPNwuMu601o3/bEnc3i9mliYiIVEkKLBXIMAyW/HiUyf/aQUGxg4a+VmYNjSKmRX2zSxMREanSFFgqSH5hCc8t38Gy1GMA9GoVyJtDIgmsYzW5MhERkapPgaUC7DphY9RHKRw4nY+7m4WEvq15/NYWuGkKSEREpEIosFwHwzCYv/kwUz/9iaISB8F+Xrw1PIqbmgWYXZqIiEi1osBSTrkFxUxaup3Ptp0A4LdtGzJ9cAQBPp4mVyYiIlL9KLCUw45jOYyen8LBM+fxcLMwoX8bHunZXFNAIiIilaRct1pNSkqiWbNmeHl5ER0dzebNm6/YfsmSJbRt2xYvLy86derEqlWryjxvGAaTJ08mJCQEb29vYmNj2bdvX3lKq1SGYfDBhoPc/ZcNHDxznkZ1vVn8pxge+42uVxEREalMTgeWRYsWkZCQwJQpU0hJSSEiIoK4uDhOnjx5yfYbNmxg2LBhPPzww6SmphIfH098fDw7duwobfPaa68xe/Zs5s6dy6ZNm/Dx8SEuLo6CgoLyj6yC5Vwo5vF/pjDlXzspsjvo2z6IVWN70aVJPbNLExERqfYshmEYzmwQHR3NTTfdxJw5cwBwOByEhYUxZswYJk6ceFH7IUOGkJ+fz2effVa67uabbyYyMpK5c+diGAahoaE8+eSTPPXUUwDk5OQQFBTEvHnzGDp06FVrstls+Pv7k5OTg5+fnzPDuSZpR7IZPT+Fo+cuUMvdwqQB7Rh5SzMsFp1VERERKS9njt9OnWEpKipiy5YtxMbG/rcDNzdiY2PZuHHjJbfZuHFjmfYAcXFxpe0zMjLIzMws08bf35/o6OjL9llYWIjNZiuzVAbDMPj7dwcYPHcDR89dICzAm4//1IM/9AxXWBEREbmBnAosp0+fxm63ExQUVGZ9UFAQmZmZl9wmMzPziu1/+dOZPhMTE/H39y9dwsLCnBnGNdt+LIeXV+6i2G5we6dgVo7tRURY3Ur5WSIiInJ5VfJTQpMmTSIhIaH0sc1mq5TQ0rlxXcbHtqK+jycP3NxUZ1VERERM4lRgCQwMxN3dnaysrDLrs7KyCA4OvuQ2wcHBV2z/y59ZWVmEhISUaRMZGXnJPq1WK1brjbnl/fjY1jfk54iIiMjlOTUl5OnpSdeuXUlOTi5d53A4SE5OJiYm5pLbxMTElGkP8NVXX5W2Dw8PJzg4uEwbm83Gpk2bLtuniIiI1CxOTwklJCQwYsQIunXrRvfu3Zk5cyb5+fmMHDkSgAcffJBGjRqRmJgIwLhx47j11lt54403GDhwIAsXLuTHH3/knXfeAcBisTB+/HhefvllWrVqRXh4OM8//zyhoaHEx8dX3EhFRESkynI6sAwZMoRTp04xefJkMjMziYyMZPXq1aUXzR4+fBg3t/+euOnRowfz58/nueee49lnn6VVq1YsX76cjh07lraZMGEC+fn5PPbYY2RnZ9OzZ09Wr16Nl5dXBQxRREREqjqn78Piiir7PiwiIiJS8SrtPiwiIiIiZlBgEREREZenwCIiIiIuT4FFREREXJ4Ci4iIiLg8BRYRERFxeQosIiIi4vIUWERERMTlKbCIiIiIy3P61vyu6Jeb9dpsNpMrERERkWv1y3H7Wm66Xy0CS25uLgBhYWEmVyIiIiLOys3Nxd/f/4ptqsV3CTkcDo4fP46vry8Wi6VC+7bZbISFhXHkyJFq+T1F1X18UP3HqPFVfdV9jNV9fFD9x1hZ4zMMg9zcXEJDQ8t8cfKlVIszLG5ubjRu3LhSf4afn1+1fBH+orqPD6r/GDW+qq+6j7G6jw+q/xgrY3xXO7PyC110KyIiIi5PgUVERERcngLLVVitVqZMmYLVajW7lEpR3ccH1X+MGl/VV93HWN3HB9V/jK4wvmpx0a2IiIhUbzrDIiIiIi5PgUVERERcngKLiIiIuDwFFhEREXF5NTKwJCUl0axZM7y8vIiOjmbz5s1XbL9kyRLatm2Ll5cXnTp1YtWqVWWeNwyDyZMnExISgre3N7Gxsezbt68yh3BFzozvb3/7G7169aJevXrUq1eP2NjYi9o/9NBDWCyWMkv//v0rexiX5cz45s2bd1HtXl5eZdq42v4D58bYu3fvi8ZosVgYOHBgaRtX2ofr1q1j0KBBhIaGYrFYWL58+VW3WbNmDV26dMFqtdKyZUvmzZt3URtn39eVxdnxLV26lL59+9KgQQP8/PyIiYnhiy++KNPmhRdeuGj/tW3bthJHcXnOjm/NmjWXfH1mZmaWaecq+w+cH+Ol3l8Wi4UOHTqUtnGlfZiYmMhNN92Er68vDRs2JD4+nj179lx1O7OPhTUusCxatIiEhASmTJlCSkoKERERxMXFcfLkyUu237BhA8OGDePhhx8mNTWV+Ph44uPj2bFjR2mb1157jdmzZzN37lw2bdqEj48PcXFxFBQU3KhhlXJ2fGvWrGHYsGF8++23bNy4kbCwMPr168exY8fKtOvfvz8nTpwoXRYsWHAjhnMRZ8cHP9+Z8X9rP3ToUJnnXWn/gfNjXLp0aZnx7dixA3d3dwYPHlymnavsw/z8fCIiIkhKSrqm9hkZGQwcOJA+ffqQlpbG+PHjeeSRR8oc1Mvzuqgszo5v3bp19O3bl1WrVrFlyxb69OnDoEGDSE1NLdOuQ4cOZfbf+vXrK6P8q3J2fL/Ys2dPmfobNmxY+pwr7T9wfoyzZs0qM7YjR44QEBBw0XvQVfbh2rVrGTVqFD/88ANfffUVxcXF9OvXj/z8/Mtu4xLHQqOG6d69uzFq1KjSx3a73QgNDTUSExMv2f6+++4zBg4cWGZddHS08cc//tEwDMNwOBxGcHCw8frrr5c+n52dbVitVmPBggWVMIIrc3Z8v1ZSUmL4+voaH3zwQem6ESNGGHfddVdFl1ouzo7v/fffN/z9/S/bn6vtP8O4/n345ptvGr6+vkZeXl7pOlfah/8LMJYtW3bFNhMmTDA6dOhQZt2QIUOMuLi40sfX+29WWa5lfJfSvn17Y+rUqaWPp0yZYkRERFRcYRXkWsb37bffGoBx7ty5y7Zx1f1nGOXbh8uWLTMsFotx8ODB0nWuug8NwzBOnjxpAMbatWsv28YVjoU16gxLUVERW7ZsITY2tnSdm5sbsbGxbNy48ZLbbNy4sUx7gLi4uNL2GRkZZGZmlmnj7+9PdHT0ZfusLOUZ36+dP3+e4uJiAgICyqxfs2YNDRs2pE2bNjz++OOcOXOmQmu/FuUdX15eHk2bNiUsLIy77rqLnTt3lj7nSvsPKmYfvvvuuwwdOhQfH58y611hH5bH1d6DFfFv5kocDge5ubkXvQf37dtHaGgozZs35/777+fw4cMmVVg+kZGRhISE0LdvX77//vvS9dVt/8HP78HY2FiaNm1aZr2r7sOcnByAi15z/8sVjoU1KrCcPn0au91OUFBQmfVBQUEXzaf+IjMz84rtf/nTmT4rS3nG92vPPPMMoaGhZV50/fv358MPPyQ5OZlXX32VtWvXMmDAAOx2e4XWfzXlGV+bNm147733WLFiBf/85z9xOBz06NGDo0ePAq61/+D69+HmzZvZsWMHjzzySJn1rrIPy+Ny70GbzcaFCxcq5HXvSqZPn05eXh733Xdf6bro6GjmzZvH6tWrefvtt8nIyKBXr17k5uaaWOm1CQkJYe7cuXzyySd88sknhIWF0bt3b1JSUoCK+b3lSo4fP87nn39+0XvQVfehw+Fg/Pjx3HLLLXTs2PGy7VzhWFgtvq1ZKsa0adNYuHAha9asKXNh6tChQ0v/3qlTJzp37kyLFi1Ys2YNt912mxmlXrOYmBhiYmJKH/fo0YN27drx17/+lZdeesnEyirHu+++S6dOnejevXuZ9VV5H9Yk8+fPZ+rUqaxYsaLMNR4DBgwo/Xvnzp2Jjo6madOmLF68mIcfftiMUq9ZmzZtaNOmTenjHj16sH//ft58803+8Y9/mFhZ5fjggw+oW7cu8fHxZda76j4cNWoUO3bsMO16GmfUqDMsgYGBuLu7k5WVVWZ9VlYWwcHBl9wmODj4iu1/+dOZPitLecb3i+nTpzNt2jS+/PJLOnfufMW2zZs3JzAwkPT09Ouu2RnXM75f1KpVi6ioqNLaXWn/wfWNMT8/n4ULF17TLz+z9mF5XO496Ofnh7e3d4W8LlzBwoULeeSRR1i8ePFFp95/rW7durRu3bpK7L9L6d69e2nt1WX/wc+fknnvvff4/e9/j6en5xXbusI+HD16NJ999hnffvstjRs3vmJbVzgW1qjA4unpSdeuXUlOTi5d53A4SE5OLvO/8P8VExNTpj3AV199Vdo+PDyc4ODgMm1sNhubNm26bJ+VpTzjg5+v7H7ppZdYvXo13bp1u+rPOXr0KGfOnCEkJKRC6r5W5R3f/7Lb7Wzfvr20dlfaf3B9Y1yyZAmFhYU88MADV/05Zu3D8rjae7AiXhdmW7BgASNHjmTBggVlPo5+OXl5eezfv79K7L9LSUtLK629Ouy/X6xdu5b09PRr+k+DmfvQMAxGjx7NsmXL+OabbwgPD7/qNi5xLKyQS3erkIULFxpWq9WYN2+e8dNPPxmPPfaYUbduXSMzM9MwDMP4/e9/b0ycOLG0/ffff294eHgY06dPN3bt2mVMmTLFqFWrlrF9+/bSNtOmTTPq1q1rrFixwti2bZtx1113GeHh4caFCxdcfnzTpk0zPD09jY8//tg4ceJE6ZKbm2sYhmHk5uYaTz31lLFx40YjIyPD+Prrr40uXboYrVq1MgoKClx+fFOnTjW++OILY//+/caWLVuMoUOHGl5eXsbOnTtL27jS/jMM58f4i549expDhgy5aL2r7cPc3FwjNTXVSE1NNQBjxowZRmpqqnHo0CHDMAxj4sSJxu9///vS9gcOHDBq165tPP3008auXbuMpKQkw93d3Vi9enVpm6v9m7ny+D766CPDw8PDSEpKKvMezM7OLm3z5JNPGmvWrDEyMjKM77//3oiNjTUCAwONkydPuvz43nzzTWP58uXGvn37jO3btxvjxo0z3NzcjK+//rq0jSvtP8Nwfoy/eOCBB4zo6OhL9ulK+/Dxxx83/P39jTVr1pR5zZ0/f760jSseC2tcYDEMw3jrrbeMJk2aGJ6enkb37t2NH374ofS5W2+91RgxYkSZ9osXLzZat25teHp6Gh06dDBWrlxZ5nmHw2E8//zzRlBQkGG1Wo3bbrvN2LNnz40YyiU5M76mTZsawEXLlClTDMMwjPPnzxv9+vUzGjRoYNSqVcto2rSp8eijj5r2i8QwnBvf+PHjS9sGBQUZt99+u5GSklKmP1fbf4bh/Gt09+7dBmB8+eWXF/Xlavvwl4+5/nr5ZUwjRowwbr311ou2iYyMNDw9PY3mzZsb77///kX9Xunf7EZydny33nrrFdsbxs8f4w4JCTE8PT2NRo0aGUOGDDHS09Nv7MD+w9nxvfrqq0aLFi0MLy8vIyAgwOjdu7fxzTffXNSvq+w/wyjfazQ7O9vw9vY23nnnnUv26Ur78FJjA8q8r1zxWGj5T/EiIiIiLqtGXcMiIiIiVZMCi4iIiLg8BRYRERFxeQosIiIi4vIUWERERMTlKbCIiIiIy1NgEREREZenwCIiIiIuT4FFREREXJ4Ci4iIiLg8BRYRERFxeQosIiIi4vL+PwlOdp9YduMRAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(x,y)" ] }, { "cell_type": "code", "execution_count": 20, "id": "a7daba31", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show(plot(x,y))" ] }, { "cell_type": "markdown", "id": "2ffd85a1", "metadata": {}, "source": [ "There is much to learn about matplotlib in order to make the plots even prettier and more useful, but that's a story for another tutorial. Meanwhile..." ] }, { "cell_type": "markdown", "id": "9c3cb5df", "metadata": {}, "source": [ "### Scikit-learn" ] }, { "cell_type": "markdown", "id": "911b8eb6", "metadata": {}, "source": [ "Now we can import scikit-learn library. \n", "\n", "Scikit-learn is a library that helps creating machine learning algorithms. And that's what we'll be doing here.\n", "\n", "This example is a bit longer than previous ones, but still, in 12 lines of code we create a machine learning algorithm.\n", "\n", "So, we use the scikit-learn in our first more advanced program. We import several things from the library in first 3 lines of code: data helper, machine learning algorithm, and a helper in dividing data).\n", "\n", "We use here machine learning (decision trees to be exact) to create a program that can differentiate between different types of Iris flowers. This is very common task to do when you are learning machine learning. And as you can see, it's quite simple. When you run the cell, you can see that you got almost 100% success rate in the task, and you can see how the tree looks like. We'll circle back to that and I'll tell you what exactly you can see here, but for now, you can just enjoy the fact, that you've learned how to create a machine learning program in Python - and how to use machine learning for something useful (kind of). It's like, after this cell, you've just created your first Artificial Intelligence. I'm proud of you. Congratulations." ] }, { "cell_type": "code", "execution_count": 21, "id": "de6183b4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training result: 1.000\n", "Test result: 0.974\n" ] }, { "data": { "text/plain": [ "[Text(0.4, 0.9, 'x[3] <= 0.8\\ngini = 0.665\\nsamples = 112\\nvalue = [37, 34, 41]'),\n", " Text(0.3, 0.7, 'gini = 0.0\\nsamples = 37\\nvalue = [37, 0, 0]'),\n", " Text(0.5, 0.7, 'x[2] <= 4.95\\ngini = 0.496\\nsamples = 75\\nvalue = [0, 34, 41]'),\n", " Text(0.2, 0.5, 'x[3] <= 1.65\\ngini = 0.153\\nsamples = 36\\nvalue = [0, 33, 3]'),\n", " Text(0.1, 0.3, 'gini = 0.0\\nsamples = 32\\nvalue = [0, 32, 0]'),\n", " Text(0.3, 0.3, 'x[1] <= 3.1\\ngini = 0.375\\nsamples = 4\\nvalue = [0, 1, 3]'),\n", " Text(0.2, 0.1, 'gini = 0.0\\nsamples = 3\\nvalue = [0, 0, 3]'),\n", " Text(0.4, 0.1, 'gini = 0.0\\nsamples = 1\\nvalue = [0, 1, 0]'),\n", " Text(0.8, 0.5, 'x[3] <= 1.75\\ngini = 0.05\\nsamples = 39\\nvalue = [0, 1, 38]'),\n", " Text(0.7, 0.3, 'x[3] <= 1.65\\ngini = 0.375\\nsamples = 4\\nvalue = [0, 1, 3]'),\n", " Text(0.6, 0.1, 'gini = 0.0\\nsamples = 3\\nvalue = [0, 0, 3]'),\n", " Text(0.8, 0.1, 'gini = 0.0\\nsamples = 1\\nvalue = [0, 1, 0]'),\n", " Text(0.9, 0.3, 'gini = 0.0\\nsamples = 35\\nvalue = [0, 0, 35]')]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.datasets import load_iris\n", "from sklearn import tree\n", "from sklearn.model_selection import train_test_split\n", "\n", "iris = load_iris()\n", "X, y = iris.data, iris.target\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)\n", "\n", "clf = tree.DecisionTreeClassifier(random_state=0)\n", "clf = clf.fit(X_train, y_train)\n", "\n", "#Print results\n", "print(\"Training result: {:.3f}\".format(clf.score(X_train, y_train)))\n", "print(\"Test result: {:.3f}\".format(clf.score(X_test, y_test)))\n", "\n", "tree.plot_tree(clf)" ] }, { "cell_type": "markdown", "id": "11adb585", "metadata": {}, "source": [ "There are other important machine learning libraries, like TensorFlow, PyTorch, Fast AI, Open AI, etc. We won't be installing them here, but you can find here the links to them (as they are at the moment of creating this tutorial) and install them on your own.\n", "\n", "Oh, and sometimes it might be better to install them in different environments, because most of the higher level libraries use various libraries under the hood, like numpy, matplotlib, pandas, etc. and they might be using different versions of these libraries, so during installing them you may encounter some problems because of that. Thus, if you don't need two libraries in the same project, you might create different environments for them and choose the one you need when you need it.\n", "\n", "And here are the links to these libraries and some more tutorials regarding installing packages, etc.:" ] }, { "cell_type": "markdown", "id": "24bb367e", "metadata": {}, "source": [ "https://packaging.python.org/en/latest/tutorials/installing-packages/" ] }, { "cell_type": "markdown", "id": "3ed8f066", "metadata": {}, "source": [ "### TENSORFLOW" ] }, { "cell_type": "markdown", "id": "9ec1929d", "metadata": {}, "source": [ "https://www.tensorflow.org/install" ] }, { "cell_type": "markdown", "id": "e6c42e10", "metadata": {}, "source": [ "### PYTORCH" ] }, { "cell_type": "markdown", "id": "e1c28d1b", "metadata": {}, "source": [ "https://pytorch.org/" ] }, { "cell_type": "markdown", "id": "894a19ee", "metadata": {}, "source": [ "### FASTAI" ] }, { "cell_type": "markdown", "id": "1fc6d187", "metadata": {}, "source": [ "https://www.fast.ai/" ] }, { "cell_type": "markdown", "id": "a53fcf78", "metadata": {}, "source": [ "### OPENAI" ] }, { "cell_type": "markdown", "id": "ffce19fe", "metadata": {}, "source": [ "https://openai.com/product" ] }, { "cell_type": "markdown", "id": "ff88db45", "metadata": {}, "source": [ "https://openai.com/research/openai-gym-beta" ] }, { "cell_type": "markdown", "id": "6fe82e4e", "metadata": {}, "source": [ "## 10. BASICS: Using, understanding and changing types (numeric (int, float, complex), sequence (list, tuple, range), text (str), binary (bytes, bytearray, memoryview), set (set, frozenset), mapping (dict), boolean (bool))" ] }, { "cell_type": "markdown", "id": "92455fee", "metadata": {}, "source": [ "https://docs.python.org/3/library/stdtypes.html" ] }, { "cell_type": "markdown", "id": "167257d9", "metadata": {}, "source": [ "And now let's talk about data types in Python." ] }, { "cell_type": "markdown", "id": "248d50c0", "metadata": {}, "source": [ "According to https://docs.python.org/3/library/stdtypes.html Python has several built-in data types that are used to represent different kinds of data. These data types can be divided into such categories as: numeric, sequence, text, binary, set, mapping, and boolean.\n", "\n", "### Types:\n", "- numeric (int, float, complex), \n", "- sequence (list, tuple, range),\n", "- text (str),\n", "- binary (bytes, bytearray, memoryview),\n", "- set (set, frozenset), \n", "- mapping (dict),\n", "- boolean (bool).\n", "\n", "So as you can see these data types are just the types of data you can store and use in your program, these can be letters, numbers, etc.\n", "\n", "Sometimes you'll see or hear that there are six basic data types: int, float, complex, bool, str, and bytes. Nevertheless, here we'll follow the docs from Python.org and talk about the types from the documentation.\n", "\n", "**Numeric types** include integers, floating-point numbers, and complex numbers. Integers are whole numbers (for example 1, 2, 3) and floating-point numbers have decimal points (for example 1.5, 2.7). Complex numbers are a bit more complex, because they have a real and imaginary part.\n", "\n", "**Sequence types** include lists, tuples, and ranges. Lists and tuples are ordered collections of items, the difference is that lists are mutable and tuples are immutable (you can't change them). Ranges are used to represent a sequence of numbers.\n", "\n", "**Text type** is used to store Unicode strings and it is represented by the str class.\n", "\n", "**Binary types** include bytes, bytearray, and memoryview. The first two: bytes and bytearray are used to store binary data, while memoryview is used to access the memory of other objects.\n", "\n", "**Set types** include set and frozenset. The first one: set is an unordered collection of unique items and is mutable, and the second one: frozenset is similar to set but is immutable.\n", "\n", "**Mapping types** include dict, which is an unordered collection of key-value pairs.\n", "\n", "**Boolean type** can have one of two values: True or False and is represented by the bool class.\n", "\n", "So, as you can see there are different types that can be use with different data and tasks. I won't tell you too much about it, but if you want, there is a lot info about them in the Internet. For now, here you can see how they work (some of them, those you might see as a beginner). You may try figuring what will be the ouptut of each cell to better understand them. Have fun." ] }, { "cell_type": "markdown", "id": "374dce6a", "metadata": {}, "source": [ "### Numeric (int, float, complex)" ] }, { "cell_type": "code", "execution_count": 1, "id": "b7538d4d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a = 5 is of the type: .\n", "b = 5.0 is of the type: .\n" ] } ], "source": [ "a = 5\n", "b = 5.0\n", "print(\"a = {} is of the type: {}.\".format(a, type(a)))\n", "print(\"b = {} is of the type: {}.\".format(b, type(b)))" ] }, { "cell_type": "markdown", "id": "b70a3058", "metadata": {}, "source": [ "### Sequence (list, tuple, range)" ] }, { "cell_type": "code", "execution_count": 2, "id": "ea3f9f83", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a = [1, 2, 3] is of the type: .\n", "b = (1, 2, 3) is of the type: .\n", "c = range(0, 3) is of the type: .\n" ] } ], "source": [ "a = [1, 2, 3]\n", "b = (1, 2, 3)\n", "c = range(3)\n", "print(\"a = {} is of the type: {}.\".format(a, type(a)))\n", "print(\"b = {} is of the type: {}.\".format(b, type(b)))\n", "print(\"c = {} is of the type: {}.\".format(c, type(c)))" ] }, { "cell_type": "code", "execution_count": 3, "id": "c4f625f9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a_list: [1, 2, 3]\n", "a_tupple: (1, 2, 3)\n" ] } ], "source": [ "a_list = [1, 2, 3]\n", "a_tupple = (1, 2, 3)\n", "print(\"a_list: \", a_list)\n", "print(\"a_tupple: \", a_tupple)" ] }, { "cell_type": "code", "execution_count": 4, "id": "a498f604", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0th item of the a_list is: 1\n", "0th item of the a_tupple is: 1\n" ] } ], "source": [ "print(\"0th item of the a_list is: \", a_list[0])\n", "print(\"0th item of the a_tupple is: \", a_tupple[0])" ] }, { "cell_type": "code", "execution_count": 5, "id": "2608c13f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 2, 3]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a_list[0] = 0\n", "a_list" ] }, { "cell_type": "code", "execution_count": 6, "id": "c2dfa7a4", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "'tuple' object does not support item assignment", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[6], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m a_tupple[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[0;32m 2\u001b[0m a_tupple\n", "\u001b[1;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" ] } ], "source": [ "a_tupple[0] = 0\n", "a_tupple" ] }, { "cell_type": "markdown", "id": "bf80749e", "metadata": {}, "source": [ "### Text (str)" ] }, { "cell_type": "code", "execution_count": 7, "id": "8cb077ec", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a = Jane is of the type: .\n", "b = Jane is of the type: .\n", "c = Jane\n", "and John is of the type: .\n" ] } ], "source": [ "a = \"Jane\"\n", "b = 'Jane'\n", "c = \"\"\"Jane\n", "and John\"\"\"\n", "\n", "print(\"a = {} is of the type: {}.\".format(a, type(a)))\n", "print(\"b = {} is of the type: {}.\".format(b, type(b)))\n", "print(\"c = {} is of the type: {}.\".format(c, type(c)))" ] }, { "cell_type": "markdown", "id": "16f9aca7", "metadata": {}, "source": [ "### Binary" ] }, { "cell_type": "code", "execution_count": 8, "id": "00b7595a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a = b'Jane' is of the type: .\n", "b = b'John' is of the type: .\n", "c = b'Jane \\nand John' is of the type: .\n" ] } ], "source": [ "a = b\"Jane\"\n", "b = b'John'\n", "c = b\"\"\"Jane \n", "and John\"\"\"\n", "\n", "print(\"a = {} is of the type: {}.\".format(a, type(a)))\n", "print(\"b = {} is of the type: {}.\".format(b, type(b)))\n", "print(\"c = {} is of the type: {}.\".format(c, type(c)))" ] }, { "cell_type": "code", "execution_count": 9, "id": "d71dbf00", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a = b'\\x00\\x00\\x00\\x00\\x00' is of the type: .\n", "b = b'\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t' is of the type: .\n", "c = b'\\x00\\x00\\x00\\x00\\x00' is of the type: .\n" ] } ], "source": [ "a = bytes(5)\n", "b = bytes(range(10))\n", "c = bytes(a)\n", "\n", "print(\"a = {} is of the type: {}.\".format(a, type(a)))\n", "print(\"b = {} is of the type: {}.\".format(b, type(b)))\n", "print(\"c = {} is of the type: {}.\".format(c, type(c)))" ] }, { "cell_type": "markdown", "id": "adb8bf9f", "metadata": {}, "source": [ "### Set (set, frozenset)" ] }, { "cell_type": "code", "execution_count": 10, "id": "9faa7235", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a_set = {'Jane', 'John'} is of the type: .\n" ] } ], "source": [ "a_set = {'Jane', 'John', 'Jane', 'John', 'Jane'}\n", "print(\"a_set = {} is of the type: {}.\".format(a_set, type(a_set)))" ] }, { "cell_type": "code", "execution_count": 11, "id": "ae4b6dfc", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "set expected at most 1 argument, got 5", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[11], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m first_other \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mJane\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mJohn\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mJane\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mJohn\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mJane\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfirst_other = \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m is of the type: \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(first_other, \u001b[38;5;28mtype\u001b[39m(first_other)))\n", "\u001b[1;31mTypeError\u001b[0m: set expected at most 1 argument, got 5" ] } ], "source": [ "first_other = set('Jane', 'John', 'Jane', 'John', 'Jane')\n", "\n", "print(\"first_other = {} is of the type: {}.\".format(first_other, type(first_other)))" ] }, { "cell_type": "code", "execution_count": 12, "id": "cd37b18c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "first_other = {'Jane', 'John'} is of the type: .\n" ] } ], "source": [ "first_other = set(('Jane', 'John', 'Jane', 'John', 'Jane'))\n", "\n", "print(\"first_other = {} is of the type: {}.\".format(first_other, type(first_other)))" ] }, { "cell_type": "code", "execution_count": 13, "id": "ea3e320d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a = ('Jane', 'John', 'Jane', 'John', 'Jane') is of the type: .\n", "another = {'Jane', 'John'} is of the type: .\n" ] } ], "source": [ "a = ('Jane', 'John', 'Jane', 'John', 'Jane')\n", "another = set(a)\n", "\n", "print(\"a = {} is of the type: {}.\".format(a, type(a)))\n", "print(\"another = {} is of the type: {}.\".format(another, type(another)))" ] }, { "cell_type": "code", "execution_count": 14, "id": "ee210197", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "b = ['Jane', 'John', 'Jane', 'John', 'Jane'] is of the type: .\n", "c = {'Jane', 'John'} is of the type: .\n" ] } ], "source": [ "b = ['Jane', 'John', 'Jane', 'John', 'Jane']\n", "c = set(b)\n", "\n", "print(\"b = {} is of the type: {}.\".format(b, type(b)))\n", "print(\"c = {} is of the type: {}.\".format(c, type(c)))" ] }, { "cell_type": "code", "execution_count": 15, "id": "9a1ada46", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "d = {' ', \"'\", 'a', 'n', ',', 'J', 'o', 'e', 'h'} is of the type: .\n" ] } ], "source": [ "d = set(\"'Jane', 'John', 'Jane', 'John', 'Jane'\")\n", "\n", "print(\"d = {} is of the type: {}.\".format(d, type(d)))" ] }, { "cell_type": "code", "execution_count": 16, "id": "f109ea00", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a = {'Jane', 'John'} is of the type: .\n", "e = {'Jane', 'John'} is of the type: .\n" ] } ], "source": [ "a = {'Jane', 'John', 'Jane', 'John', 'Jane'}\n", "e = set(a)\n", "\n", "print(\"a = {} is of the type: {}.\".format(a, type(a)))\n", "print(\"e = {} is of the type: {}.\".format(e, type(e)))" ] }, { "cell_type": "markdown", "id": "4b37c535", "metadata": {}, "source": [ "### Mapping (dict)" ] }, { "cell_type": "code", "execution_count": 17, "id": "ee5e45e8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Jane': 10, 'John': 9}" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = {'Jane': 10, 'John': 9}\n", "a" ] }, { "cell_type": "code", "execution_count": 18, "id": "0281614b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{0: 0, 1: 1, 2: 8}" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b = {x: x ** 3 for x in range(3)}\n", "b" ] }, { "cell_type": "code", "execution_count": 19, "id": "6184733e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Jane': 10, 'John': 9}" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c = dict([('Jane', 10), ('John', 9)])\n", "c" ] }, { "cell_type": "code", "execution_count": 20, "id": "086cb2bb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Jane': 10, 'John': 9}" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d = dict(Jane=10, John=9)\n", "d" ] }, { "cell_type": "code", "execution_count": 21, "id": "1d659cfd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{0: '', 1: 'Jane ', 2: 'Jane Jane '}" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "e = {x: 'Jane ' * x for x in range(3)}\n", "e" ] }, { "cell_type": "code", "execution_count": 22, "id": "adef4a66", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{0: '',\n", " 1: 'Jane ',\n", " 2: 'Jane Jane ',\n", " 3: 'Jane Jane Jane ',\n", " 4: 'Jane Jane Jane Jane '}" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "e = {x: 'Jane ' * x for x in range(5)}\n", "e" ] }, { "cell_type": "markdown", "id": "7e391a29", "metadata": {}, "source": [ "### Boolean (bool)" ] }, { "cell_type": "code", "execution_count": 23, "id": "ac5f05cc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a = True is of the type: .\n", "b = False is of the type: .\n" ] } ], "source": [ "a = True\n", "b = False\n", "print(\"a = {} is of the type: {}.\".format(a, type(a)))\n", "print(\"b = {} is of the type: {}.\".format(b, type(b)))" ] }, { "cell_type": "markdown", "id": "2c77099e", "metadata": {}, "source": [ "And that's it for now. If you want, you can check other types on your own and meanwhile I would like to tell you about another important thing regarding types that we did in a couple of previous examples." ] }, { "cell_type": "markdown", "id": "7192c700", "metadata": {}, "source": [ "## Changing types" ] }, { "cell_type": "markdown", "id": "c9292b14", "metadata": {}, "source": [ "Sometime we might want to or need to change the type, like in our first example.\n", "\n", "In our multiplier we were taking input from the user. That input is always of a string type, but in order to multiply the number we needed an int or a float type, so we had to change the type of our recieved input.\n", "\n", "This changing with step by step explanation could look like this:" ] }, { "cell_type": "code", "execution_count": 24, "id": "ff00a52d", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "You typed 1 and its type is . \n", "\n", "And when we use 'int(your_number)' we get 1 that is .\n" ] } ], "source": [ "your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", "real_number = int(your_number)\n", "print(\"\\nYou typed {} and its type is {}. \\n\\nAnd when we use 'int(your_number)' we get {} that is {}.\".format(\n", "your_number, type(your_number), real_number, type(real_number)))" ] }, { "cell_type": "markdown", "id": "fc7d4d21", "metadata": {}, "source": [ "## 11. BASICS: Using Data structures (lists, tuples, dictionaries, sets, etc.)" ] }, { "cell_type": "markdown", "id": "4d765ad1", "metadata": {}, "source": [ "https://docs.python.org/3/tutorial/datastructures.html" ] }, { "cell_type": "markdown", "id": "b6657858", "metadata": {}, "source": [ "Now that we know a bit about Python types, let's talk about data structures.\n", "\n", "Some of the things you find here might seem familiar to you, because we've covered some of that in the data types part.\n", "\n", "Anyway, according to https://docs.python.org/3/tutorial/datastructures.html, Python provides a variety of built-in data structures that can be used to store and manipulate data. \n", "\n", "These data structures include lists, tuples, dictionaries, sets, and more. Each of them can be used for different purposes.\n", "\n", "Lists are used to store an ordered collection of items and are mutable.\n", "\n", "Tuples are similar to lists but are immutable. \n", "\n", "Dictionaries are used to store key-value pairs. \n", "\n", "Sets are used to store an unordered collection of unique items. \n", "\n", "In here you can see how you can work with these different data structres, how you can pick something from them, cut something out, put something in them, etc., but it would be great if you knew more about data structures, so after learning what you have here, try finding more info in the Internet.\n", "\n", "You may try figuring out what will happen when you (or I) run the code." ] }, { "cell_type": "markdown", "id": "ac4ccf3a", "metadata": {}, "source": [ "### LISTS" ] }, { "cell_type": "markdown", "id": "664d01b8", "metadata": {}, "source": [ "We start with lists." ] }, { "cell_type": "code", "execution_count": 25, "id": "b98e7077", "metadata": {}, "outputs": [], "source": [ "a = [1, 2, 3]" ] }, { "cell_type": "markdown", "id": "72f1ae11", "metadata": {}, "source": [ "And print parts of it..." ] }, { "cell_type": "code", "execution_count": 26, "id": "f0953166", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3]\n", "1\n", "3\n", "[1]\n", "[1]\n", "[2, 3]\n", "[2, 3]\n", "[1, 2, 3]\n", "[]\n" ] } ], "source": [ "print(a[:])\n", "print(a[0])\n", "print(a[-1])\n", "print(a[0:1])\n", "print(a[:1])\n", "print(a[1:])\n", "print(a[-2:])\n", "print(a[-5:10])\n", "print(a[-5:-10])" ] }, { "cell_type": "code", "execution_count": 27, "id": "efed2a0a", "metadata": {}, "outputs": [ { "ename": "IndexError", "evalue": "list index out of range", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[27], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(a[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m5\u001b[39m])\n", "\u001b[1;31mIndexError\u001b[0m: list index out of range" ] } ], "source": [ "print(a[-5])" ] }, { "cell_type": "markdown", "id": "8b549ad5", "metadata": {}, "source": [ "We pop one item from the list." ] }, { "cell_type": "code", "execution_count": 28, "id": "e3f31927", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.pop()" ] }, { "cell_type": "code", "execution_count": 29, "id": "f7ec430f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2]" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "markdown", "id": "479470e4", "metadata": {}, "source": [ "And we change and add something to our list." ] }, { "cell_type": "code", "execution_count": 30, "id": "d6d5370f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 2, 4]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[0] = 0\n", "a.append(4)\n", "a" ] }, { "cell_type": "markdown", "id": "3348534f", "metadata": {}, "source": [ "### TUPLES" ] }, { "cell_type": "markdown", "id": "0d569fc4", "metadata": {}, "source": [ "Now, let's see how the tuples act." ] }, { "cell_type": "code", "execution_count": 31, "id": "2daf26d5", "metadata": {}, "outputs": [], "source": [ "a = (1, 2, 3)" ] }, { "cell_type": "code", "execution_count": 32, "id": "5058dc40", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1, 2, 3)\n", "1\n", "3\n", "(1,)\n", "(1,)\n", "(2, 3)\n", "(2, 3)\n", "(1, 2, 3)\n", "()\n" ] } ], "source": [ "print(a[:])\n", "print(a[0])\n", "print(a[-1])\n", "print(a[0:1])\n", "print(a[:1])\n", "print(a[1:])\n", "print(a[-2:])\n", "print(a[-5:10])\n", "print(a[-5:-10])" ] }, { "cell_type": "code", "execution_count": 33, "id": "719f6e9d", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "'tuple' object does not support item assignment", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[33], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m a[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[0;32m 2\u001b[0m a\n", "\u001b[1;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" ] } ], "source": [ "a[0] = 0\n", "a" ] }, { "cell_type": "code", "execution_count": 34, "id": "42606be0", "metadata": {}, "outputs": [ { "ename": "AttributeError", "evalue": "'tuple' object has no attribute 'append'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[34], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m a\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;241m4\u001b[39m)\n\u001b[0;32m 2\u001b[0m a\n", "\u001b[1;31mAttributeError\u001b[0m: 'tuple' object has no attribute 'append'" ] } ], "source": [ "a.append(4)\n", "a" ] }, { "cell_type": "code", "execution_count": 35, "id": "efc70911", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.count(2)" ] }, { "cell_type": "code", "execution_count": 36, "id": "f12e980d", "metadata": {}, "outputs": [], "source": [ "a = (1, 2, 2, 3)" ] }, { "cell_type": "code", "execution_count": 37, "id": "b6159b3f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.count(2)" ] }, { "cell_type": "code", "execution_count": 38, "id": "050e86ac", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.index(2)" ] }, { "cell_type": "code", "execution_count": 39, "id": "9599e82b", "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "tuple.index(x): x not in tuple", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[39], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m a\u001b[38;5;241m.\u001b[39mindex(\u001b[38;5;241m4\u001b[39m)\n", "\u001b[1;31mValueError\u001b[0m: tuple.index(x): x not in tuple" ] } ], "source": [ "a.index(4)" ] }, { "cell_type": "markdown", "id": "afc80064", "metadata": {}, "source": [ "As you can see, there are some methods you could have used with lists, but you can't use them with tuples, because they are immutable. There are, however, other methods which you can use with tuples." ] }, { "cell_type": "markdown", "id": "bc3c6f10", "metadata": {}, "source": [ "### DICTIONARIES" ] }, { "cell_type": "markdown", "id": "7248e432", "metadata": {}, "source": [ "Now let's check the dictionaries." ] }, { "cell_type": "code", "execution_count": 40, "id": "8e945101", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Jane': 8, 'John': 9}" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = {'Jane': 10, 'John': 9, 'Jane': 8}\n", "a" ] }, { "cell_type": "code", "execution_count": 41, "id": "a68dafe7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(a)" ] }, { "cell_type": "code", "execution_count": 42, "id": "2298713b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Jane': 10, 'John': 9, 'Jenny': 8}" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = {'Jane': 10, 'John': 9, 'Jenny': 8}\n", "a" ] }, { "cell_type": "code", "execution_count": 43, "id": "5ddb9007", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "unhashable type: 'slice'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[43], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(a[:])\n", "\u001b[1;31mTypeError\u001b[0m: unhashable type: 'slice'" ] } ], "source": [ "print(a[:])" ] }, { "cell_type": "code", "execution_count": 44, "id": "9f194f75", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10\n" ] } ], "source": [ "print(a['Jane'])" ] }, { "cell_type": "code", "execution_count": 45, "id": "898b5db5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dict_keys(['Jane', 'John', 'Jenny'])\n" ] } ], "source": [ "print(a.keys())" ] }, { "cell_type": "code", "execution_count": 46, "id": "0f1e0d58", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dict_values([10, 9, 8])\n" ] } ], "source": [ "print(a.values())" ] }, { "cell_type": "code", "execution_count": 47, "id": "6b9fa0b0", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "pop expected at least 1 argument, got 0", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[47], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m a\u001b[38;5;241m.\u001b[39mpop()\n", "\u001b[1;31mTypeError\u001b[0m: pop expected at least 1 argument, got 0" ] } ], "source": [ "a.pop()" ] }, { "cell_type": "code", "execution_count": 48, "id": "f88dbd76", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.pop(\"Jane\")" ] }, { "cell_type": "code", "execution_count": 49, "id": "3654c2d2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.pop(\"John\")" ] }, { "cell_type": "code", "execution_count": 50, "id": "f381958e", "metadata": {}, "outputs": [ { "ename": "KeyError", "evalue": "'John'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[50], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m a\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mJohn\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", "\u001b[1;31mKeyError\u001b[0m: 'John'" ] } ], "source": [ "a.pop(\"John\")" ] }, { "cell_type": "code", "execution_count": 51, "id": "c16316f7", "metadata": {}, "outputs": [ { "ename": "KeyError", "evalue": "'Jane'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[51], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m a\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mJane\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", "\u001b[1;31mKeyError\u001b[0m: 'Jane'" ] } ], "source": [ "a.pop(\"Jane\")" ] }, { "cell_type": "code", "execution_count": 52, "id": "0b412516", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Jenny': 8}" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 53, "id": "1f3aa7d2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Jenny': 8, 'Jane': 10}" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a['Jane']= 10\n", "a" ] }, { "cell_type": "code", "execution_count": 54, "id": "4441580d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Jenny': 8, 'Jane': 10, ('John', 'Jane'): (9, 7)}" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a['John', 'Jane'] = (9, 7)\n", "a" ] }, { "cell_type": "code", "execution_count": 55, "id": "917c9e61", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Jenny': 8, 'Jane': 10, ('John', 'Jane'): (7, 9)}" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[('John'), ('Jane')] = (7, 9)\n", "a" ] }, { "cell_type": "code", "execution_count": 56, "id": "3d962447", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Jenny': 8, 'Jane': 10, ('John', 'Jane'): (7, 9), 'Johnny': 6}" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.update({'Johnny': 6})\n", "a" ] }, { "cell_type": "code", "execution_count": 57, "id": "d71c3154", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Jenny': 8, 'Jane': 10, ('John', 'Jane'): (7, 9), 'Johnny': 5}" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.update({'Johnny': 5})\n", "a" ] }, { "cell_type": "markdown", "id": "86ae036d", "metadata": {}, "source": [ "And once again, there are some things we could have done with other data structures that we can't do with dictionaries, but there are also some new methods that we can use only with dictionaries." ] }, { "cell_type": "markdown", "id": "7daba816", "metadata": {}, "source": [ "### SETS" ] }, { "cell_type": "markdown", "id": "f28afc1d", "metadata": {}, "source": [ "And now the sets." ] }, { "cell_type": "code", "execution_count": 58, "id": "0cda1fdf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'Jane', 'John'} \n" ] } ], "source": [ "a = {'Jane', 'John', 'Jane', 'John', 'Jane'}\n", "print(a, type(a))" ] }, { "cell_type": "code", "execution_count": 59, "id": "8f4872de", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "'set' object is not subscriptable", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[59], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(a[:])\n", "\u001b[1;31mTypeError\u001b[0m: 'set' object is not subscriptable" ] } ], "source": [ "print(a[:])" ] }, { "cell_type": "code", "execution_count": 60, "id": "cf8895c4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Jane'" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.pop()" ] }, { "cell_type": "code", "execution_count": 61, "id": "c72f9767", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'John'" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.pop()" ] }, { "cell_type": "code", "execution_count": 62, "id": "575b9bd0", "metadata": {}, "outputs": [ { "ename": "KeyError", "evalue": "'pop from an empty set'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[62], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m a\u001b[38;5;241m.\u001b[39mpop()\n", "\u001b[1;31mKeyError\u001b[0m: 'pop from an empty set'" ] } ], "source": [ "a.pop()" ] }, { "cell_type": "code", "execution_count": 63, "id": "ca571017", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'J', 'h', 'n', 'o'}" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.update(\"John\")\n", "a" ] }, { "cell_type": "code", "execution_count": 64, "id": "101d1584", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "set()" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.clear()\n", "a" ] }, { "cell_type": "code", "execution_count": 65, "id": "21713afd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Jane', 'John'}" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.update([\"John\", \"Jane\"])\n", "a" ] }, { "cell_type": "markdown", "id": "0111b2e3", "metadata": {}, "source": [ "And that's it about these basic data structures. I hope you liked these simple examples. There is of course much more to learn, but that's for the future. Remember that you can always type help(something) (for example help(set) and you will see what else you can do with that something (for example set)." ] }, { "cell_type": "code", "execution_count": 66, "id": "2daddd80", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on class set in module builtins:\n", "\n", "class set(object)\n", " | set() -> new empty set object\n", " | set(iterable) -> new set object\n", " | \n", " | Build an unordered collection of unique elements.\n", " | \n", " | Methods defined here:\n", " | \n", " | __and__(self, value, /)\n", " | Return self&value.\n", " | \n", " | __contains__(...)\n", " | x.__contains__(y) <==> y in x.\n", " | \n", " | __eq__(self, value, /)\n", " | Return self==value.\n", " | \n", " | __ge__(self, value, /)\n", " | Return self>=value.\n", " | \n", " | __getattribute__(self, name, /)\n", " | Return getattr(self, name).\n", " | \n", " | __gt__(self, value, /)\n", " | Return self>value.\n", " | \n", " | __iand__(self, value, /)\n", " | Return self&=value.\n", " | \n", " | __init__(self, /, *args, **kwargs)\n", " | Initialize self. See help(type(self)) for accurate signature.\n", " | \n", " | __ior__(self, value, /)\n", " | Return self|=value.\n", " | \n", " | __isub__(self, value, /)\n", " | Return self-=value.\n", " | \n", " | __iter__(self, /)\n", " | Implement iter(self).\n", " | \n", " | __ixor__(self, value, /)\n", " | Return self^=value.\n", " | \n", " | __le__(self, value, /)\n", " | Return self<=value.\n", " | \n", " | __len__(self, /)\n", " | Return len(self).\n", " | \n", " | __lt__(self, value, /)\n", " | Return self size of S in memory, in bytes\n", " | \n", " | __sub__(self, value, /)\n", " | Return self-value.\n", " | \n", " | __xor__(self, value, /)\n", " | Return self^value.\n", " | \n", " | add(...)\n", " | Add an element to a set.\n", " | \n", " | This has no effect if the element is already present.\n", " | \n", " | clear(...)\n", " | Remove all elements from this set.\n", " | \n", " | copy(...)\n", " | Return a shallow copy of a set.\n", " | \n", " | difference(...)\n", " | Return the difference of two or more sets as a new set.\n", " | \n", " | (i.e. all elements that are in this set but not the others.)\n", " | \n", " | difference_update(...)\n", " | Remove all elements of another set from this set.\n", " | \n", " | discard(...)\n", " | Remove an element from a set if it is a member.\n", " | \n", " | Unlike set.remove(), the discard() method does not raise\n", " | an exception when an element is missing from the set.\n", " | \n", " | intersection(...)\n", " | Return the intersection of two sets as a new set.\n", " | \n", " | (i.e. all elements that are in both sets.)\n", " | \n", " | intersection_update(...)\n", " | Update a set with the intersection of itself and another.\n", " | \n", " | isdisjoint(...)\n", " | Return True if two sets have a null intersection.\n", " | \n", " | issubset(self, other, /)\n", " | Test whether every element in the set is in other.\n", " | \n", " | issuperset(self, other, /)\n", " | Test whether every element in other is in the set.\n", " | \n", " | pop(...)\n", " | Remove and return an arbitrary set element.\n", " | Raises KeyError if the set is empty.\n", " | \n", " | remove(...)\n", " | Remove an element from a set; it must be a member.\n", " | \n", " | If the element is not a member, raise a KeyError.\n", " | \n", " | symmetric_difference(...)\n", " | Return the symmetric difference of two sets as a new set.\n", " | \n", " | (i.e. all elements that are in exactly one of the sets.)\n", " | \n", " | symmetric_difference_update(...)\n", " | Update a set with the symmetric difference of itself and another.\n", " | \n", " | union(...)\n", " | Return the union of sets as a new set.\n", " | \n", " | (i.e. all elements that are in either set.)\n", " | \n", " | update(...)\n", " | Update a set with the union of itself and others.\n", " | \n", " | ----------------------------------------------------------------------\n", " | Class methods defined here:\n", " | \n", " | __class_getitem__(...) from builtins.type\n", " | See PEP 585\n", " | \n", " | ----------------------------------------------------------------------\n", " | Static methods defined here:\n", " | \n", " | __new__(*args, **kwargs) from builtins.type\n", " | Create and return a new object. See help(type) for accurate signature.\n", " | \n", " | ----------------------------------------------------------------------\n", " | Data and other attributes defined here:\n", " | \n", " | __hash__ = None\n", "\n" ] } ], "source": [ "help(set)" ] }, { "cell_type": "markdown", "id": "4bbab277", "metadata": {}, "source": [ "Meanwhile, we can also check more advanced data structres from numpy and pandas. \n", "\n", "And again, try figuring out the output before you see it." ] }, { "cell_type": "markdown", "id": "c54f0a33", "metadata": {}, "source": [ "### Numpy Array" ] }, { "cell_type": "code", "execution_count": 67, "id": "eb74206e", "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 68, "id": "1bf27476", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0., 0., 0.],\n", " [0., 0., 0.]])" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = np.zeros([2,3])\n", "a" ] }, { "cell_type": "code", "execution_count": 69, "id": "b2abfc75", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0., 0., 0.])" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[0]" ] }, { "cell_type": "code", "execution_count": 70, "id": "1c493e81", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0., 0., 0.]])" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[:1]" ] }, { "cell_type": "code", "execution_count": 71, "id": "827d5f49", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0., 0.])" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[:, 0]" ] }, { "cell_type": "code", "execution_count": 72, "id": "aa4eaee6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[0,0]" ] }, { "cell_type": "code", "execution_count": 73, "id": "300c409c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1.1, 0. , 0. ],\n", " [0. , 0. , 0. ]])" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[0,0] = 1.1\n", "a" ] }, { "cell_type": "code", "execution_count": 74, "id": "873f55be", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1.1, 2. , 0. ],\n", " [0. , 2. , 0. ]])" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[:, 1] = 2\n", "a" ] }, { "cell_type": "code", "execution_count": 75, "id": "05cbd280", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1.1, 2. , 0. ],\n", " [3. , 3. , 3. ]])" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[-1, :] = 3\n", "a" ] }, { "cell_type": "code", "execution_count": 76, "id": "1d8f8c16", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1.1, 2. , 3. ])" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = a[0, :]\n", "a[2] = 3\n", "a" ] }, { "cell_type": "markdown", "id": "3473a04f", "metadata": {}, "source": [ "### Pandas DataFrame" ] }, { "cell_type": "markdown", "id": "f51da351", "metadata": {}, "source": [ "And now let's check pandas DataFrame, very important in machine learning.\n", "\n", "By the way, here you can see how you can import something from pandas library." ] }, { "cell_type": "code", "execution_count": 77, "id": "2af85589", "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 78, "id": "b1bafacd", "metadata": {}, "outputs": [], "source": [ "data = pd.DataFrame([[1,2,3], [4,5,6]])" ] }, { "cell_type": "code", "execution_count": 79, "id": "2320774e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
0123
1456
\n", "
" ], "text/plain": [ " 0 1 2\n", "0 1 2 3\n", "1 4 5 6" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data" ] }, { "cell_type": "code", "execution_count": 80, "id": "33476dff", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1\n", "1 4\n", "Name: 0, dtype: int64" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[0]" ] }, { "cell_type": "code", "execution_count": 81, "id": "6786853d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
0123
\n", "
" ], "text/plain": [ " 0 1 2\n", "0 1 2 3" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[:1]" ] }, { "cell_type": "code", "execution_count": 82, "id": "daca1746", "metadata": { "scrolled": true }, "outputs": [ { "ename": "KeyError", "evalue": "(slice(None, None, None), 0)", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[82], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m data[:, \u001b[38;5;241m0\u001b[39m]\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\frame.py:4090\u001b[0m, in \u001b[0;36mDataFrame.__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 4088\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcolumns\u001b[38;5;241m.\u001b[39mnlevels \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[0;32m 4089\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_multilevel(key)\n\u001b[1;32m-> 4090\u001b[0m indexer \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcolumns\u001b[38;5;241m.\u001b[39mget_loc(key)\n\u001b[0;32m 4091\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m is_integer(indexer):\n\u001b[0;32m 4092\u001b[0m indexer \u001b[38;5;241m=\u001b[39m [indexer]\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexes\\range.py:417\u001b[0m, in \u001b[0;36mRangeIndex.get_loc\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 415\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n\u001b[0;32m 416\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(key, Hashable):\n\u001b[1;32m--> 417\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key)\n\u001b[0;32m 418\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_indexing_error(key)\n\u001b[0;32m 419\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key)\n", "\u001b[1;31mKeyError\u001b[0m: (slice(None, None, None), 0)" ] } ], "source": [ "data[:, 0]" ] }, { "cell_type": "code", "execution_count": 83, "id": "d994622b", "metadata": { "scrolled": true }, "outputs": [ { "ename": "KeyError", "evalue": "(0, 0)", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[83], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m data[\u001b[38;5;241m0\u001b[39m,\u001b[38;5;241m0\u001b[39m]\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\frame.py:4090\u001b[0m, in \u001b[0;36mDataFrame.__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 4088\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcolumns\u001b[38;5;241m.\u001b[39mnlevels \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[0;32m 4089\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_multilevel(key)\n\u001b[1;32m-> 4090\u001b[0m indexer \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcolumns\u001b[38;5;241m.\u001b[39mget_loc(key)\n\u001b[0;32m 4091\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m is_integer(indexer):\n\u001b[0;32m 4092\u001b[0m indexer \u001b[38;5;241m=\u001b[39m [indexer]\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexes\\range.py:417\u001b[0m, in \u001b[0;36mRangeIndex.get_loc\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 415\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n\u001b[0;32m 416\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(key, Hashable):\n\u001b[1;32m--> 417\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key)\n\u001b[0;32m 418\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_indexing_error(key)\n\u001b[0;32m 419\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key)\n", "\u001b[1;31mKeyError\u001b[0m: (0, 0)" ] } ], "source": [ "data[0,0]" ] }, { "cell_type": "code", "execution_count": 84, "id": "4decbf38", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1\n", "1 4\n", "Name: 0, dtype: int64" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.iloc[:, 0]" ] }, { "cell_type": "code", "execution_count": 85, "id": "e08296e4", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.iloc[0,0]" ] }, { "cell_type": "code", "execution_count": 86, "id": "79456d07", "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "Length of values (4) does not match length of index (5)", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\IPython\\core\\formatters.py:708\u001b[0m, in \u001b[0;36mPlainTextFormatter.__call__\u001b[1;34m(self, obj)\u001b[0m\n\u001b[0;32m 701\u001b[0m stream \u001b[38;5;241m=\u001b[39m StringIO()\n\u001b[0;32m 702\u001b[0m printer \u001b[38;5;241m=\u001b[39m pretty\u001b[38;5;241m.\u001b[39mRepresentationPrinter(stream, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mverbose,\n\u001b[0;32m 703\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmax_width, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnewline,\n\u001b[0;32m 704\u001b[0m max_seq_length\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmax_seq_length,\n\u001b[0;32m 705\u001b[0m singleton_pprinters\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msingleton_printers,\n\u001b[0;32m 706\u001b[0m type_pprinters\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtype_printers,\n\u001b[0;32m 707\u001b[0m deferred_pprinters\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdeferred_printers)\n\u001b[1;32m--> 708\u001b[0m printer\u001b[38;5;241m.\u001b[39mpretty(obj)\n\u001b[0;32m 709\u001b[0m printer\u001b[38;5;241m.\u001b[39mflush()\n\u001b[0;32m 710\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m stream\u001b[38;5;241m.\u001b[39mgetvalue()\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\IPython\\lib\\pretty.py:410\u001b[0m, in \u001b[0;36mRepresentationPrinter.pretty\u001b[1;34m(self, obj)\u001b[0m\n\u001b[0;32m 407\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m meth(obj, \u001b[38;5;28mself\u001b[39m, cycle)\n\u001b[0;32m 408\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mobject\u001b[39m \\\n\u001b[0;32m 409\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mcallable\u001b[39m(\u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__dict__\u001b[39m\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m__repr__\u001b[39m\u001b[38;5;124m'\u001b[39m)):\n\u001b[1;32m--> 410\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m _repr_pprint(obj, \u001b[38;5;28mself\u001b[39m, cycle)\n\u001b[0;32m 412\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m _default_pprint(obj, \u001b[38;5;28mself\u001b[39m, cycle)\n\u001b[0;32m 413\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\IPython\\lib\\pretty.py:778\u001b[0m, in \u001b[0;36m_repr_pprint\u001b[1;34m(obj, p, cycle)\u001b[0m\n\u001b[0;32m 776\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"A pprint that just redirects to the normal repr function.\"\"\"\u001b[39;00m\n\u001b[0;32m 777\u001b[0m \u001b[38;5;66;03m# Find newlines and replace them with p.break_()\u001b[39;00m\n\u001b[1;32m--> 778\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mrepr\u001b[39m(obj)\n\u001b[0;32m 779\u001b[0m lines \u001b[38;5;241m=\u001b[39m output\u001b[38;5;241m.\u001b[39msplitlines()\n\u001b[0;32m 780\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m p\u001b[38;5;241m.\u001b[39mgroup():\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\frame.py:1203\u001b[0m, in \u001b[0;36mDataFrame.__repr__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1200\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m buf\u001b[38;5;241m.\u001b[39mgetvalue()\n\u001b[0;32m 1202\u001b[0m repr_params \u001b[38;5;241m=\u001b[39m fmt\u001b[38;5;241m.\u001b[39mget_dataframe_repr_params()\n\u001b[1;32m-> 1203\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mto_string(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mrepr_params)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\util\\_decorators.py:333\u001b[0m, in \u001b[0;36mdeprecate_nonkeyword_arguments..decorate..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 327\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m>\u001b[39m num_allow_args:\n\u001b[0;32m 328\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[0;32m 329\u001b[0m msg\u001b[38;5;241m.\u001b[39mformat(arguments\u001b[38;5;241m=\u001b[39m_format_argument_list(allow_args)),\n\u001b[0;32m 330\u001b[0m \u001b[38;5;167;01mFutureWarning\u001b[39;00m,\n\u001b[0;32m 331\u001b[0m stacklevel\u001b[38;5;241m=\u001b[39mfind_stack_level(),\n\u001b[0;32m 332\u001b[0m )\n\u001b[1;32m--> 333\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\frame.py:1383\u001b[0m, in \u001b[0;36mDataFrame.to_string\u001b[1;34m(self, buf, columns, col_space, header, index, na_rep, formatters, float_format, sparsify, index_names, justify, max_rows, max_cols, show_dimensions, decimal, line_width, min_rows, max_colwidth, encoding)\u001b[0m\n\u001b[0;32m 1364\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m option_context(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdisplay.max_colwidth\u001b[39m\u001b[38;5;124m\"\u001b[39m, max_colwidth):\n\u001b[0;32m 1365\u001b[0m formatter \u001b[38;5;241m=\u001b[39m fmt\u001b[38;5;241m.\u001b[39mDataFrameFormatter(\n\u001b[0;32m 1366\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 1367\u001b[0m columns\u001b[38;5;241m=\u001b[39mcolumns,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1381\u001b[0m decimal\u001b[38;5;241m=\u001b[39mdecimal,\n\u001b[0;32m 1382\u001b[0m )\n\u001b[1;32m-> 1383\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fmt\u001b[38;5;241m.\u001b[39mDataFrameRenderer(formatter)\u001b[38;5;241m.\u001b[39mto_string(\n\u001b[0;32m 1384\u001b[0m buf\u001b[38;5;241m=\u001b[39mbuf,\n\u001b[0;32m 1385\u001b[0m encoding\u001b[38;5;241m=\u001b[39mencoding,\n\u001b[0;32m 1386\u001b[0m line_width\u001b[38;5;241m=\u001b[39mline_width,\n\u001b[0;32m 1387\u001b[0m )\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\format.py:962\u001b[0m, in \u001b[0;36mDataFrameRenderer.to_string\u001b[1;34m(self, buf, encoding, line_width)\u001b[0m\n\u001b[0;32m 959\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mio\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mformats\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mstring\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m StringFormatter\n\u001b[0;32m 961\u001b[0m string_formatter \u001b[38;5;241m=\u001b[39m StringFormatter(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt, line_width\u001b[38;5;241m=\u001b[39mline_width)\n\u001b[1;32m--> 962\u001b[0m string \u001b[38;5;241m=\u001b[39m string_formatter\u001b[38;5;241m.\u001b[39mto_string()\n\u001b[0;32m 963\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m save_to_buffer(string, buf\u001b[38;5;241m=\u001b[39mbuf, encoding\u001b[38;5;241m=\u001b[39mencoding)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\string.py:29\u001b[0m, in \u001b[0;36mStringFormatter.to_string\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 28\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mto_string\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mstr\u001b[39m:\n\u001b[1;32m---> 29\u001b[0m text \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_string_representation()\n\u001b[0;32m 30\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mshould_show_dimensions:\n\u001b[0;32m 31\u001b[0m text \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtext\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mdimensions_info\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\string.py:44\u001b[0m, in \u001b[0;36mStringFormatter._get_string_representation\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 41\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mframe\u001b[38;5;241m.\u001b[39mempty:\n\u001b[0;32m 42\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_empty_info_line\n\u001b[1;32m---> 44\u001b[0m strcols \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_strcols()\n\u001b[0;32m 46\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mline_width \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 47\u001b[0m \u001b[38;5;66;03m# no need to wrap around just print the whole frame\u001b[39;00m\n\u001b[0;32m 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39madj\u001b[38;5;241m.\u001b[39madjoin(\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m*\u001b[39mstrcols)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\string.py:35\u001b[0m, in \u001b[0;36mStringFormatter._get_strcols\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 34\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_get_strcols\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mstr\u001b[39m]]:\n\u001b[1;32m---> 35\u001b[0m strcols \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mget_strcols()\n\u001b[0;32m 36\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mis_truncated:\n\u001b[0;32m 37\u001b[0m strcols \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_insert_dot_separators(strcols)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\format.py:476\u001b[0m, in \u001b[0;36mDataFrameFormatter.get_strcols\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 472\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget_strcols\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mstr\u001b[39m]]:\n\u001b[0;32m 473\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 474\u001b[0m \u001b[38;5;124;03m Render a DataFrame to a list of columns (as lists of strings).\u001b[39;00m\n\u001b[0;32m 475\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 476\u001b[0m strcols \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_strcols_without_index()\n\u001b[0;32m 478\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindex:\n\u001b[0;32m 479\u001b[0m str_index \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_formatted_index(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtr_frame)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\format.py:729\u001b[0m, in \u001b[0;36mDataFrameFormatter._get_strcols_without_index\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 727\u001b[0m str_columns \u001b[38;5;241m=\u001b[39m [[label] \u001b[38;5;28;01mfor\u001b[39;00m label \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mheader]\n\u001b[0;32m 728\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 729\u001b[0m str_columns \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_formatted_column_labels(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtr_frame)\n\u001b[0;32m 731\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mshow_row_idx_names:\n\u001b[0;32m 732\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m str_columns:\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\format.py:808\u001b[0m, in \u001b[0;36mDataFrameFormatter._get_formatted_column_labels\u001b[1;34m(self, frame)\u001b[0m\n\u001b[0;32m 806\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 807\u001b[0m fmt_columns \u001b[38;5;241m=\u001b[39m columns\u001b[38;5;241m.\u001b[39m_format_flat(include_name\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[1;32m--> 808\u001b[0m dtypes \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mframe\u001b[38;5;241m.\u001b[39mdtypes\n\u001b[0;32m 809\u001b[0m need_leadsp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mdict\u001b[39m(\u001b[38;5;28mzip\u001b[39m(fmt_columns, \u001b[38;5;28mmap\u001b[39m(is_numeric_dtype, dtypes)))\n\u001b[0;32m 810\u001b[0m str_columns \u001b[38;5;241m=\u001b[39m [\n\u001b[0;32m 811\u001b[0m [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m x \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_formatter(i) \u001b[38;5;129;01mand\u001b[39;00m need_leadsp[x] \u001b[38;5;28;01melse\u001b[39;00m x]\n\u001b[0;32m 812\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, x \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(fmt_columns)\n\u001b[0;32m 813\u001b[0m ]\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\generic.py:6458\u001b[0m, in \u001b[0;36mNDFrame.dtypes\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 6431\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 6432\u001b[0m \u001b[38;5;124;03mReturn the dtypes in the DataFrame.\u001b[39;00m\n\u001b[0;32m 6433\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 6455\u001b[0m \u001b[38;5;124;03mdtype: object\u001b[39;00m\n\u001b[0;32m 6456\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 6457\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_mgr\u001b[38;5;241m.\u001b[39mget_dtypes()\n\u001b[1;32m-> 6458\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_constructor_sliced(data, index\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_info_axis, dtype\u001b[38;5;241m=\u001b[39mnp\u001b[38;5;241m.\u001b[39mobject_)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\series.py:575\u001b[0m, in \u001b[0;36mSeries.__init__\u001b[1;34m(self, data, index, dtype, name, copy, fastpath)\u001b[0m\n\u001b[0;32m 573\u001b[0m index \u001b[38;5;241m=\u001b[39m default_index(\u001b[38;5;28mlen\u001b[39m(data))\n\u001b[0;32m 574\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m is_list_like(data):\n\u001b[1;32m--> 575\u001b[0m com\u001b[38;5;241m.\u001b[39mrequire_length_match(data, index)\n\u001b[0;32m 577\u001b[0m \u001b[38;5;66;03m# create/copy the manager\u001b[39;00m\n\u001b[0;32m 578\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data, (SingleBlockManager, SingleArrayManager)):\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\common.py:573\u001b[0m, in \u001b[0;36mrequire_length_match\u001b[1;34m(data, index)\u001b[0m\n\u001b[0;32m 569\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 570\u001b[0m \u001b[38;5;124;03mCheck the length of data matches the length of the index.\u001b[39;00m\n\u001b[0;32m 571\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 572\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(data) \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mlen\u001b[39m(index):\n\u001b[1;32m--> 573\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[0;32m 574\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLength of values \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 575\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m(\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(data)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m) \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 576\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdoes not match length of index \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 577\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m(\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(index)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m)\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 578\u001b[0m )\n", "\u001b[1;31mValueError\u001b[0m: Length of values (4) does not match length of index (5)" ] }, { "ename": "IndexError", "evalue": "index 4 is out of bounds for axis 0 with size 4", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\IPython\\core\\formatters.py:344\u001b[0m, in \u001b[0;36mBaseFormatter.__call__\u001b[1;34m(self, obj)\u001b[0m\n\u001b[0;32m 342\u001b[0m method \u001b[38;5;241m=\u001b[39m get_real_method(obj, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprint_method)\n\u001b[0;32m 343\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 344\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m method()\n\u001b[0;32m 345\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 346\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\frame.py:1245\u001b[0m, in \u001b[0;36mDataFrame._repr_html_\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1223\u001b[0m show_dimensions \u001b[38;5;241m=\u001b[39m get_option(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdisplay.show_dimensions\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 1225\u001b[0m formatter \u001b[38;5;241m=\u001b[39m fmt\u001b[38;5;241m.\u001b[39mDataFrameFormatter(\n\u001b[0;32m 1226\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 1227\u001b[0m columns\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1243\u001b[0m decimal\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 1244\u001b[0m )\n\u001b[1;32m-> 1245\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fmt\u001b[38;5;241m.\u001b[39mDataFrameRenderer(formatter)\u001b[38;5;241m.\u001b[39mto_html(notebook\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[0;32m 1246\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1247\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\format.py:936\u001b[0m, in \u001b[0;36mDataFrameRenderer.to_html\u001b[1;34m(self, buf, encoding, classes, notebook, border, table_id, render_links)\u001b[0m\n\u001b[0;32m 927\u001b[0m Klass \u001b[38;5;241m=\u001b[39m NotebookFormatter \u001b[38;5;28;01mif\u001b[39;00m notebook \u001b[38;5;28;01melse\u001b[39;00m HTMLFormatter\n\u001b[0;32m 929\u001b[0m html_formatter \u001b[38;5;241m=\u001b[39m Klass(\n\u001b[0;32m 930\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt,\n\u001b[0;32m 931\u001b[0m classes\u001b[38;5;241m=\u001b[39mclasses,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 934\u001b[0m render_links\u001b[38;5;241m=\u001b[39mrender_links,\n\u001b[0;32m 935\u001b[0m )\n\u001b[1;32m--> 936\u001b[0m string \u001b[38;5;241m=\u001b[39m html_formatter\u001b[38;5;241m.\u001b[39mto_string()\n\u001b[0;32m 937\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m save_to_buffer(string, buf\u001b[38;5;241m=\u001b[39mbuf, encoding\u001b[38;5;241m=\u001b[39mencoding)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\html.py:88\u001b[0m, in \u001b[0;36mHTMLFormatter.to_string\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 87\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mto_string\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mstr\u001b[39m:\n\u001b[1;32m---> 88\u001b[0m lines \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrender()\n\u001b[0;32m 89\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28many\u001b[39m(\u001b[38;5;28misinstance\u001b[39m(x, \u001b[38;5;28mstr\u001b[39m) \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m lines):\n\u001b[0;32m 90\u001b[0m lines \u001b[38;5;241m=\u001b[39m [\u001b[38;5;28mstr\u001b[39m(x) \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m lines]\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\html.py:644\u001b[0m, in \u001b[0;36mNotebookFormatter.render\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 642\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwrite(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m
\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 643\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwrite_style()\n\u001b[1;32m--> 644\u001b[0m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mrender()\n\u001b[0;32m 645\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwrite(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m
\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 646\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39melements\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\html.py:94\u001b[0m, in \u001b[0;36mHTMLFormatter.render\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 93\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrender\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mstr\u001b[39m]:\n\u001b[1;32m---> 94\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_write_table()\n\u001b[0;32m 96\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mshould_show_dimensions:\n\u001b[0;32m 97\u001b[0m by \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mchr\u001b[39m(\u001b[38;5;241m215\u001b[39m) \u001b[38;5;66;03m# × # noqa: RUF003\u001b[39;00m\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\html.py:269\u001b[0m, in \u001b[0;36mHTMLFormatter._write_table\u001b[1;34m(self, indent)\u001b[0m\n\u001b[0;32m 266\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mheader \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mshow_row_idx_names:\n\u001b[0;32m 267\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_write_header(indent \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindent_delta)\n\u001b[1;32m--> 269\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_write_body(indent \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindent_delta)\n\u001b[0;32m 271\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwrite(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\u001b[39m\u001b[38;5;124m\"\u001b[39m, indent)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\html.py:417\u001b[0m, in \u001b[0;36mHTMLFormatter._write_body\u001b[1;34m(self, indent)\u001b[0m\n\u001b[0;32m 415\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_write_body\u001b[39m(\u001b[38;5;28mself\u001b[39m, indent: \u001b[38;5;28mint\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 416\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwrite(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\u001b[39m\u001b[38;5;124m\"\u001b[39m, indent)\n\u001b[1;32m--> 417\u001b[0m fmt_values \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_formatted_values()\n\u001b[0;32m 419\u001b[0m \u001b[38;5;66;03m# write values\u001b[39;00m\n\u001b[0;32m 420\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mindex \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mframe\u001b[38;5;241m.\u001b[39mindex, MultiIndex):\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\html.py:607\u001b[0m, in \u001b[0;36mNotebookFormatter._get_formatted_values\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 606\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_get_formatted_values\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mint\u001b[39m, \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mstr\u001b[39m]]:\n\u001b[1;32m--> 607\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {i: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mformat_col(i) \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mncols)}\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\html.py:607\u001b[0m, in \u001b[0;36m\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 606\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_get_formatted_values\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mint\u001b[39m, \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mstr\u001b[39m]]:\n\u001b[1;32m--> 607\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {i: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mformat_col(i) \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mncols)}\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\format.py:755\u001b[0m, in \u001b[0;36mDataFrameFormatter.format_col\u001b[1;34m(self, i)\u001b[0m\n\u001b[0;32m 752\u001b[0m frame \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtr_frame\n\u001b[0;32m 753\u001b[0m formatter \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_formatter(i)\n\u001b[0;32m 754\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m format_array(\n\u001b[1;32m--> 755\u001b[0m frame\u001b[38;5;241m.\u001b[39miloc[:, i]\u001b[38;5;241m.\u001b[39m_values,\n\u001b[0;32m 756\u001b[0m formatter,\n\u001b[0;32m 757\u001b[0m float_format\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfloat_format,\n\u001b[0;32m 758\u001b[0m na_rep\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mna_rep,\n\u001b[0;32m 759\u001b[0m space\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcol_space\u001b[38;5;241m.\u001b[39mget(frame\u001b[38;5;241m.\u001b[39mcolumns[i]),\n\u001b[0;32m 760\u001b[0m decimal\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdecimal,\n\u001b[0;32m 761\u001b[0m leading_space\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindex,\n\u001b[0;32m 762\u001b[0m )\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:1184\u001b[0m, in \u001b[0;36m_LocationIndexer.__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 1182\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_scalar_access(key):\n\u001b[0;32m 1183\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39m_get_value(\u001b[38;5;241m*\u001b[39mkey, takeable\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_takeable)\n\u001b[1;32m-> 1184\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_tuple(key)\n\u001b[0;32m 1185\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1186\u001b[0m \u001b[38;5;66;03m# we by definition only have the 0th axis\u001b[39;00m\n\u001b[0;32m 1187\u001b[0m axis \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxis \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;241m0\u001b[39m\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:1692\u001b[0m, in \u001b[0;36m_iLocIndexer._getitem_tuple\u001b[1;34m(self, tup)\u001b[0m\n\u001b[0;32m 1690\u001b[0m tup \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_validate_tuple_indexer(tup)\n\u001b[0;32m 1691\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m suppress(IndexingError):\n\u001b[1;32m-> 1692\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_lowerdim(tup)\n\u001b[0;32m 1694\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_tuple_same_dim(tup)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:1065\u001b[0m, in \u001b[0;36m_LocationIndexer._getitem_lowerdim\u001b[1;34m(self, tup)\u001b[0m\n\u001b[0;32m 1061\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, key \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(tup):\n\u001b[0;32m 1062\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m is_label_like(key):\n\u001b[0;32m 1063\u001b[0m \u001b[38;5;66;03m# We don't need to check for tuples here because those are\u001b[39;00m\n\u001b[0;32m 1064\u001b[0m \u001b[38;5;66;03m# caught by the _is_nested_tuple_indexer check above.\u001b[39;00m\n\u001b[1;32m-> 1065\u001b[0m section \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_axis(key, axis\u001b[38;5;241m=\u001b[39mi)\n\u001b[0;32m 1067\u001b[0m \u001b[38;5;66;03m# We should never have a scalar section here, because\u001b[39;00m\n\u001b[0;32m 1068\u001b[0m \u001b[38;5;66;03m# _getitem_lowerdim is only called after a check for\u001b[39;00m\n\u001b[0;32m 1069\u001b[0m \u001b[38;5;66;03m# is_scalar_access, which that would be.\u001b[39;00m\n\u001b[0;32m 1070\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m section\u001b[38;5;241m.\u001b[39mndim \u001b[38;5;241m==\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mndim:\n\u001b[0;32m 1071\u001b[0m \u001b[38;5;66;03m# we're in the middle of slicing through a MultiIndex\u001b[39;00m\n\u001b[0;32m 1072\u001b[0m \u001b[38;5;66;03m# revise the key wrt to `section` by inserting an _NS\u001b[39;00m\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:1754\u001b[0m, in \u001b[0;36m_iLocIndexer._getitem_axis\u001b[1;34m(self, key, axis)\u001b[0m\n\u001b[0;32m 1751\u001b[0m \u001b[38;5;66;03m# validate the location\u001b[39;00m\n\u001b[0;32m 1752\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_validate_integer(key, axis)\n\u001b[1;32m-> 1754\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39m_ixs(key, axis\u001b[38;5;241m=\u001b[39maxis)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\frame.py:3998\u001b[0m, in \u001b[0;36mDataFrame._ixs\u001b[1;34m(self, i, axis)\u001b[0m\n\u001b[0;32m 3994\u001b[0m \u001b[38;5;66;03m# icol\u001b[39;00m\n\u001b[0;32m 3995\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 3996\u001b[0m label \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcolumns[i]\n\u001b[1;32m-> 3998\u001b[0m col_mgr \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_mgr\u001b[38;5;241m.\u001b[39miget(i)\n\u001b[0;32m 3999\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_box_col_values(col_mgr, i)\n\u001b[0;32m 4001\u001b[0m \u001b[38;5;66;03m# this is a cached value, mark it so\u001b[39;00m\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:1016\u001b[0m, in \u001b[0;36mBlockManager.iget\u001b[1;34m(self, i, track_ref)\u001b[0m\n\u001b[0;32m 1012\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21miget\u001b[39m(\u001b[38;5;28mself\u001b[39m, i: \u001b[38;5;28mint\u001b[39m, track_ref: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m SingleBlockManager:\n\u001b[0;32m 1013\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 1014\u001b[0m \u001b[38;5;124;03m Return the data as a SingleBlockManager.\u001b[39;00m\n\u001b[0;32m 1015\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m-> 1016\u001b[0m block \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mblocks[\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mblknos[i]]\n\u001b[0;32m 1017\u001b[0m values \u001b[38;5;241m=\u001b[39m block\u001b[38;5;241m.\u001b[39miget(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mblklocs[i])\n\u001b[0;32m 1019\u001b[0m \u001b[38;5;66;03m# shortcut for select a single-dim from a 2-dim BM\u001b[39;00m\n", "\u001b[1;31mIndexError\u001b[0m: index 4 is out of bounds for axis 0 with size 4" ] } ], "source": [ "data[0,0] = 1.1\n", "data" ] }, { "cell_type": "code", "execution_count": 87, "id": "a2bb1c2b", "metadata": { "scrolled": true }, "outputs": [ { "ename": "TypeError", "evalue": "unhashable type: 'slice'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[87], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m data[:, \u001b[38;5;241m1\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m2\u001b[39m\n\u001b[0;32m 2\u001b[0m data\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\frame.py:4299\u001b[0m, in \u001b[0;36mDataFrame.__setitem__\u001b[1;34m(self, key, value)\u001b[0m\n\u001b[0;32m 4296\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_setitem_array([key], value)\n\u001b[0;32m 4297\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 4298\u001b[0m \u001b[38;5;66;03m# set column\u001b[39;00m\n\u001b[1;32m-> 4299\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_set_item(key, value)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\frame.py:4515\u001b[0m, in \u001b[0;36mDataFrame._set_item\u001b[1;34m(self, key, value)\u001b[0m\n\u001b[0;32m 4503\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 4504\u001b[0m \u001b[38;5;124;03mAdd series to DataFrame in specified column.\u001b[39;00m\n\u001b[0;32m 4505\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 4510\u001b[0m \u001b[38;5;124;03mensure homogeneity.\u001b[39;00m\n\u001b[0;32m 4511\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 4512\u001b[0m value, refs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_sanitize_column(value)\n\u001b[0;32m 4514\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\n\u001b[1;32m-> 4515\u001b[0m key \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcolumns\n\u001b[0;32m 4516\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m value\u001b[38;5;241m.\u001b[39mndim \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[0;32m 4517\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(value\u001b[38;5;241m.\u001b[39mdtype, ExtensionDtype)\n\u001b[0;32m 4518\u001b[0m ):\n\u001b[0;32m 4519\u001b[0m \u001b[38;5;66;03m# broadcast across multiple columns if necessary\u001b[39;00m\n\u001b[0;32m 4520\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcolumns\u001b[38;5;241m.\u001b[39mis_unique \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcolumns, MultiIndex):\n\u001b[0;32m 4521\u001b[0m existing_piece \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m[key]\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:5358\u001b[0m, in \u001b[0;36mIndex.__contains__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 5323\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__contains__\u001b[39m(\u001b[38;5;28mself\u001b[39m, key: Any) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mbool\u001b[39m:\n\u001b[0;32m 5324\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 5325\u001b[0m \u001b[38;5;124;03m Return a boolean indicating whether the provided key is in the index.\u001b[39;00m\n\u001b[0;32m 5326\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 5356\u001b[0m \u001b[38;5;124;03m False\u001b[39;00m\n\u001b[0;32m 5357\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m-> 5358\u001b[0m \u001b[38;5;28mhash\u001b[39m(key)\n\u001b[0;32m 5359\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 5360\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m key \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine\n", "\u001b[1;31mTypeError\u001b[0m: unhashable type: 'slice'" ] } ], "source": [ "data[:, 1] = 2\n", "data" ] }, { "cell_type": "code", "execution_count": 88, "id": "43ba1b3c", "metadata": { "scrolled": true }, "outputs": [ { "ename": "ValueError", "evalue": "Length of values (4) does not match length of index (5)", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[88], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m data\u001b[38;5;241m.\u001b[39miloc[\u001b[38;5;241m0\u001b[39m,\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1.1\u001b[39m\n\u001b[0;32m 2\u001b[0m data\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:911\u001b[0m, in \u001b[0;36m_LocationIndexer.__setitem__\u001b[1;34m(self, key, value)\u001b[0m\n\u001b[0;32m 908\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_has_valid_setitem_indexer(key)\n\u001b[0;32m 910\u001b[0m iloc \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mname \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124miloc\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39miloc\n\u001b[1;32m--> 911\u001b[0m iloc\u001b[38;5;241m.\u001b[39m_setitem_with_indexer(indexer, value, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mname)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:1942\u001b[0m, in \u001b[0;36m_iLocIndexer._setitem_with_indexer\u001b[1;34m(self, indexer, value, name)\u001b[0m\n\u001b[0;32m 1939\u001b[0m \u001b[38;5;66;03m# align and set the values\u001b[39;00m\n\u001b[0;32m 1940\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m take_split_path:\n\u001b[0;32m 1941\u001b[0m \u001b[38;5;66;03m# We have to operate column-wise\u001b[39;00m\n\u001b[1;32m-> 1942\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_setitem_with_indexer_split_path(indexer, value, name)\n\u001b[0;32m 1943\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1944\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_setitem_single_block(indexer, value, name)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:2035\u001b[0m, in \u001b[0;36m_iLocIndexer._setitem_with_indexer_split_path\u001b[1;34m(self, indexer, value, name)\u001b[0m\n\u001b[0;32m 2032\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 2033\u001b[0m \u001b[38;5;66;03m# scalar value\u001b[39;00m\n\u001b[0;32m 2034\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m loc \u001b[38;5;129;01min\u001b[39;00m ilocs:\n\u001b[1;32m-> 2035\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_setitem_single_column(loc, value, pi)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:2164\u001b[0m, in \u001b[0;36m_iLocIndexer._setitem_single_column\u001b[1;34m(self, loc, value, plane_indexer)\u001b[0m\n\u001b[0;32m 2160\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39misetitem(loc, value)\n\u001b[0;32m 2161\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 2162\u001b[0m \u001b[38;5;66;03m# set value into the column (first attempting to operate inplace, then\u001b[39;00m\n\u001b[0;32m 2163\u001b[0m \u001b[38;5;66;03m# falling back to casting if necessary)\u001b[39;00m\n\u001b[1;32m-> 2164\u001b[0m dtype \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39mdtypes\u001b[38;5;241m.\u001b[39miloc[loc]\n\u001b[0;32m 2165\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m dtype \u001b[38;5;241m==\u001b[39m np\u001b[38;5;241m.\u001b[39mvoid:\n\u001b[0;32m 2166\u001b[0m \u001b[38;5;66;03m# This means we're expanding, with multiple columns, e.g.\u001b[39;00m\n\u001b[0;32m 2167\u001b[0m \u001b[38;5;66;03m# df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]})\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 2170\u001b[0m \u001b[38;5;66;03m# Here, we replace those temporary `np.void` columns with\u001b[39;00m\n\u001b[0;32m 2171\u001b[0m \u001b[38;5;66;03m# columns of the appropriate dtype, based on `value`.\u001b[39;00m\n\u001b[0;32m 2172\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39miloc[:, loc] \u001b[38;5;241m=\u001b[39m construct_1d_array_from_inferred_fill_value(\n\u001b[0;32m 2173\u001b[0m value, \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj)\n\u001b[0;32m 2174\u001b[0m )\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\generic.py:6458\u001b[0m, in \u001b[0;36mNDFrame.dtypes\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 6431\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 6432\u001b[0m \u001b[38;5;124;03mReturn the dtypes in the DataFrame.\u001b[39;00m\n\u001b[0;32m 6433\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 6455\u001b[0m \u001b[38;5;124;03mdtype: object\u001b[39;00m\n\u001b[0;32m 6456\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 6457\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_mgr\u001b[38;5;241m.\u001b[39mget_dtypes()\n\u001b[1;32m-> 6458\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_constructor_sliced(data, index\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_info_axis, dtype\u001b[38;5;241m=\u001b[39mnp\u001b[38;5;241m.\u001b[39mobject_)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\series.py:575\u001b[0m, in \u001b[0;36mSeries.__init__\u001b[1;34m(self, data, index, dtype, name, copy, fastpath)\u001b[0m\n\u001b[0;32m 573\u001b[0m index \u001b[38;5;241m=\u001b[39m default_index(\u001b[38;5;28mlen\u001b[39m(data))\n\u001b[0;32m 574\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m is_list_like(data):\n\u001b[1;32m--> 575\u001b[0m com\u001b[38;5;241m.\u001b[39mrequire_length_match(data, index)\n\u001b[0;32m 577\u001b[0m \u001b[38;5;66;03m# create/copy the manager\u001b[39;00m\n\u001b[0;32m 578\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data, (SingleBlockManager, SingleArrayManager)):\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\common.py:573\u001b[0m, in \u001b[0;36mrequire_length_match\u001b[1;34m(data, index)\u001b[0m\n\u001b[0;32m 569\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 570\u001b[0m \u001b[38;5;124;03mCheck the length of data matches the length of the index.\u001b[39;00m\n\u001b[0;32m 571\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 572\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(data) \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mlen\u001b[39m(index):\n\u001b[1;32m--> 573\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[0;32m 574\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLength of values \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 575\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m(\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(data)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m) \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 576\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdoes not match length of index \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 577\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m(\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(index)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m)\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 578\u001b[0m )\n", "\u001b[1;31mValueError\u001b[0m: Length of values (4) does not match length of index (5)" ] } ], "source": [ "data.iloc[0,0] = 1.1\n", "data" ] }, { "cell_type": "code", "execution_count": 89, "id": "ddd928f6", "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "Length of values (4) does not match length of index (5)", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\IPython\\core\\formatters.py:708\u001b[0m, in \u001b[0;36mPlainTextFormatter.__call__\u001b[1;34m(self, obj)\u001b[0m\n\u001b[0;32m 701\u001b[0m stream \u001b[38;5;241m=\u001b[39m StringIO()\n\u001b[0;32m 702\u001b[0m printer \u001b[38;5;241m=\u001b[39m pretty\u001b[38;5;241m.\u001b[39mRepresentationPrinter(stream, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mverbose,\n\u001b[0;32m 703\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmax_width, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnewline,\n\u001b[0;32m 704\u001b[0m max_seq_length\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmax_seq_length,\n\u001b[0;32m 705\u001b[0m singleton_pprinters\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msingleton_printers,\n\u001b[0;32m 706\u001b[0m type_pprinters\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtype_printers,\n\u001b[0;32m 707\u001b[0m deferred_pprinters\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdeferred_printers)\n\u001b[1;32m--> 708\u001b[0m printer\u001b[38;5;241m.\u001b[39mpretty(obj)\n\u001b[0;32m 709\u001b[0m printer\u001b[38;5;241m.\u001b[39mflush()\n\u001b[0;32m 710\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m stream\u001b[38;5;241m.\u001b[39mgetvalue()\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\IPython\\lib\\pretty.py:410\u001b[0m, in \u001b[0;36mRepresentationPrinter.pretty\u001b[1;34m(self, obj)\u001b[0m\n\u001b[0;32m 407\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m meth(obj, \u001b[38;5;28mself\u001b[39m, cycle)\n\u001b[0;32m 408\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mobject\u001b[39m \\\n\u001b[0;32m 409\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mcallable\u001b[39m(\u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__dict__\u001b[39m\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m__repr__\u001b[39m\u001b[38;5;124m'\u001b[39m)):\n\u001b[1;32m--> 410\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m _repr_pprint(obj, \u001b[38;5;28mself\u001b[39m, cycle)\n\u001b[0;32m 412\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m _default_pprint(obj, \u001b[38;5;28mself\u001b[39m, cycle)\n\u001b[0;32m 413\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\IPython\\lib\\pretty.py:778\u001b[0m, in \u001b[0;36m_repr_pprint\u001b[1;34m(obj, p, cycle)\u001b[0m\n\u001b[0;32m 776\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"A pprint that just redirects to the normal repr function.\"\"\"\u001b[39;00m\n\u001b[0;32m 777\u001b[0m \u001b[38;5;66;03m# Find newlines and replace them with p.break_()\u001b[39;00m\n\u001b[1;32m--> 778\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mrepr\u001b[39m(obj)\n\u001b[0;32m 779\u001b[0m lines \u001b[38;5;241m=\u001b[39m output\u001b[38;5;241m.\u001b[39msplitlines()\n\u001b[0;32m 780\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m p\u001b[38;5;241m.\u001b[39mgroup():\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\frame.py:1203\u001b[0m, in \u001b[0;36mDataFrame.__repr__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1200\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m buf\u001b[38;5;241m.\u001b[39mgetvalue()\n\u001b[0;32m 1202\u001b[0m repr_params \u001b[38;5;241m=\u001b[39m fmt\u001b[38;5;241m.\u001b[39mget_dataframe_repr_params()\n\u001b[1;32m-> 1203\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mto_string(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mrepr_params)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\util\\_decorators.py:333\u001b[0m, in \u001b[0;36mdeprecate_nonkeyword_arguments..decorate..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 327\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m>\u001b[39m num_allow_args:\n\u001b[0;32m 328\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[0;32m 329\u001b[0m msg\u001b[38;5;241m.\u001b[39mformat(arguments\u001b[38;5;241m=\u001b[39m_format_argument_list(allow_args)),\n\u001b[0;32m 330\u001b[0m \u001b[38;5;167;01mFutureWarning\u001b[39;00m,\n\u001b[0;32m 331\u001b[0m stacklevel\u001b[38;5;241m=\u001b[39mfind_stack_level(),\n\u001b[0;32m 332\u001b[0m )\n\u001b[1;32m--> 333\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\frame.py:1383\u001b[0m, in \u001b[0;36mDataFrame.to_string\u001b[1;34m(self, buf, columns, col_space, header, index, na_rep, formatters, float_format, sparsify, index_names, justify, max_rows, max_cols, show_dimensions, decimal, line_width, min_rows, max_colwidth, encoding)\u001b[0m\n\u001b[0;32m 1364\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m option_context(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdisplay.max_colwidth\u001b[39m\u001b[38;5;124m\"\u001b[39m, max_colwidth):\n\u001b[0;32m 1365\u001b[0m formatter \u001b[38;5;241m=\u001b[39m fmt\u001b[38;5;241m.\u001b[39mDataFrameFormatter(\n\u001b[0;32m 1366\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 1367\u001b[0m columns\u001b[38;5;241m=\u001b[39mcolumns,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1381\u001b[0m decimal\u001b[38;5;241m=\u001b[39mdecimal,\n\u001b[0;32m 1382\u001b[0m )\n\u001b[1;32m-> 1383\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fmt\u001b[38;5;241m.\u001b[39mDataFrameRenderer(formatter)\u001b[38;5;241m.\u001b[39mto_string(\n\u001b[0;32m 1384\u001b[0m buf\u001b[38;5;241m=\u001b[39mbuf,\n\u001b[0;32m 1385\u001b[0m encoding\u001b[38;5;241m=\u001b[39mencoding,\n\u001b[0;32m 1386\u001b[0m line_width\u001b[38;5;241m=\u001b[39mline_width,\n\u001b[0;32m 1387\u001b[0m )\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\format.py:962\u001b[0m, in \u001b[0;36mDataFrameRenderer.to_string\u001b[1;34m(self, buf, encoding, line_width)\u001b[0m\n\u001b[0;32m 959\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mio\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mformats\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mstring\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m StringFormatter\n\u001b[0;32m 961\u001b[0m string_formatter \u001b[38;5;241m=\u001b[39m StringFormatter(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt, line_width\u001b[38;5;241m=\u001b[39mline_width)\n\u001b[1;32m--> 962\u001b[0m string \u001b[38;5;241m=\u001b[39m string_formatter\u001b[38;5;241m.\u001b[39mto_string()\n\u001b[0;32m 963\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m save_to_buffer(string, buf\u001b[38;5;241m=\u001b[39mbuf, encoding\u001b[38;5;241m=\u001b[39mencoding)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\string.py:29\u001b[0m, in \u001b[0;36mStringFormatter.to_string\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 28\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mto_string\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mstr\u001b[39m:\n\u001b[1;32m---> 29\u001b[0m text \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_string_representation()\n\u001b[0;32m 30\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mshould_show_dimensions:\n\u001b[0;32m 31\u001b[0m text \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtext\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mdimensions_info\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\string.py:44\u001b[0m, in \u001b[0;36mStringFormatter._get_string_representation\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 41\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mframe\u001b[38;5;241m.\u001b[39mempty:\n\u001b[0;32m 42\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_empty_info_line\n\u001b[1;32m---> 44\u001b[0m strcols \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_strcols()\n\u001b[0;32m 46\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mline_width \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 47\u001b[0m \u001b[38;5;66;03m# no need to wrap around just print the whole frame\u001b[39;00m\n\u001b[0;32m 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39madj\u001b[38;5;241m.\u001b[39madjoin(\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m*\u001b[39mstrcols)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\string.py:35\u001b[0m, in \u001b[0;36mStringFormatter._get_strcols\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 34\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_get_strcols\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mstr\u001b[39m]]:\n\u001b[1;32m---> 35\u001b[0m strcols \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mget_strcols()\n\u001b[0;32m 36\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mis_truncated:\n\u001b[0;32m 37\u001b[0m strcols \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_insert_dot_separators(strcols)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\format.py:476\u001b[0m, in \u001b[0;36mDataFrameFormatter.get_strcols\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 472\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget_strcols\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mstr\u001b[39m]]:\n\u001b[0;32m 473\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 474\u001b[0m \u001b[38;5;124;03m Render a DataFrame to a list of columns (as lists of strings).\u001b[39;00m\n\u001b[0;32m 475\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 476\u001b[0m strcols \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_strcols_without_index()\n\u001b[0;32m 478\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindex:\n\u001b[0;32m 479\u001b[0m str_index \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_formatted_index(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtr_frame)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\format.py:729\u001b[0m, in \u001b[0;36mDataFrameFormatter._get_strcols_without_index\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 727\u001b[0m str_columns \u001b[38;5;241m=\u001b[39m [[label] \u001b[38;5;28;01mfor\u001b[39;00m label \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mheader]\n\u001b[0;32m 728\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 729\u001b[0m str_columns \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_formatted_column_labels(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtr_frame)\n\u001b[0;32m 731\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mshow_row_idx_names:\n\u001b[0;32m 732\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m str_columns:\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\format.py:808\u001b[0m, in \u001b[0;36mDataFrameFormatter._get_formatted_column_labels\u001b[1;34m(self, frame)\u001b[0m\n\u001b[0;32m 806\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 807\u001b[0m fmt_columns \u001b[38;5;241m=\u001b[39m columns\u001b[38;5;241m.\u001b[39m_format_flat(include_name\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[1;32m--> 808\u001b[0m dtypes \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mframe\u001b[38;5;241m.\u001b[39mdtypes\n\u001b[0;32m 809\u001b[0m need_leadsp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mdict\u001b[39m(\u001b[38;5;28mzip\u001b[39m(fmt_columns, \u001b[38;5;28mmap\u001b[39m(is_numeric_dtype, dtypes)))\n\u001b[0;32m 810\u001b[0m str_columns \u001b[38;5;241m=\u001b[39m [\n\u001b[0;32m 811\u001b[0m [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m x \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_formatter(i) \u001b[38;5;129;01mand\u001b[39;00m need_leadsp[x] \u001b[38;5;28;01melse\u001b[39;00m x]\n\u001b[0;32m 812\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, x \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(fmt_columns)\n\u001b[0;32m 813\u001b[0m ]\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\generic.py:6458\u001b[0m, in \u001b[0;36mNDFrame.dtypes\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 6431\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 6432\u001b[0m \u001b[38;5;124;03mReturn the dtypes in the DataFrame.\u001b[39;00m\n\u001b[0;32m 6433\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 6455\u001b[0m \u001b[38;5;124;03mdtype: object\u001b[39;00m\n\u001b[0;32m 6456\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 6457\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_mgr\u001b[38;5;241m.\u001b[39mget_dtypes()\n\u001b[1;32m-> 6458\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_constructor_sliced(data, index\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_info_axis, dtype\u001b[38;5;241m=\u001b[39mnp\u001b[38;5;241m.\u001b[39mobject_)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\series.py:575\u001b[0m, in \u001b[0;36mSeries.__init__\u001b[1;34m(self, data, index, dtype, name, copy, fastpath)\u001b[0m\n\u001b[0;32m 573\u001b[0m index \u001b[38;5;241m=\u001b[39m default_index(\u001b[38;5;28mlen\u001b[39m(data))\n\u001b[0;32m 574\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m is_list_like(data):\n\u001b[1;32m--> 575\u001b[0m com\u001b[38;5;241m.\u001b[39mrequire_length_match(data, index)\n\u001b[0;32m 577\u001b[0m \u001b[38;5;66;03m# create/copy the manager\u001b[39;00m\n\u001b[0;32m 578\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data, (SingleBlockManager, SingleArrayManager)):\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\common.py:573\u001b[0m, in \u001b[0;36mrequire_length_match\u001b[1;34m(data, index)\u001b[0m\n\u001b[0;32m 569\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 570\u001b[0m \u001b[38;5;124;03mCheck the length of data matches the length of the index.\u001b[39;00m\n\u001b[0;32m 571\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 572\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(data) \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mlen\u001b[39m(index):\n\u001b[1;32m--> 573\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[0;32m 574\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLength of values \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 575\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m(\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(data)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m) \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 576\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdoes not match length of index \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 577\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m(\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(index)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m)\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 578\u001b[0m )\n", "\u001b[1;31mValueError\u001b[0m: Length of values (4) does not match length of index (5)" ] }, { "ename": "IndexError", "evalue": "index 4 is out of bounds for axis 0 with size 4", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\IPython\\core\\formatters.py:344\u001b[0m, in \u001b[0;36mBaseFormatter.__call__\u001b[1;34m(self, obj)\u001b[0m\n\u001b[0;32m 342\u001b[0m method \u001b[38;5;241m=\u001b[39m get_real_method(obj, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprint_method)\n\u001b[0;32m 343\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 344\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m method()\n\u001b[0;32m 345\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 346\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\frame.py:1245\u001b[0m, in \u001b[0;36mDataFrame._repr_html_\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1223\u001b[0m show_dimensions \u001b[38;5;241m=\u001b[39m get_option(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdisplay.show_dimensions\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 1225\u001b[0m formatter \u001b[38;5;241m=\u001b[39m fmt\u001b[38;5;241m.\u001b[39mDataFrameFormatter(\n\u001b[0;32m 1226\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 1227\u001b[0m columns\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1243\u001b[0m decimal\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 1244\u001b[0m )\n\u001b[1;32m-> 1245\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fmt\u001b[38;5;241m.\u001b[39mDataFrameRenderer(formatter)\u001b[38;5;241m.\u001b[39mto_html(notebook\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[0;32m 1246\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1247\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\format.py:936\u001b[0m, in \u001b[0;36mDataFrameRenderer.to_html\u001b[1;34m(self, buf, encoding, classes, notebook, border, table_id, render_links)\u001b[0m\n\u001b[0;32m 927\u001b[0m Klass \u001b[38;5;241m=\u001b[39m NotebookFormatter \u001b[38;5;28;01mif\u001b[39;00m notebook \u001b[38;5;28;01melse\u001b[39;00m HTMLFormatter\n\u001b[0;32m 929\u001b[0m html_formatter \u001b[38;5;241m=\u001b[39m Klass(\n\u001b[0;32m 930\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt,\n\u001b[0;32m 931\u001b[0m classes\u001b[38;5;241m=\u001b[39mclasses,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 934\u001b[0m render_links\u001b[38;5;241m=\u001b[39mrender_links,\n\u001b[0;32m 935\u001b[0m )\n\u001b[1;32m--> 936\u001b[0m string \u001b[38;5;241m=\u001b[39m html_formatter\u001b[38;5;241m.\u001b[39mto_string()\n\u001b[0;32m 937\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m save_to_buffer(string, buf\u001b[38;5;241m=\u001b[39mbuf, encoding\u001b[38;5;241m=\u001b[39mencoding)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\html.py:88\u001b[0m, in \u001b[0;36mHTMLFormatter.to_string\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 87\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mto_string\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mstr\u001b[39m:\n\u001b[1;32m---> 88\u001b[0m lines \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrender()\n\u001b[0;32m 89\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28many\u001b[39m(\u001b[38;5;28misinstance\u001b[39m(x, \u001b[38;5;28mstr\u001b[39m) \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m lines):\n\u001b[0;32m 90\u001b[0m lines \u001b[38;5;241m=\u001b[39m [\u001b[38;5;28mstr\u001b[39m(x) \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m lines]\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\html.py:644\u001b[0m, in \u001b[0;36mNotebookFormatter.render\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 642\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwrite(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m
\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 643\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwrite_style()\n\u001b[1;32m--> 644\u001b[0m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mrender()\n\u001b[0;32m 645\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwrite(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m
\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 646\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39melements\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\html.py:94\u001b[0m, in \u001b[0;36mHTMLFormatter.render\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 93\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrender\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mstr\u001b[39m]:\n\u001b[1;32m---> 94\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_write_table()\n\u001b[0;32m 96\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mshould_show_dimensions:\n\u001b[0;32m 97\u001b[0m by \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mchr\u001b[39m(\u001b[38;5;241m215\u001b[39m) \u001b[38;5;66;03m# × # noqa: RUF003\u001b[39;00m\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\html.py:269\u001b[0m, in \u001b[0;36mHTMLFormatter._write_table\u001b[1;34m(self, indent)\u001b[0m\n\u001b[0;32m 266\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mheader \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mshow_row_idx_names:\n\u001b[0;32m 267\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_write_header(indent \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindent_delta)\n\u001b[1;32m--> 269\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_write_body(indent \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindent_delta)\n\u001b[0;32m 271\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwrite(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\u001b[39m\u001b[38;5;124m\"\u001b[39m, indent)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\html.py:417\u001b[0m, in \u001b[0;36mHTMLFormatter._write_body\u001b[1;34m(self, indent)\u001b[0m\n\u001b[0;32m 415\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_write_body\u001b[39m(\u001b[38;5;28mself\u001b[39m, indent: \u001b[38;5;28mint\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 416\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwrite(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\u001b[39m\u001b[38;5;124m\"\u001b[39m, indent)\n\u001b[1;32m--> 417\u001b[0m fmt_values \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_formatted_values()\n\u001b[0;32m 419\u001b[0m \u001b[38;5;66;03m# write values\u001b[39;00m\n\u001b[0;32m 420\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mindex \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mframe\u001b[38;5;241m.\u001b[39mindex, MultiIndex):\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\html.py:607\u001b[0m, in \u001b[0;36mNotebookFormatter._get_formatted_values\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 606\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_get_formatted_values\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mint\u001b[39m, \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mstr\u001b[39m]]:\n\u001b[1;32m--> 607\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {i: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mformat_col(i) \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mncols)}\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\html.py:607\u001b[0m, in \u001b[0;36m\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 606\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_get_formatted_values\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mint\u001b[39m, \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mstr\u001b[39m]]:\n\u001b[1;32m--> 607\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {i: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmt\u001b[38;5;241m.\u001b[39mformat_col(i) \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mncols)}\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\io\\formats\\format.py:755\u001b[0m, in \u001b[0;36mDataFrameFormatter.format_col\u001b[1;34m(self, i)\u001b[0m\n\u001b[0;32m 752\u001b[0m frame \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtr_frame\n\u001b[0;32m 753\u001b[0m formatter \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_formatter(i)\n\u001b[0;32m 754\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m format_array(\n\u001b[1;32m--> 755\u001b[0m frame\u001b[38;5;241m.\u001b[39miloc[:, i]\u001b[38;5;241m.\u001b[39m_values,\n\u001b[0;32m 756\u001b[0m formatter,\n\u001b[0;32m 757\u001b[0m float_format\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfloat_format,\n\u001b[0;32m 758\u001b[0m na_rep\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mna_rep,\n\u001b[0;32m 759\u001b[0m space\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcol_space\u001b[38;5;241m.\u001b[39mget(frame\u001b[38;5;241m.\u001b[39mcolumns[i]),\n\u001b[0;32m 760\u001b[0m decimal\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdecimal,\n\u001b[0;32m 761\u001b[0m leading_space\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindex,\n\u001b[0;32m 762\u001b[0m )\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:1184\u001b[0m, in \u001b[0;36m_LocationIndexer.__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 1182\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_scalar_access(key):\n\u001b[0;32m 1183\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39m_get_value(\u001b[38;5;241m*\u001b[39mkey, takeable\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_takeable)\n\u001b[1;32m-> 1184\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_tuple(key)\n\u001b[0;32m 1185\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1186\u001b[0m \u001b[38;5;66;03m# we by definition only have the 0th axis\u001b[39;00m\n\u001b[0;32m 1187\u001b[0m axis \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxis \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;241m0\u001b[39m\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:1692\u001b[0m, in \u001b[0;36m_iLocIndexer._getitem_tuple\u001b[1;34m(self, tup)\u001b[0m\n\u001b[0;32m 1690\u001b[0m tup \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_validate_tuple_indexer(tup)\n\u001b[0;32m 1691\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m suppress(IndexingError):\n\u001b[1;32m-> 1692\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_lowerdim(tup)\n\u001b[0;32m 1694\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_tuple_same_dim(tup)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:1065\u001b[0m, in \u001b[0;36m_LocationIndexer._getitem_lowerdim\u001b[1;34m(self, tup)\u001b[0m\n\u001b[0;32m 1061\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, key \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(tup):\n\u001b[0;32m 1062\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m is_label_like(key):\n\u001b[0;32m 1063\u001b[0m \u001b[38;5;66;03m# We don't need to check for tuples here because those are\u001b[39;00m\n\u001b[0;32m 1064\u001b[0m \u001b[38;5;66;03m# caught by the _is_nested_tuple_indexer check above.\u001b[39;00m\n\u001b[1;32m-> 1065\u001b[0m section \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_axis(key, axis\u001b[38;5;241m=\u001b[39mi)\n\u001b[0;32m 1067\u001b[0m \u001b[38;5;66;03m# We should never have a scalar section here, because\u001b[39;00m\n\u001b[0;32m 1068\u001b[0m \u001b[38;5;66;03m# _getitem_lowerdim is only called after a check for\u001b[39;00m\n\u001b[0;32m 1069\u001b[0m \u001b[38;5;66;03m# is_scalar_access, which that would be.\u001b[39;00m\n\u001b[0;32m 1070\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m section\u001b[38;5;241m.\u001b[39mndim \u001b[38;5;241m==\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mndim:\n\u001b[0;32m 1071\u001b[0m \u001b[38;5;66;03m# we're in the middle of slicing through a MultiIndex\u001b[39;00m\n\u001b[0;32m 1072\u001b[0m \u001b[38;5;66;03m# revise the key wrt to `section` by inserting an _NS\u001b[39;00m\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:1754\u001b[0m, in \u001b[0;36m_iLocIndexer._getitem_axis\u001b[1;34m(self, key, axis)\u001b[0m\n\u001b[0;32m 1751\u001b[0m \u001b[38;5;66;03m# validate the location\u001b[39;00m\n\u001b[0;32m 1752\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_validate_integer(key, axis)\n\u001b[1;32m-> 1754\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39m_ixs(key, axis\u001b[38;5;241m=\u001b[39maxis)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\frame.py:3998\u001b[0m, in \u001b[0;36mDataFrame._ixs\u001b[1;34m(self, i, axis)\u001b[0m\n\u001b[0;32m 3994\u001b[0m \u001b[38;5;66;03m# icol\u001b[39;00m\n\u001b[0;32m 3995\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 3996\u001b[0m label \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcolumns[i]\n\u001b[1;32m-> 3998\u001b[0m col_mgr \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_mgr\u001b[38;5;241m.\u001b[39miget(i)\n\u001b[0;32m 3999\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_box_col_values(col_mgr, i)\n\u001b[0;32m 4001\u001b[0m \u001b[38;5;66;03m# this is a cached value, mark it so\u001b[39;00m\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:1016\u001b[0m, in \u001b[0;36mBlockManager.iget\u001b[1;34m(self, i, track_ref)\u001b[0m\n\u001b[0;32m 1012\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21miget\u001b[39m(\u001b[38;5;28mself\u001b[39m, i: \u001b[38;5;28mint\u001b[39m, track_ref: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m SingleBlockManager:\n\u001b[0;32m 1013\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 1014\u001b[0m \u001b[38;5;124;03m Return the data as a SingleBlockManager.\u001b[39;00m\n\u001b[0;32m 1015\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m-> 1016\u001b[0m block \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mblocks[\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mblknos[i]]\n\u001b[0;32m 1017\u001b[0m values \u001b[38;5;241m=\u001b[39m block\u001b[38;5;241m.\u001b[39miget(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mblklocs[i])\n\u001b[0;32m 1019\u001b[0m \u001b[38;5;66;03m# shortcut for select a single-dim from a 2-dim BM\u001b[39;00m\n", "\u001b[1;31mIndexError\u001b[0m: index 4 is out of bounds for axis 0 with size 4" ] } ], "source": [ "data.iloc[:, 1] = 7\n", "data" ] }, { "cell_type": "code", "execution_count": 90, "id": "0bab748c", "metadata": { "scrolled": true }, "outputs": [ { "ename": "ValueError", "evalue": "Length of values (4) does not match length of index (5)", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[90], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m data\u001b[38;5;241m.\u001b[39miloc[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, :] \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m8\u001b[39m\n\u001b[0;32m 2\u001b[0m data\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:911\u001b[0m, in \u001b[0;36m_LocationIndexer.__setitem__\u001b[1;34m(self, key, value)\u001b[0m\n\u001b[0;32m 908\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_has_valid_setitem_indexer(key)\n\u001b[0;32m 910\u001b[0m iloc \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mname \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124miloc\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39miloc\n\u001b[1;32m--> 911\u001b[0m iloc\u001b[38;5;241m.\u001b[39m_setitem_with_indexer(indexer, value, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mname)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:1942\u001b[0m, in \u001b[0;36m_iLocIndexer._setitem_with_indexer\u001b[1;34m(self, indexer, value, name)\u001b[0m\n\u001b[0;32m 1939\u001b[0m \u001b[38;5;66;03m# align and set the values\u001b[39;00m\n\u001b[0;32m 1940\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m take_split_path:\n\u001b[0;32m 1941\u001b[0m \u001b[38;5;66;03m# We have to operate column-wise\u001b[39;00m\n\u001b[1;32m-> 1942\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_setitem_with_indexer_split_path(indexer, value, name)\n\u001b[0;32m 1943\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1944\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_setitem_single_block(indexer, value, name)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:2035\u001b[0m, in \u001b[0;36m_iLocIndexer._setitem_with_indexer_split_path\u001b[1;34m(self, indexer, value, name)\u001b[0m\n\u001b[0;32m 2032\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 2033\u001b[0m \u001b[38;5;66;03m# scalar value\u001b[39;00m\n\u001b[0;32m 2034\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m loc \u001b[38;5;129;01min\u001b[39;00m ilocs:\n\u001b[1;32m-> 2035\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_setitem_single_column(loc, value, pi)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\indexing.py:2164\u001b[0m, in \u001b[0;36m_iLocIndexer._setitem_single_column\u001b[1;34m(self, loc, value, plane_indexer)\u001b[0m\n\u001b[0;32m 2160\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39misetitem(loc, value)\n\u001b[0;32m 2161\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 2162\u001b[0m \u001b[38;5;66;03m# set value into the column (first attempting to operate inplace, then\u001b[39;00m\n\u001b[0;32m 2163\u001b[0m \u001b[38;5;66;03m# falling back to casting if necessary)\u001b[39;00m\n\u001b[1;32m-> 2164\u001b[0m dtype \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39mdtypes\u001b[38;5;241m.\u001b[39miloc[loc]\n\u001b[0;32m 2165\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m dtype \u001b[38;5;241m==\u001b[39m np\u001b[38;5;241m.\u001b[39mvoid:\n\u001b[0;32m 2166\u001b[0m \u001b[38;5;66;03m# This means we're expanding, with multiple columns, e.g.\u001b[39;00m\n\u001b[0;32m 2167\u001b[0m \u001b[38;5;66;03m# df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]})\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 2170\u001b[0m \u001b[38;5;66;03m# Here, we replace those temporary `np.void` columns with\u001b[39;00m\n\u001b[0;32m 2171\u001b[0m \u001b[38;5;66;03m# columns of the appropriate dtype, based on `value`.\u001b[39;00m\n\u001b[0;32m 2172\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39miloc[:, loc] \u001b[38;5;241m=\u001b[39m construct_1d_array_from_inferred_fill_value(\n\u001b[0;32m 2173\u001b[0m value, \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj)\n\u001b[0;32m 2174\u001b[0m )\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\generic.py:6458\u001b[0m, in \u001b[0;36mNDFrame.dtypes\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 6431\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 6432\u001b[0m \u001b[38;5;124;03mReturn the dtypes in the DataFrame.\u001b[39;00m\n\u001b[0;32m 6433\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 6455\u001b[0m \u001b[38;5;124;03mdtype: object\u001b[39;00m\n\u001b[0;32m 6456\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 6457\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_mgr\u001b[38;5;241m.\u001b[39mget_dtypes()\n\u001b[1;32m-> 6458\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_constructor_sliced(data, index\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_info_axis, dtype\u001b[38;5;241m=\u001b[39mnp\u001b[38;5;241m.\u001b[39mobject_)\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\series.py:575\u001b[0m, in \u001b[0;36mSeries.__init__\u001b[1;34m(self, data, index, dtype, name, copy, fastpath)\u001b[0m\n\u001b[0;32m 573\u001b[0m index \u001b[38;5;241m=\u001b[39m default_index(\u001b[38;5;28mlen\u001b[39m(data))\n\u001b[0;32m 574\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m is_list_like(data):\n\u001b[1;32m--> 575\u001b[0m com\u001b[38;5;241m.\u001b[39mrequire_length_match(data, index)\n\u001b[0;32m 577\u001b[0m \u001b[38;5;66;03m# create/copy the manager\u001b[39;00m\n\u001b[0;32m 578\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data, (SingleBlockManager, SingleArrayManager)):\n", "File \u001b[1;32m~\\anaconda3\\envs\\Python101\\Lib\\site-packages\\pandas\\core\\common.py:573\u001b[0m, in \u001b[0;36mrequire_length_match\u001b[1;34m(data, index)\u001b[0m\n\u001b[0;32m 569\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 570\u001b[0m \u001b[38;5;124;03mCheck the length of data matches the length of the index.\u001b[39;00m\n\u001b[0;32m 571\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 572\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(data) \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mlen\u001b[39m(index):\n\u001b[1;32m--> 573\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[0;32m 574\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLength of values \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 575\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m(\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(data)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m) \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 576\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdoes not match length of index \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 577\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m(\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(index)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m)\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 578\u001b[0m )\n", "\u001b[1;31mValueError\u001b[0m: Length of values (4) does not match length of index (5)" ] } ], "source": [ "data.iloc[-1, :] = 8\n", "data" ] }, { "cell_type": "code", "execution_count": 91, "id": "feb7d840", "metadata": {}, "outputs": [], "source": [ "data = data.iloc[0, :]" ] }, { "cell_type": "code", "execution_count": 92, "id": "443b68ea", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\micro\\AppData\\Local\\Temp\\ipykernel_2600\\1621459581.py:1: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " data[2] = 9\n" ] } ], "source": [ "data[2] = 9" ] }, { "cell_type": "code", "execution_count": 93, "id": "37880311", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1.0\n", "1 7.0\n", "2 9.0\n", "0 1.1\n", "0 3.0\n", "Name: 0, dtype: float64" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data" ] }, { "cell_type": "markdown", "id": "a5c4e871", "metadata": {}, "source": [ "And yet again some new methods unique for each data structure... That's why it's so important to learn about each one of them.\n", "\n", "But for now that's it about data structures. \n", "\n", "There is a lot to say about them and it's really important to understand how they work under the hood, but I'll let you learn it by yourself, because this tutorial is long enough as it is.\n", "\n", "And now let's move on to the boolean logic." ] }, { "cell_type": "markdown", "id": "836d7701", "metadata": {}, "source": [ "## 12. BASICS: Boolean Logic" ] }, { "cell_type": "markdown", "id": "541ea486", "metadata": {}, "source": [ "Boolean logic allows to make comparisons and execute conditional statements. \n", "\n", "Boolean values can be either True or False. \n", "\n", "Boolean expressions are used in if and while statements to control the flow of a program. \n", "\n", "There are also several Boolean operators, like and, or, not, which can be used to manipulate Boolean values. \n", "\n", "And here is some of that logic.\n", "\n", "And as previously. What do you think is going to happen here? 3... 2... 1... Go." ] }, { "cell_type": "code", "execution_count": 94, "id": "7382f60f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "True == True" ] }, { "cell_type": "code", "execution_count": 95, "id": "a584a912", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "False == False" ] }, { "cell_type": "code", "execution_count": 96, "id": "6aaef021", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "True == False" ] }, { "cell_type": "code", "execution_count": 97, "id": "f912633d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 == 2" ] }, { "cell_type": "code", "execution_count": 98, "id": "de1fd15d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 < 2" ] }, { "cell_type": "code", "execution_count": 99, "id": "3bcb0d7b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 > 2" ] }, { "cell_type": "code", "execution_count": 100, "id": "bdb47ec1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"John\" == \"John\"" ] }, { "cell_type": "code", "execution_count": 101, "id": "32ac911c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"John\" == \"john\"" ] }, { "cell_type": "code", "execution_count": 102, "id": "87e19714", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"John\" > \"john\"" ] }, { "cell_type": "code", "execution_count": 103, "id": "3e70651a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"john\" > \"John\"" ] }, { "cell_type": "code", "execution_count": 104, "id": "da8e12dc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"John\" > \"Jane\"" ] }, { "cell_type": "code", "execution_count": 105, "id": "a65c9bbc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"John\" > \"jane\"" ] }, { "cell_type": "code", "execution_count": 106, "id": "b9d2e071", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"j\" > \"J\"" ] }, { "cell_type": "markdown", "id": "242ea016", "metadata": {}, "source": [ "Now if you wonder about the outcomes in these string comparisons, let me tell you couple of things. \n", "\n", "String comparison is a way of determining the relative order, equality, or difference of two or more strings. \n", "\n", "In here, for example when we are using the > operator to compare two strings: \"John\" and \"jane\", this operator returns True if the first string is lexicographically greater than the second string, and False otherwise. Lexicographically means according to the alphabetical order or dictionary order of the characters in the strings.\n", "\n", "To compare two strings using the > operator, Python compares the characters in both strings one by one, starting from the leftmost position. When it finds different characters, it compares their Unicode code point values. The character with the lower Unicode value is considered smaller, and the character with the higher Unicode value is considered larger. If one string is a prefix of another string, then the longer string is considered larger.\n", "\n", "In here, the first characters of both strings are different: \"upper J\" and \"lower j\". The Unicode value of \"upper J\" is 74, and the Unicode value of \"lower j\" is 106. Since 74 is smaller than 106, \"upper J\" is smaller than \"lower j\". Therefore, \"John\" is smaller than \"jane\" (written with lower j), and \"John\" > \"jane\" is False.\n", "\n", "If you want to compare two strings without considering the case of the characters, you can use the str.lower() or str.upper() methods to convert both strings to the same case before comparing them.\n", "\n", "And that's it about it. Now let's move on to the flow control of the program." ] }, { "cell_type": "markdown", "id": "0a44770f", "metadata": {}, "source": [ "## 13. FLOW CONTROL OF THE PROGRAM: Using conditions to control the flow of the program, like: If ... elif... else" ] }, { "cell_type": "markdown", "id": "3d2daccb", "metadata": {}, "source": [ "Flow control of the program is the ability to change the order or sequence of instructions based on some conditions. \n", "\n", "It's like, normally program is executed from top to bottom, but sometimes we want to run only part of the program based on some condition or we want to run the same part for 2 or more times, etc. Then we could use some helper.\n", "\n", "Flow control is essential for creating dynamic and interactive programs that can respond to user input, data, or events.\n", "\n", "One of the most common ways to control the flow of the program is using conditional statements, such as if, elif, and else. These statements allow the program to check if a certain condition is true or false, and then execute a block of code accordingly. \n", "\n", "The if statement is followed by a condition, which can be either True or False. If the condition is met (True, for example 1==1), the block of code indented under the if statement is executed. If the condition isn't met (is False, for example 1==0), the program moves on to the next statement, which could be another if statement, an elif statement, or an else statement.\n", "\n", "The elif statement is short for \"else if\", and it is used to check another condition after the previous one fails. The elif statement also has a condition and a block of code to execute if the condition is true. There can be multiple elif statements in a sequence, but only one of them can be executed at most.\n", "\n", "The else statement is used to provide a default action when none of the previous conditions are met (True). The else statement does not have a condition, and it is executed only if all the preceding if and elif statements are False. There can be only one else statement in a sequence, and it is optional.\n", "\n", "Conditional statements are the building blocks of other flow control structures, such as loops.\n", "\n", "And here you can see how you can, for example, use these conditions in your code." ] }, { "cell_type": "code", "execution_count": 107, "id": "381c1eea", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 is 0\n" ] } ], "source": [ "a = 0\n", "if a == 0:\n", " print(a, \"is 0\")\n", "else:\n", " print(a, \"is not equal 0\")" ] }, { "cell_type": "code", "execution_count": 108, "id": "d9ab8d9a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-1 is not equal 0\n" ] } ], "source": [ "a = -1\n", "if a == 0:\n", " print(a, \"is 0\")\n", "else:\n", " print(a, \"is not equal 0\")" ] }, { "cell_type": "code", "execution_count": 109, "id": "1f130fe5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 is not equal 0\n" ] } ], "source": [ "a = 1\n", "if a == 0:\n", " print(a, \"is 0\")\n", "else:\n", " print(a, \"is not equal 0\")" ] }, { "cell_type": "code", "execution_count": 110, "id": "2003312a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 is 0\n" ] } ], "source": [ "a = 0\n", "if a == 0:\n", " print(a, \"is 0\")\n", "elif a < 0:\n", " print(a, \"is less than 0\")\n", "else:\n", " print(a, \"is bigger than 0\")" ] }, { "cell_type": "code", "execution_count": 111, "id": "464c67aa", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-1 is less than 0\n" ] } ], "source": [ "a = -1\n", "if a == 0:\n", " print(a)\n", "elif a < 0:\n", " print(a, \"is less than 0\")\n", "else:\n", " print(a, \"is bigger than 0\")" ] }, { "cell_type": "code", "execution_count": 112, "id": "fd040b8b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 is bigger than 0\n" ] } ], "source": [ "a = 1\n", "if a == 0:\n", " print(a)\n", "elif a < 0:\n", " print(a, \"is less than 0\")\n", "else:\n", " print(a, \"is bigger than 0\")" ] }, { "cell_type": "markdown", "id": "1c108301", "metadata": {}, "source": [ "## 14. FLOW CONTROL OF THE PROGRAM: Using loops to control the flow of the program: for, while" ] }, { "cell_type": "markdown", "id": "e1051914", "metadata": {}, "source": [ "And now let's move on to loops.\n", "\n", "Loops are one of the ways to control the flow of the program by repeating a block of code until a certain condition is met. There are two types of loops in Python: for and while. \n", "\n", "A for loop is used to iterate over a sequence, such as a list, a tuple, a string, or a range. \n", "\n", "A while loop is used to execute a block of code as long as a given condition is true. \n", "\n", "And here is how they work." ] }, { "cell_type": "code", "execution_count": 113, "id": "afcb1536", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n" ] } ], "source": [ "for a in range(5):\n", " print(a)" ] }, { "cell_type": "code", "execution_count": 114, "id": "b15e5da5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n" ] } ], "source": [ "for a in [1, 2, 3]:\n", " print(a)" ] }, { "cell_type": "code", "execution_count": 115, "id": "fdaed300", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 1 times 2 is: 2\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 2\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 2 times 2 is: 4\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 3 times 2 is: 6\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "code", "execution_count": 116, "id": "8516b367", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n" ] } ], "source": [ "a = 0\n", "while a < 5:\n", " print(a)\n", " a += 1" ] }, { "cell_type": "code", "execution_count": 117, "id": "f36e8a9c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n", "4\n", "5\n" ] } ], "source": [ "a = 0\n", "while a < 5:\n", " a += 1\n", " print(a)" ] }, { "cell_type": "code", "execution_count": 118, "id": "b9153b85", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 1 times 2 is: 2\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 2\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 2 times 2 is: 4\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 3 times 2 is: 6\n" ] } ], "source": [ "a = 0\n", "while a < 3:\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")\n", " a += 1" ] }, { "cell_type": "markdown", "id": "c368bf25", "metadata": {}, "source": [ "## 15. FLOW CONTROL OF THE PROGRAM: Using break, continue, and pass to control the flow of the program" ] }, { "cell_type": "markdown", "id": "46ec615f", "metadata": {}, "source": [ "Now, beside if conditions and loops we have the break, continue, and pass statements that can help us control the flow of a program in Python. \n", "\n", "They can be used for different tasks.\n", "\n", "The break statement terminates the current loop and resumes execution at the next statement.\n", "\n", "The continue statement skips the rest of the current iteration and moves to the next one.\n", "\n", "The pass statement does nothing and acts as a placeholder for future code.\n", "\n", "Break and continue statements can help you exit a loop when a condition is met, while pass statements can help you avoid syntax errors or mark unfinished code.\n", "\n", "If it's all a bit abstract for you, here you can see how you can use them. Try thinkging what and when will be the outcome of each cell, what will be printed out. And remember, always try testing different scenarios, so you can see what happen in all conditions (like in here, you can try typing: positive number, negative number, a word, etc. when you are prompted by a computer)." ] }, { "cell_type": "code", "execution_count": 119, "id": "ed96776a", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "a is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 1 times 2 is: 2\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): -1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "-1 is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "code", "execution_count": 120, "id": "f44d667e", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " break\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " print(\"I'm after the break\")\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "code", "execution_count": 121, "id": "f5d37dce", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n", "Type me a positive integral number(use numbers, not words): 1\n", "Type me a positive integral number(use numbers, not words): -1\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " continue\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " print(\"I'm after the break\")\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "code", "execution_count": 122, "id": "31b3ace5", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "I'm after the break\n", "a is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 1 times 2 is: 2\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): -1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "I'm after the break\n", "-1 is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " pass\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " print(\"I'm after the break\")\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "code", "execution_count": 123, "id": "a6880396", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " break\n", " print(\"I'm after the break\")\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "code", "execution_count": 124, "id": "226f239b", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "I'm before the break. Moving on to break and... \n", "\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " print(\"I'm before the break. Moving on to break and... \\n\")\n", " break\n", " print(\"I'm after the break\")\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "code", "execution_count": 125, "id": "5a59f2ab", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n", "Type me a positive integral number(use numbers, not words): 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 1 times 2 is: 2\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): -1\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " continue\n", " print(\"I'm after the continue\")\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "code", "execution_count": 126, "id": "2743fc07", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "I'm before the continue. Moving on to continue and... \n", "\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 1 times 2 is: 2\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): -1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "I'm before the continue. Moving on to continue and... \n", "\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " print(\"I'm before the continue. Moving on to continue and... \\n\")\n", " continue\n", " print(\"I'm after the continue\")\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "code", "execution_count": 127, "id": "977a7aa4", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "I'm after the pass\n", "a is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 1 times 2 is: 2\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): -1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "I'm after the pass\n", "-1 is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " pass\n", " print(\"I'm after the pass\")\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "code", "execution_count": 128, "id": "b28fa196", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "I'm before the pass. Moving on to pass and... \n", "\n", "I'm after the pass\n", "a is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 1 times 2 is: 2\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): -1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "I'm before the pass. Moving on to pass and... \n", "\n", "I'm after the pass\n", "-1 is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " if your_number.isdigit():\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " else:\n", " print(\"I'm before the pass. Moving on to pass and... \\n\")\n", " pass\n", " print(\"I'm after the pass\")\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\")" ] }, { "cell_type": "markdown", "id": "db2f10bf", "metadata": {}, "source": [ "## 16. FLOW CONTROL OF THE PROGRAM: Handling errors with exceptions" ] }, { "cell_type": "markdown", "id": "e0c08ec6", "metadata": {}, "source": [ "Now that you know all that, let's handle some errors with exceptions.\n", "\n", "As you know, while programming you may make a lot of mistakes or an end user may act not as one should, etc., so handling different kind of errors is crucial for robust and good working programs, thus exceptions.\n", "\n", "Exceptions are a way of handling errors that interrupt the normal flow of the program. Exceptions are raised when an invalid operation is performed, such as accessing a non-existent key in a dictionary, opening a non-existent file or dividing by zero.\n", "\n", "To handle exceptions, Python provides the try and except block, which allows the program to execute some code and catch any errors that may occur. The try block contains the code that may raise an exception, and the except block contains the code that will run if an exception is raised.\n", "\n", "There are many built-in exceptions that cover different types of errors in Python, such as FileNotFoundError, IndexError, KeyError, SyntaxError, TypeError, etc. \n", "\n", "You can also create your own custom exceptions with an error message or a cause, that can be accessed through the exception object.\n", "\n", "And here are some examples how you can use them. First we try running the program without handling errors. Try figuring out what will happen." ] }, { "cell_type": "code", "execution_count": 129, "id": "fcf2725b", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n" ] }, { "ename": "ValueError", "evalue": "invalid literal for int() with base 10: 'a'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[129], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m your_number \u001b[38;5;241m=\u001b[39m \u001b[38;5;28minput\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mType me a positive integral number(use numbers, not words): \u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m----> 2\u001b[0m real_number \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mint\u001b[39m(your_number)\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mYour number: \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m your_number \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m times 2 is:\u001b[39m\u001b[38;5;124m\"\u001b[39m, real_number\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m2\u001b[39m)\n", "\u001b[1;31mValueError\u001b[0m: invalid literal for int() with base 10: 'a'" ] } ], "source": [ "your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", "real_number = int(your_number)\n", "print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)" ] }, { "cell_type": "code", "execution_count": 130, "id": "fbc96af3", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n" ] }, { "ename": "ValueError", "evalue": "invalid literal for int() with base 10: 'a'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[130], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m your_number \u001b[38;5;241m=\u001b[39m \u001b[38;5;28minput\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mType me a positive integral number(use numbers, not words): \u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m----> 2\u001b[0m real_number \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mint\u001b[39m(your_number)\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mYour number: \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m your_number \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m times 2 is:\u001b[39m\u001b[38;5;124m\"\u001b[39m, real_number\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m2\u001b[39m)\n", "\u001b[1;31mValueError\u001b[0m: invalid literal for int() with base 10: 'a'" ] } ], "source": [ "your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", "real_number = int(your_number)\n", "print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)" ] }, { "cell_type": "markdown", "id": "e7abc7f3", "metadata": {}, "source": [ "And now we use try and except blocks." ] }, { "cell_type": "code", "execution_count": 131, "id": "504d982e", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "a is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\n" ] } ], "source": [ "your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", "try:\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", "except:\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\") " ] }, { "cell_type": "code", "execution_count": 132, "id": "1132f844", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "a is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\n" ] } ], "source": [ "your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", "try:\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", "except:\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\") " ] }, { "cell_type": "code", "execution_count": 133, "id": "d0c36d79", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "a is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): -1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: -1 times 2 is: -2\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 1 times 2 is: 2\n" ] } ], "source": [ "for a in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " try:\n", " real_number = int(your_number)\n", " print(\"Your number: \" + your_number + \" times 2 is:\", real_number*2)\n", " except:\n", " print(your_number + \" is not a positive integral number written as digit. But, that's ok. Maybe next time. Goodbye.\") " ] }, { "cell_type": "markdown", "id": "eb80e7ca", "metadata": {}, "source": [ "Now, as you can see, this program doesn't act as previous ones. It multiplies -2. Can you guess why it's like this? It shouldn't be difficult for you to catch the difference at the momemnt. I believe in you. " ] }, { "cell_type": "code", "execution_count": 134, "id": "b6421d3e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Let me divide one number by another here.\n", "\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 1\n", "Type me another number(use numbers, not words): 2\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 1 divided by 2 is: 0.5\n" ] } ], "source": [ "print(\"Let me divide one number by another here.\\n\")\n", "your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", "your_2nd_number = input(\"Type me another number(use numbers, not words): \")\n", "real_number = int(your_number)\n", "real_2nd_number = int(your_2nd_number)\n", "print(\"Your number: \" + your_number + \" divided by \" + your_2nd_number + \" is:\", real_number / real_2nd_number)" ] }, { "cell_type": "code", "execution_count": 135, "id": "ab753cb7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Let me divide one number by another here.\n", "\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 1\n", "Type me another number(use numbers, not words): 2\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 1 divided by 2 is: 0.5\n" ] } ], "source": [ "print(\"Let me divide one number by another here.\\n\")\n", "your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", "your_2nd_number = input(\"Type me another number(use numbers, not words): \")\n", "try:\n", " real_number = int(your_number)\n", " real_2nd_number = int(your_2nd_number)\n", " print(\"Your number: \" + your_number + \" divided by \" + your_2nd_number + \" is:\", real_number / real_2nd_number)\n", "except:\n", " print(\"\"\"Either one of your numbers is not an integral number written as digit or you tried dividing by 0. \\\n", "But, that's ok. Maybe next time. Goodbye.\"\"\") " ] }, { "cell_type": "code", "execution_count": 136, "id": "120eb3e6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Let me divide one number by another here.\n", "\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 1\n", "Type me another number(use numbers, not words): 2\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 1 divided by 2 is: 0.5\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): a\n", "Type me another number(use numbers, not words): -1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "One of your numbers is not an integral number written as digit. But, that's ok. Maybe next time. Goodbye.\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Type me a positive integral number(use numbers, not words): 0\n", "Type me another number(use numbers, not words): 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Your number: 0 divided by 1 is: 0.0\n" ] } ], "source": [ "print(\"Let me divide one number by another here.\\n\")\n", "for i in range(3):\n", " your_number = input(\"Type me a positive integral number(use numbers, not words): \")\n", " your_2nd_number = input(\"Type me another number(use numbers, not words): \")\n", " try:\n", " real_number = int(your_number)\n", " real_2nd_number = int(your_2nd_number)\n", " print(\"Your number: \" + your_number + \" divided by \" + your_2nd_number + \" is:\", real_number / real_2nd_number)\n", " except ZeroDivisionError:\n", " print(\"You tried dividing by 0. But, that's ok. Maybe next time. Goodbye.\") \n", " except:\n", " print(\"One of your numbers is not an integral number written as digit. But, that's ok. Maybe next time. Goodbye.\") " ] }, { "cell_type": "markdown", "id": "077ef805", "metadata": {}, "source": [ "As you can see, they can help and your program can react differently depending on the Error. That can be very useful sometimes. And that's it about that for now." ] }, { "cell_type": "markdown", "id": "40aa3bcb", "metadata": {}, "source": [ "## 17. BASICS+: Basic info about iterators" ] }, { "cell_type": "markdown", "id": "ef65153f", "metadata": {}, "source": [ "Ok. Now, let's move on to iterators.\n", "\n", "They are objects that can be iterated over, that means that you can access each element in a sequence one by one. \n", "\n", "You can use the iter() function to get an iterator from any iterable object, such as lists, tuples, strings, etc. \n", "\n", "You can also use the for loop to iterate over an iterator implicitly.\n", "\n", "You can use it for example when you want to teach your machine learning program and give it some examples to learn (a batch of examples), after that you might want to give it the second batch, third batch, etc. And that's where iterators come handy, for example. We might talk more about it in the future tutorials, but for now...\n", "\n", "Here are some simpler examples." ] }, { "cell_type": "code", "execution_count": 137, "id": "690682bc", "metadata": {}, "outputs": [], "source": [ "a = \"Iterators can be helpful.\"" ] }, { "cell_type": "code", "execution_count": 138, "id": "8de297d1", "metadata": {}, "outputs": [], "source": [ "iter_a = iter(a)" ] }, { "cell_type": "code", "execution_count": 139, "id": "6f1a2df8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'I'" ] }, "execution_count": 139, "metadata": {}, "output_type": "execute_result" } ], "source": [ "next(iter_a)" ] }, { "cell_type": "code", "execution_count": 140, "id": "a0c7b9b1", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "t\n", "e\n", "r\n", "a\n", "t\n", "o\n", "r\n", "s\n", " \n", "c\n", "a\n", "n\n", " \n", "b\n", "e\n", " \n", "h\n", "e\n", "l\n", "p\n", "f\n", "u\n", "l\n", ".\n" ] } ], "source": [ "for i in range(len(a)-1):\n", " print(next(iter_a))" ] }, { "cell_type": "markdown", "id": "0255ed97", "metadata": {}, "source": [ "The same goes for tuples, lists, sets, and dictionaries" ] }, { "cell_type": "code", "execution_count": 141, "id": "7944ca05", "metadata": {}, "outputs": [], "source": [ "a = \"String\"\n", "b = ('T', 'u', 'p', 1, 2, 3)\n", "c = [\"Jane\", 'John', 4, 5, 6, 'seven']\n", "d = {\"John\", 'Jane', \"String\", 8, 9, False}\n", "e = {\"Jane\": 1, \"John\": 2, 3: \"Jane\", 4: \"John\", True: True, False: False}" ] }, { "cell_type": "code", "execution_count": 142, "id": "b0647441", "metadata": {}, "outputs": [], "source": [ "iter_a = iter(a)\n", "iter_b = iter(b)\n", "iter_c = iter(c)\n", "iter_d = iter(d)\n", "iter_e = iter(e)" ] }, { "cell_type": "markdown", "id": "43a5a889", "metadata": {}, "source": [ "Do you know what will be the output of this cell?" ] }, { "cell_type": "code", "execution_count": 143, "id": "0dd721c6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "S T Jane False Jane\n", "t u John Jane John\n", "r p 4 8 3\n", "i 1 5 9 4\n", "n 2 6 String True\n", "g 3 seven John False\n" ] } ], "source": [ "for i in range(6):\n", " print(next(iter_a), next(iter_b), next(iter_c), next(iter_d), next(iter_e))" ] }, { "cell_type": "markdown", "id": "87018f71", "metadata": {}, "source": [ "Did you guess correctly?" ] }, { "cell_type": "markdown", "id": "065e9779", "metadata": {}, "source": [ "## 18. BASICS+: Creating functions (simple and recursive) and using lambda function" ] }, { "cell_type": "markdown", "id": "859b7359", "metadata": {}, "source": [ "Ok. Now let's talk about functions.\n", "\n", "Functions are another important concept in Python. They allow you to reuse a piece of code throughout your program. They are like a form or a recipe you use to make 100 cookies that look the same and taste the same.\n", "\n", "A simple function is defined using the def keyword, followed by the function name and parentheses. Inside the parentheses, you can optionally specify one or more parameters, separated by commas. After the parentheses, you need to add a colon and then indent the function body. The function body is the code that will be executed when the function is called. \n", "\n", "A recursive function is a function that calls itself inside its body. Recursive functions are useful for solving problems that can be broken down into smaller subproblems of the same kind. One of the most common example of using a recursive function is calculating the factorial of a number, you can check the internet if you want to learn more about it.\n", "\n", "And here are some simple examples for beginners, starting with printing hello.\n", "\n", "At first we check if this kind of functions already exists?" ] }, { "cell_type": "code", "execution_count": 144, "id": "c1b54ba2", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'print_hello' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[144], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m print_hello()\n", "\u001b[1;31mNameError\u001b[0m: name 'print_hello' is not defined" ] } ], "source": [ "print_hello()" ] }, { "cell_type": "markdown", "id": "37e30be0", "metadata": {}, "source": [ "And as it doesn't, we can create it. Just remember, while creating functions, you can name it almost however you like, but you should stick to the PEP 8 guidelines (https://peps.python.org/pep-0008/#function-and-variable-names) to make it easier to read for others. So, you should type it with lowercase letters, start with a letter or an underscore, you can put underscores between the words if necessary, etc.\n", "\n", "If you create functions try naming them in the way someone could understand the meaning of the function just be reading that name. You can also put some comments or explanaitions of the function inside it, because, remember, you might forget...\n", "\n", "So here we go..." ] }, { "cell_type": "code", "execution_count": 145, "id": "220f1ca4", "metadata": {}, "outputs": [], "source": [ "def print_hello():\n", " print(\"hello\")" ] }, { "cell_type": "code", "execution_count": 146, "id": "dbee840e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello\n" ] } ], "source": [ "print_hello()" ] }, { "cell_type": "markdown", "id": "ebcaa40b", "metadata": {}, "source": [ "And it works. Great." ] }, { "cell_type": "markdown", "id": "d7d14ffa", "metadata": {}, "source": [ "Now, let's create a function that takes one argument for proper work. The argument will have to be put in the parentheses when one wants to run the function. It might look like this whith and without argument." ] }, { "cell_type": "code", "execution_count": 147, "id": "7d241f4f", "metadata": {}, "outputs": [], "source": [ "def print_hello_someone(someone):\n", " print(\"hello {}\".format(someone))" ] }, { "cell_type": "code", "execution_count": 148, "id": "4660666c", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "print_hello_someone() missing 1 required positional argument: 'someone'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[148], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m print_hello_someone()\n", "\u001b[1;31mTypeError\u001b[0m: print_hello_someone() missing 1 required positional argument: 'someone'" ] } ], "source": [ "print_hello_someone()" ] }, { "cell_type": "code", "execution_count": 149, "id": "33e30c74", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello Jane\n" ] } ], "source": [ "print_hello_someone(\"Jane\")" ] }, { "cell_type": "markdown", "id": "2c116482", "metadata": {}, "source": [ "This argument can be also given by the user with simple input function:" ] }, { "cell_type": "code", "execution_count": 150, "id": "04a74e80", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "What is your name? Type it here please: A\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "hello A\n" ] } ], "source": [ "name = input(\"What is your name? Type it here please: \")\n", "print()\n", "print_hello_someone(name)" ] }, { "cell_type": "code", "execution_count": 151, "id": "87e8268c", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "What is your name? Type it here please: A\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "hello A\n" ] } ], "source": [ "name = input(\"What is your name? Type it here please: \")\n", "print()\n", "print_hello_someone(name)" ] }, { "cell_type": "markdown", "id": "72b87d98", "metadata": {}, "source": [ "If you can use it in an even more complicated way, you might need to use return method of the function to return output of the function and put it to use later, like in the given example.\n", "\n", "Let's recreate our function that will return something to us, not just print it out." ] }, { "cell_type": "code", "execution_count": 152, "id": "a742b526", "metadata": {}, "outputs": [], "source": [ "def print_hello_someone_variable(someone):\n", " return \"Hello {}\".format(someone)" ] }, { "cell_type": "markdown", "id": "1c869add", "metadata": {}, "source": [ "And use it like we used it before." ] }, { "cell_type": "code", "execution_count": 153, "id": "0c3d7c6d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello Jane'" ] }, "execution_count": 153, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print_hello_someone_variable(\"Jane\")" ] }, { "cell_type": "markdown", "id": "6ec583e2", "metadata": {}, "source": [ "And now, let's try something more advanced with our old function. Can you guess the output?" ] }, { "cell_type": "code", "execution_count": 154, "id": "c447c010", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "What is your name? Type it here please: A\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "hello A\n", "None , it's nice to meet you!\n" ] } ], "source": [ "name = input(\"What is your name? Type it here please: \")\n", "print()\n", "print(print_hello_someone(name), \", it's nice to meet you!\")" ] }, { "cell_type": "markdown", "id": "8ccd7e3f", "metadata": {}, "source": [ "As you can see, it's not exactly what one could want. So let's try it with our newer fucntion with return." ] }, { "cell_type": "code", "execution_count": 155, "id": "268344af", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "What is your name? Type it here please: A\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Hello A , it's nice to meet you!\n" ] } ], "source": [ "name = input(\"What is your name? Type it here please: \")\n", "print()\n", "print(print_hello_someone_variable(name), \", it's nice to meet you!\")" ] }, { "cell_type": "markdown", "id": "a8f4e3aa", "metadata": {}, "source": [ "Now it works better. And if we want to store the output of our function, we can also do it now. So let's check it out. First with the old function." ] }, { "cell_type": "code", "execution_count": 156, "id": "5da6423b", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "What is your name? Type it here please: A\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "hello A\n", "\n", "None, it's nice to meet you!\n" ] } ], "source": [ "name = input(\"What is your name? Type it here please: \")\n", "hello_variable = print_hello_someone(name)\n", "print()\n", "print(\"{}, it's nice to meet you!\".format(hello_variable))" ] }, { "cell_type": "markdown", "id": "6fc5e915", "metadata": {}, "source": [ "And now with the new one." ] }, { "cell_type": "code", "execution_count": 157, "id": "ba15b373", "metadata": {}, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "What is your name? Type it here please: A\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Hello A, it's nice to meet you!\n" ] } ], "source": [ "name = input(\"What is your name? Type it here please: \")\n", "hello_variable = print_hello_someone_variable(name)\n", "print()\n", "print(\"{}, it's nice to meet you!\".format(hello_variable))" ] }, { "cell_type": "markdown", "id": "e09ad823", "metadata": {}, "source": [ "As you can see, there are different ways you can use functions. Sometimes you might want to have function return something, other times, you might only want it to print something out or do something. You can use them as you want, just think what you need the function for while you are creating it and do it accordingly." ] }, { "cell_type": "markdown", "id": "60575baa", "metadata": {}, "source": [ "One more thing about using arguments with functions. Till now we had only positional arguments here, but we can also have something called keyword (named) arguments, that are the arguments with a value attached to them, like here:" ] }, { "cell_type": "code", "execution_count": 158, "id": "a2438d86", "metadata": {}, "outputs": [], "source": [ "def func_with_arguments(animal, age, weight=\">1\"):\n", " print(\"The {} lives to {} years old and weights {} kg.\".format(animal, age, weight))" ] }, { "cell_type": "code", "execution_count": 159, "id": "92726a30", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The cat lives to 30 years old and weights 5 kg.\n" ] } ], "source": [ "func_with_arguments(\"cat\", \"30\", \"5\")" ] }, { "cell_type": "code", "execution_count": 160, "id": "7bc602d1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The 30 lives to cat years old and weights 5 kg.\n" ] } ], "source": [ "func_with_arguments(\"30\", \"cat\", \"5\")" ] }, { "cell_type": "code", "execution_count": 161, "id": "b17dee7c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The cat lives to 30 years old and weights >1 kg.\n" ] } ], "source": [ "func_with_arguments(\"cat\", \"30\")" ] }, { "cell_type": "code", "execution_count": 162, "id": "fd90c159", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "func_with_arguments() missing 1 required positional argument: 'age'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[162], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m func_with_arguments(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcat\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", "\u001b[1;31mTypeError\u001b[0m: func_with_arguments() missing 1 required positional argument: 'age'" ] } ], "source": [ "func_with_arguments(\"cat\")" ] }, { "cell_type": "code", "execution_count": 163, "id": "3cec8567", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The 30 lives to cat years old and weights 5 kg.\n" ] } ], "source": [ "func_with_arguments(\"30\", \"cat\", weight=\"5\")" ] }, { "cell_type": "code", "execution_count": 164, "id": "c1aabefb", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "positional argument follows keyword argument (4188793690.py, line 1)", "output_type": "error", "traceback": [ "\u001b[1;36m Cell \u001b[1;32mIn[164], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m func_with_arguments(\"30\", weight=\"5\", \"cat\")\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m positional argument follows keyword argument\n" ] } ], "source": [ "func_with_arguments(\"30\", weight=\"5\", \"cat\")" ] }, { "cell_type": "markdown", "id": "d6e7c1a9", "metadata": {}, "source": [ "As you can see, you don't have to put the keyword argument while using function, because you have the stored value of that argument and it will be used as a default. And when you put that argument it will overwrite the default.\n", "\n", "Also, the position of the argument matters, so if you put your arguments in wrong order you might get some errors. You also always have to put positional arguments before keyword arguments.\n", "\n", "There is more to learn about it, but for now it's enough." ] }, { "cell_type": "markdown", "id": "f3d27e7c", "metadata": {}, "source": [ "And now let's see how you can create a function that uses other functions." ] }, { "cell_type": "code", "execution_count": 165, "id": "43587ea5", "metadata": {}, "outputs": [], "source": [ "def print_all(someone):\n", " print_hello_someone(someone)\n", " print_hello()" ] }, { "cell_type": "code", "execution_count": 166, "id": "9ae079af", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello Jane\n", "hello\n" ] } ], "source": [ "print_all(\"Jane\")" ] }, { "cell_type": "markdown", "id": "b03a8231", "metadata": {}, "source": [ "So, it worked.\n", "\n", "Now." ] }, { "cell_type": "markdown", "id": "f31298e0", "metadata": {}, "source": [ "With functions you can also create easier to read programs, when you start the program with main function within which you put the main code of the program. You follow it by all the functions you want to use during the program. And after that you run the main function. Here is how it may look like." ] }, { "cell_type": "code", "execution_count": 167, "id": "366cc59b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello\n" ] }, { "ename": "NameError", "evalue": "name 'sth' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[167], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhello\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m----> 2\u001b[0m sth()\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m (\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgoodbye\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msth\u001b[39m():\n", "\u001b[1;31mNameError\u001b[0m: name 'sth' is not defined" ] } ], "source": [ "print('hello')\n", "sth()\n", "print (\"goodbye\")\n", "\n", "def sth():\n", " print(\"something\")" ] }, { "cell_type": "markdown", "id": "c051980c", "metadata": {}, "source": [ "And it didn't work. Why? Because you need to have the function created before you use it, so you can either reorganize your code like this:" ] }, { "cell_type": "code", "execution_count": 168, "id": "443a7313", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello\n", "something\n", "goodbye\n" ] } ], "source": [ "def sth():\n", " print(\"something\")\n", " \n", "print('hello')\n", "sth()\n", "print (\"goodbye\")" ] }, { "cell_type": "markdown", "id": "06044d88", "metadata": {}, "source": [ "And now it works. \n", "\n", "Or, if you want to have the main body of your program on the top, you might want to reorganize that program using main function, like this:" ] }, { "cell_type": "code", "execution_count": 169, "id": "b18be1c4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello\n", "something\n", "goodbye\n" ] } ], "source": [ "def main():\n", " print('hello')\n", " \n", " sth()\n", " \n", " print (\"goodbye\")\n", "\n", "def sth():\n", " print(\"something\")\n", " \n", "main()" ] }, { "cell_type": "code", "execution_count": 170, "id": "3fb9fd6d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello\n", "something\n", "goodbye\n" ] } ], "source": [ "def __main__():\n", " print('hello')\n", " \n", " sth()\n", " \n", " print (\"goodbye\")\n", "\n", "def sth():\n", " print(\"something\")\n", " \n", "if __name__ == \"__main__\":\n", " __main__()" ] }, { "cell_type": "markdown", "id": "4b301820", "metadata": {}, "source": [ "Or even like this... Can you guess the outcome of these two?" ] }, { "cell_type": "code", "execution_count": 171, "id": "9760f23a", "metadata": {}, "outputs": [], "source": [ "def main():\n", " print('hello')\n", " \n", " sth()\n", " \n", " print (\"goodbye\")\n", "\n", "def sth():\n", " print(\"something\")\n", " \n", "if __name__ == \"main\":\n", " main()" ] }, { "cell_type": "code", "execution_count": 172, "id": "14511b9a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello\n", "something\n", "goodbye\n" ] } ], "source": [ "def main():\n", " print('hello')\n", " \n", " sth()\n", " \n", " print (\"goodbye\")\n", "\n", "def sth():\n", " print(\"something\")\n", " \n", "if __name__ == \"__main__\":\n", " main()" ] }, { "cell_type": "markdown", "id": "09fbbb20", "metadata": {}, "source": [ "Now, I won't tell you more about underscores in front or in the back, one or more, because that's a bit more advanced topic for now, but if you want to learn more about it, check the internet." ] }, { "cell_type": "markdown", "id": "4da6a020", "metadata": {}, "source": [ "Now, let's move to lambda function, which is a small anonymous function that can be defined in a single line. Lambda functions are also known as anonymous functions or lambda expressions. \n", "\n", "They are functions which don't have they names, they are used only in the one place in the code, and you can use several lambda functions in your code without breaking it.\n", "\n", "The lambda keyword indicates that you are creating a lambda function. It is followed by one or more parameters, separated by commas. After the colon, you write the expression that will be evaluated and returned when the lambda function is called. \n", "\n", "You can assign a lambda function to a variable and use it like a regular function, or you can use it directly as an argument to another function.\n", "\n", "And here you have simple examples of these. Can you guess their outcome?" ] }, { "cell_type": "code", "execution_count": 173, "id": "a13b92a2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'JaneJane'" ] }, "execution_count": 173, "metadata": {}, "output_type": "execute_result" } ], "source": [ "anonymous = lambda par_a: par_a * 2\n", "anonymous(\"Jane\")" ] }, { "cell_type": "code", "execution_count": 174, "id": "17594719", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "8" ] }, "execution_count": 174, "metadata": {}, "output_type": "execute_result" } ], "source": [ "anonymous = lambda par_a: par_a * 2\n", "anonymous(4)" ] }, { "cell_type": "code", "execution_count": 175, "id": "9f1a4abf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'Jane': 'John'}, {'Jane': 'John'}, {'Jane': 'John'}]" ] }, "execution_count": 175, "metadata": {}, "output_type": "execute_result" } ], "source": [ "anonymous = lambda par_a, par_b, par_c: [{par_a: par_b}] * par_c\n", "anonymous(\"Jane\", \"John\", 3)" ] }, { "cell_type": "code", "execution_count": 176, "id": "e7251890", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'Jane': 'John'}, {'Jane': 'John'}, {'Jane': 'John'}]" ] }, "execution_count": 176, "metadata": {}, "output_type": "execute_result" } ], "source": [ "anonymous = lambda par_a: par_a * 2\n", "anonymous(\"Jane\")\n", "\n", "anonymous = lambda par_a, par_b, par_c: [{par_a: par_b}] * par_c\n", "anonymous(\"Jane\", \"John\", 3)" ] }, { "cell_type": "code", "execution_count": 177, "id": "3b67403b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "JaneJane\n", "[{'Jane': 'John'}, {'Jane': 'John'}, {'Jane': 'John'}]\n" ] } ], "source": [ "anonymous = lambda par_a: par_a * 2\n", "print(anonymous(\"Jane\"))\n", "\n", "anonymous = lambda par_a, par_b, par_c: [{par_a: par_b}] * par_c\n", "print(anonymous(\"Jane\", \"John\", 3))" ] }, { "cell_type": "markdown", "id": "3e4d6b04", "metadata": {}, "source": [ "And that's it about functions for a moment. There is much more to learn about them (like using arbitrary arguments, decorators, etc.), but I think it's a lot for the beginners. So let's stop here with them and move on to another topic. Classes." ] }, { "cell_type": "markdown", "id": "83896ca7", "metadata": {}, "source": [ "## 19. BASICS+: Basic info about classes, inheritance, and object-oriented programming" ] }, { "cell_type": "markdown", "id": "b9768e1b", "metadata": {}, "source": [ "https://docs.python.org/3/tutorial/classes.html" ] }, { "cell_type": "markdown", "id": "eabc06e9", "metadata": {}, "source": [ "Classes and inheritance are some of the core concepts of object-oriented programming (OOP). OOP is a paradigm that organizes data and behavior into reusable and modular units called objects.\n", "\n", "There is much to learn about classes, so I would recommend you reading the documentation: https://docs.python.org/3/tutorial/classes.html. \n", "\n", "And here, I'll just show you how they work in practice.\n", "\n", "As always, try thinking what you expect to happen, before running the cell or watching me run the cell.\n", "\n", "And that being said, let's start with creating a simple class." ] }, { "cell_type": "code", "execution_count": 178, "id": "2eff7a6f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Object was created\n" ] } ], "source": [ "class Object:\n", " print('Object was created')" ] }, { "cell_type": "markdown", "id": "171560f3", "metadata": {}, "source": [ "Now that we have class created with which we can create some objects." ] }, { "cell_type": "code", "execution_count": 179, "id": "146c6d11", "metadata": {}, "outputs": [], "source": [ "Object1 = Object()" ] }, { "cell_type": "markdown", "id": "2bd86b64", "metadata": {}, "source": [ "We've created the first object. Nothing special happened." ] }, { "cell_type": "markdown", "id": "76531c95", "metadata": {}, "source": [ "We can attach some info to that object." ] }, { "cell_type": "code", "execution_count": 180, "id": "5c890a01", "metadata": {}, "outputs": [], "source": [ "Object1.size = 'big'" ] }, { "cell_type": "code", "execution_count": 181, "id": "38f23881", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "big\n" ] } ], "source": [ "print(Object1.size)" ] }, { "cell_type": "markdown", "id": "14a3cee3", "metadata": {}, "source": [ "Well, it's not much, but it's a start." ] }, { "cell_type": "markdown", "id": "9bf7beb4", "metadata": {}, "source": [ "Now, if we want to add that info about object during creating that object we will need something more." ] }, { "cell_type": "markdown", "id": "d2a3200f", "metadata": {}, "source": [ "### INIT with necessary arguments" ] }, { "cell_type": "markdown", "id": "194487db", "metadata": {}, "source": [ "We can create a class with necessary size info added to each object.\n", "\n", "We do it using __init__.\n", "\n", "It is a special method called constructor. And, by the way, methods are just functions inside classes. You can have a lot of them in the class, but there is only one init, that is run when the object of the class (an instance) is created.\n", "\n", "Here you can see that in action - when it works and when it doesn't." ] }, { "cell_type": "code", "execution_count": 182, "id": "0d69ac58", "metadata": {}, "outputs": [], "source": [ "class Object_with_size:\n", " def __init__(self, size):\n", " print('Object was created')" ] }, { "cell_type": "code", "execution_count": 183, "id": "bc8b9c7d", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "Object_with_size.__init__() missing 1 required positional argument: 'size'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[183], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m Object3 \u001b[38;5;241m=\u001b[39m Object_with_size()\n", "\u001b[1;31mTypeError\u001b[0m: Object_with_size.__init__() missing 1 required positional argument: 'size'" ] } ], "source": [ "Object3 = Object_with_size()" ] }, { "cell_type": "markdown", "id": "1981a0e0", "metadata": {}, "source": [ "Now, as you can see, creating an object didn't work. That is because we've stated in the init constructor that we require 'size' argument of an object. It's like with functions. When you need an argument, the program won't work if you don't give one to the functions.\n", "\n", "Here, you might see 2 arguments in the init constructor, but the error showed that we are missing only one, that's because the first argument - self - is always added by class itself, it's the object we've created (self). So we do need to put it there while creating the constructor in the class body, but we don't need to think about it during object creation later in the program.\n", "\n", "So, let's create our object properly this time." ] }, { "cell_type": "code", "execution_count": 184, "id": "45d965d1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Object was created\n" ] } ], "source": [ "Object3 = Object_with_size('big')" ] }, { "cell_type": "markdown", "id": "aa09d299", "metadata": {}, "source": [ "And we have our object. So let's try checking if we can acess the size of an object." ] }, { "cell_type": "code", "execution_count": 185, "id": "59d9bc8c", "metadata": {}, "outputs": [ { "ename": "AttributeError", "evalue": "'Object_with_size' object has no attribute 'size'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[185], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m Object3\u001b[38;5;241m.\u001b[39msize\n", "\u001b[1;31mAttributeError\u001b[0m: 'Object_with_size' object has no attribute 'size'" ] } ], "source": [ "Object3.size" ] }, { "cell_type": "markdown", "id": "2b941b4d", "metadata": {}, "source": [ "And unfortunatelly, we can't. I'll explain it in a moment, but for now, let's try to check if we can still attach our size like previously." ] }, { "cell_type": "code", "execution_count": 186, "id": "d2702ffc", "metadata": {}, "outputs": [], "source": [ "Object3.size = 'small'" ] }, { "cell_type": "code", "execution_count": 187, "id": "a5aac43d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "small\n" ] } ], "source": [ "print(Object3.size)" ] }, { "cell_type": "markdown", "id": "04f6ee94", "metadata": {}, "source": [ "And yes, we can. Although during creation we put the 'big' size argument in Object3, we hadn't had stored it properly, so we couldn't have accesed it. But we could have added it as previously.\n", "\n", "Now, however, let's make our class the right way, so we store our size in size variable of the object, and to be precise in the 'self.size' (because we always have to put that self here before the variable we want to use to store the data in our instance).\n", "\n", "And here is the proper class, finally." ] }, { "cell_type": "code", "execution_count": 188, "id": "0e2e7ed9", "metadata": {}, "outputs": [], "source": [ "class Object_with_proper_size:\n", " def __init__(self, size):\n", " self.size = size\n", " print('Object was created')" ] }, { "cell_type": "code", "execution_count": 189, "id": "2c5c3d29", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "Object_with_proper_size.__init__() missing 1 required positional argument: 'size'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[189], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m Object5 \u001b[38;5;241m=\u001b[39m Object_with_proper_size()\n", "\u001b[1;31mTypeError\u001b[0m: Object_with_proper_size.__init__() missing 1 required positional argument: 'size'" ] } ], "source": [ "Object5 = Object_with_proper_size()" ] }, { "cell_type": "markdown", "id": "2ab20a10", "metadata": {}, "source": [ "So close... Ok, do you know why it didn't work this time?\n", "\n", "Yes, we didn't put the size argument in parentheses.\n", "\n", "So let's do it now." ] }, { "cell_type": "code", "execution_count": 190, "id": "75e62741", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Object was created\n" ] } ], "source": [ "Object5 = Object_with_proper_size('huge')" ] }, { "cell_type": "markdown", "id": "5f933c8d", "metadata": {}, "source": [ "We have it. And let's check the size of our object now." ] }, { "cell_type": "code", "execution_count": 191, "id": "a320daec", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'huge'" ] }, "execution_count": 191, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Object5.size" ] }, { "cell_type": "markdown", "id": "f2ee5fa4", "metadata": {}, "source": [ "Ok. So it works. We have our huge object. But if something changes, like the size of our object, we can also change that quite simply." ] }, { "cell_type": "code", "execution_count": 192, "id": "6d1f678d", "metadata": {}, "outputs": [], "source": [ "Object5.size = 'small'" ] }, { "cell_type": "code", "execution_count": 193, "id": "db7c1feb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'small'" ] }, "execution_count": 193, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Object5.size" ] }, { "cell_type": "markdown", "id": "ca64f480", "metadata": {}, "source": [ "And the size have changed. And now it works just great. Don't you think?\n", "\n", "Just remember one more thing about that init constructor and self:" ] }, { "cell_type": "code", "execution_count": 194, "id": "b80ad298", "metadata": {}, "outputs": [], "source": [ "class Object_with_size_but_without_size:\n", " def __init__(size):\n", " print('Object was created')" ] }, { "cell_type": "code", "execution_count": 195, "id": "8d5cda97", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "Object_with_size_but_without_size.__init__() takes 1 positional argument but 2 were given", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[195], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m Object6 \u001b[38;5;241m=\u001b[39m Object_with_size_but_without_size(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124menormous\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", "\u001b[1;31mTypeError\u001b[0m: Object_with_size_but_without_size.__init__() takes 1 positional argument but 2 were given" ] } ], "source": [ "Object6 = Object_with_size_but_without_size('enormous')" ] }, { "cell_type": "code", "execution_count": 196, "id": "75f81619", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Object was created\n" ] } ], "source": [ "Object7 = Object_with_size_but_without_size()" ] }, { "cell_type": "markdown", "id": "70e31b6c", "metadata": {}, "source": [ "If you forget about self argument in the init constructor, the first argument you have in that method is treated as that self that. That also mean that you don't have to call it self, but it's good practice and that's how almost everybody does it, so if you want your code to be easily readable, you should also call that self." ] }, { "cell_type": "markdown", "id": "816e7a12", "metadata": {}, "source": [ "#### *digression: string as a class*\n", "\n", "By the way, the string is also a class as are many other things in Python. And you can use some methods with that class as well, like here:" ] }, { "cell_type": "code", "execution_count": 197, "id": "29c533af", "metadata": {}, "outputs": [], "source": [ "O = str()" ] }, { "cell_type": "code", "execution_count": 198, "id": "b91f08d5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "''" ] }, "execution_count": 198, "metadata": {}, "output_type": "execute_result" } ], "source": [ "O" ] }, { "cell_type": "code", "execution_count": 199, "id": "236dc4c0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "print(type(O))" ] }, { "cell_type": "code", "execution_count": 200, "id": "6bf3f0f1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on class str in module builtins:\n", "\n", "class str(object)\n", " | str(object='') -> str\n", " | str(bytes_or_buffer[, encoding[, errors]]) -> str\n", " | \n", " | Create a new string object from the given object. If encoding or\n", " | errors is specified, then the object must expose a data buffer\n", " | that will be decoded using the given encoding and error handler.\n", " | Otherwise, returns the result of object.__str__() (if defined)\n", " | or repr(object).\n", " | encoding defaults to sys.getdefaultencoding().\n", " | errors defaults to 'strict'.\n", " | \n", " | Methods defined here:\n", " | \n", " | __add__(self, value, /)\n", " | Return self+value.\n", " | \n", " | __contains__(self, key, /)\n", " | Return key in self.\n", " | \n", " | __eq__(self, value, /)\n", " | Return self==value.\n", " | \n", " | __format__(self, format_spec, /)\n", " | Return a formatted version of the string as described by format_spec.\n", " | \n", " | __ge__(self, value, /)\n", " | Return self>=value.\n", " | \n", " | __getattribute__(self, name, /)\n", " | Return getattr(self, name).\n", " | \n", " | __getitem__(self, key, /)\n", " | Return self[key].\n", " | \n", " | __getnewargs__(...)\n", " | \n", " | __gt__(self, value, /)\n", " | Return self>value.\n", " | \n", " | __hash__(self, /)\n", " | Return hash(self).\n", " | \n", " | __iter__(self, /)\n", " | Implement iter(self).\n", " | \n", " | __le__(self, value, /)\n", " | Return self<=value.\n", " | \n", " | __len__(self, /)\n", " | Return len(self).\n", " | \n", " | __lt__(self, value, /)\n", " | Return self int\n", " | \n", " | Return the number of non-overlapping occurrences of substring sub in\n", " | string S[start:end]. Optional arguments start and end are\n", " | interpreted as in slice notation.\n", " | \n", " | encode(self, /, encoding='utf-8', errors='strict')\n", " | Encode the string using the codec registered for encoding.\n", " | \n", " | encoding\n", " | The encoding in which to encode the string.\n", " | errors\n", " | The error handling scheme to use for encoding errors.\n", " | The default is 'strict' meaning that encoding errors raise a\n", " | UnicodeEncodeError. Other possible values are 'ignore', 'replace' and\n", " | 'xmlcharrefreplace' as well as any other name registered with\n", " | codecs.register_error that can handle UnicodeEncodeErrors.\n", " | \n", " | endswith(...)\n", " | S.endswith(suffix[, start[, end]]) -> bool\n", " | \n", " | Return True if S ends with the specified suffix, False otherwise.\n", " | With optional start, test S beginning at that position.\n", " | With optional end, stop comparing S at that position.\n", " | suffix can also be a tuple of strings to try.\n", " | \n", " | expandtabs(self, /, tabsize=8)\n", " | Return a copy where all tab characters are expanded using spaces.\n", " | \n", " | If tabsize is not given, a tab size of 8 characters is assumed.\n", " | \n", " | find(...)\n", " | S.find(sub[, start[, end]]) -> int\n", " | \n", " | Return the lowest index in S where substring sub is found,\n", " | such that sub is contained within S[start:end]. Optional\n", " | arguments start and end are interpreted as in slice notation.\n", " | \n", " | Return -1 on failure.\n", " | \n", " | format(...)\n", " | S.format(*args, **kwargs) -> str\n", " | \n", " | Return a formatted version of S, using substitutions from args and kwargs.\n", " | The substitutions are identified by braces ('{' and '}').\n", " | \n", " | format_map(...)\n", " | S.format_map(mapping) -> str\n", " | \n", " | Return a formatted version of S, using substitutions from mapping.\n", " | The substitutions are identified by braces ('{' and '}').\n", " | \n", " | index(...)\n", " | S.index(sub[, start[, end]]) -> int\n", " | \n", " | Return the lowest index in S where substring sub is found,\n", " | such that sub is contained within S[start:end]. Optional\n", " | arguments start and end are interpreted as in slice notation.\n", " | \n", " | Raises ValueError when the substring is not found.\n", " | \n", " | isalnum(self, /)\n", " | Return True if the string is an alpha-numeric string, False otherwise.\n", " | \n", " | A string is alpha-numeric if all characters in the string are alpha-numeric and\n", " | there is at least one character in the string.\n", " | \n", " | isalpha(self, /)\n", " | Return True if the string is an alphabetic string, False otherwise.\n", " | \n", " | A string is alphabetic if all characters in the string are alphabetic and there\n", " | is at least one character in the string.\n", " | \n", " | isascii(self, /)\n", " | Return True if all characters in the string are ASCII, False otherwise.\n", " | \n", " | ASCII characters have code points in the range U+0000-U+007F.\n", " | Empty string is ASCII too.\n", " | \n", " | isdecimal(self, /)\n", " | Return True if the string is a decimal string, False otherwise.\n", " | \n", " | A string is a decimal string if all characters in the string are decimal and\n", " | there is at least one character in the string.\n", " | \n", " | isdigit(self, /)\n", " | Return True if the string is a digit string, False otherwise.\n", " | \n", " | A string is a digit string if all characters in the string are digits and there\n", " | is at least one character in the string.\n", " | \n", " | isidentifier(self, /)\n", " | Return True if the string is a valid Python identifier, False otherwise.\n", " | \n", " | Call keyword.iskeyword(s) to test whether string s is a reserved identifier,\n", " | such as \"def\" or \"class\".\n", " | \n", " | islower(self, /)\n", " | Return True if the string is a lowercase string, False otherwise.\n", " | \n", " | A string is lowercase if all cased characters in the string are lowercase and\n", " | there is at least one cased character in the string.\n", " | \n", " | isnumeric(self, /)\n", " | Return True if the string is a numeric string, False otherwise.\n", " | \n", " | A string is numeric if all characters in the string are numeric and there is at\n", " | least one character in the string.\n", " | \n", " | isprintable(self, /)\n", " | Return True if the string is printable, False otherwise.\n", " | \n", " | A string is printable if all of its characters are considered printable in\n", " | repr() or if it is empty.\n", " | \n", " | isspace(self, /)\n", " | Return True if the string is a whitespace string, False otherwise.\n", " | \n", " | A string is whitespace if all characters in the string are whitespace and there\n", " | is at least one character in the string.\n", " | \n", " | istitle(self, /)\n", " | Return True if the string is a title-cased string, False otherwise.\n", " | \n", " | In a title-cased string, upper- and title-case characters may only\n", " | follow uncased characters and lowercase characters only cased ones.\n", " | \n", " | isupper(self, /)\n", " | Return True if the string is an uppercase string, False otherwise.\n", " | \n", " | A string is uppercase if all cased characters in the string are uppercase and\n", " | there is at least one cased character in the string.\n", " | \n", " | join(self, iterable, /)\n", " | Concatenate any number of strings.\n", " | \n", " | The string whose method is called is inserted in between each given string.\n", " | The result is returned as a new string.\n", " | \n", " | Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'\n", " | \n", " | ljust(self, width, fillchar=' ', /)\n", " | Return a left-justified string of length width.\n", " | \n", " | Padding is done using the specified fill character (default is a space).\n", " | \n", " | lower(self, /)\n", " | Return a copy of the string converted to lowercase.\n", " | \n", " | lstrip(self, chars=None, /)\n", " | Return a copy of the string with leading whitespace removed.\n", " | \n", " | If chars is given and not None, remove characters in chars instead.\n", " | \n", " | partition(self, sep, /)\n", " | Partition the string into three parts using the given separator.\n", " | \n", " | This will search for the separator in the string. If the separator is found,\n", " | returns a 3-tuple containing the part before the separator, the separator\n", " | itself, and the part after it.\n", " | \n", " | If the separator is not found, returns a 3-tuple containing the original string\n", " | and two empty strings.\n", " | \n", " | removeprefix(self, prefix, /)\n", " | Return a str with the given prefix string removed if present.\n", " | \n", " | If the string starts with the prefix string, return string[len(prefix):].\n", " | Otherwise, return a copy of the original string.\n", " | \n", " | removesuffix(self, suffix, /)\n", " | Return a str with the given suffix string removed if present.\n", " | \n", " | If the string ends with the suffix string and that suffix is not empty,\n", " | return string[:-len(suffix)]. Otherwise, return a copy of the original\n", " | string.\n", " | \n", " | replace(self, old, new, count=-1, /)\n", " | Return a copy with all occurrences of substring old replaced by new.\n", " | \n", " | count\n", " | Maximum number of occurrences to replace.\n", " | -1 (the default value) means replace all occurrences.\n", " | \n", " | If the optional argument count is given, only the first count occurrences are\n", " | replaced.\n", " | \n", " | rfind(...)\n", " | S.rfind(sub[, start[, end]]) -> int\n", " | \n", " | Return the highest index in S where substring sub is found,\n", " | such that sub is contained within S[start:end]. Optional\n", " | arguments start and end are interpreted as in slice notation.\n", " | \n", " | Return -1 on failure.\n", " | \n", " | rindex(...)\n", " | S.rindex(sub[, start[, end]]) -> int\n", " | \n", " | Return the highest index in S where substring sub is found,\n", " | such that sub is contained within S[start:end]. Optional\n", " | arguments start and end are interpreted as in slice notation.\n", " | \n", " | Raises ValueError when the substring is not found.\n", " | \n", " | rjust(self, width, fillchar=' ', /)\n", " | Return a right-justified string of length width.\n", " | \n", " | Padding is done using the specified fill character (default is a space).\n", " | \n", " | rpartition(self, sep, /)\n", " | Partition the string into three parts using the given separator.\n", " | \n", " | This will search for the separator in the string, starting at the end. If\n", " | the separator is found, returns a 3-tuple containing the part before the\n", " | separator, the separator itself, and the part after it.\n", " | \n", " | If the separator is not found, returns a 3-tuple containing two empty strings\n", " | and the original string.\n", " | \n", " | rsplit(self, /, sep=None, maxsplit=-1)\n", " | Return a list of the substrings in the string, using sep as the separator string.\n", " | \n", " | sep\n", " | The separator used to split the string.\n", " | \n", " | When set to None (the default value), will split on any whitespace\n", " | character (including \\n \\r \\t \\f and spaces) and will discard\n", " | empty strings from the result.\n", " | maxsplit\n", " | Maximum number of splits.\n", " | -1 (the default value) means no limit.\n", " | \n", " | Splitting starts at the end of the string and works to the front.\n", " | \n", " | rstrip(self, chars=None, /)\n", " | Return a copy of the string with trailing whitespace removed.\n", " | \n", " | If chars is given and not None, remove characters in chars instead.\n", " | \n", " | split(self, /, sep=None, maxsplit=-1)\n", " | Return a list of the substrings in the string, using sep as the separator string.\n", " | \n", " | sep\n", " | The separator used to split the string.\n", " | \n", " | When set to None (the default value), will split on any whitespace\n", " | character (including \\n \\r \\t \\f and spaces) and will discard\n", " | empty strings from the result.\n", " | maxsplit\n", " | Maximum number of splits.\n", " | -1 (the default value) means no limit.\n", " | \n", " | Splitting starts at the front of the string and works to the end.\n", " | \n", " | Note, str.split() is mainly useful for data that has been intentionally\n", " | delimited. With natural text that includes punctuation, consider using\n", " | the regular expression module.\n", " | \n", " | splitlines(self, /, keepends=False)\n", " | Return a list of the lines in the string, breaking at line boundaries.\n", " | \n", " | Line breaks are not included in the resulting list unless keepends is given and\n", " | true.\n", " | \n", " | startswith(...)\n", " | S.startswith(prefix[, start[, end]]) -> bool\n", " | \n", " | Return True if S starts with the specified prefix, False otherwise.\n", " | With optional start, test S beginning at that position.\n", " | With optional end, stop comparing S at that position.\n", " | prefix can also be a tuple of strings to try.\n", " | \n", " | strip(self, chars=None, /)\n", " | Return a copy of the string with leading and trailing whitespace removed.\n", " | \n", " | If chars is given and not None, remove characters in chars instead.\n", " | \n", " | swapcase(self, /)\n", " | Convert uppercase characters to lowercase and lowercase characters to uppercase.\n", " | \n", " | title(self, /)\n", " | Return a version of the string where each word is titlecased.\n", " | \n", " | More specifically, words start with uppercased characters and all remaining\n", " | cased characters have lower case.\n", " | \n", " | translate(self, table, /)\n", " | Replace each character in the string using the given translation table.\n", " | \n", " | table\n", " | Translation table, which must be a mapping of Unicode ordinals to\n", " | Unicode ordinals, strings, or None.\n", " | \n", " | The table must implement lookup/indexing via __getitem__, for instance a\n", " | dictionary or list. If this operation raises LookupError, the character is\n", " | left untouched. Characters mapped to None are deleted.\n", " | \n", " | upper(self, /)\n", " | Return a copy of the string converted to uppercase.\n", " | \n", " | zfill(self, width, /)\n", " | Pad a numeric string with zeros on the left, to fill a field of the given width.\n", " | \n", " | The string is never truncated.\n", " | \n", " | ----------------------------------------------------------------------\n", " | Static methods defined here:\n", " | \n", " | __new__(*args, **kwargs) from builtins.type\n", " | Create and return a new object. See help(type) for accurate signature.\n", " | \n", " | maketrans(...)\n", " | Return a translation table usable for str.translate().\n", " | \n", " | If there is only one argument, it must be a dictionary mapping Unicode\n", " | ordinals (integers) or characters to Unicode ordinals, strings or None.\n", " | Character keys will be then converted to ordinals.\n", " | If there are two arguments, they must be strings of equal length, and\n", " | in the resulting dictionary, each character in x will be mapped to the\n", " | character at the same position in y. If there is a third argument, it\n", " | must be a string, whose characters will be mapped to None in the result.\n", "\n" ] } ], "source": [ "help(O)" ] }, { "cell_type": "code", "execution_count": 201, "id": "236e086c", "metadata": {}, "outputs": [], "source": [ "O = str(\"object\")" ] }, { "cell_type": "code", "execution_count": 202, "id": "92a4ccb4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'object'" ] }, "execution_count": 202, "metadata": {}, "output_type": "execute_result" } ], "source": [ "O" ] }, { "cell_type": "code", "execution_count": 203, "id": "8fad0b91", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Object'" ] }, "execution_count": 203, "metadata": {}, "output_type": "execute_result" } ], "source": [ "O.capitalize()" ] }, { "cell_type": "code", "execution_count": 204, "id": "4257eae2", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "'object'" ] }, "execution_count": 204, "metadata": {}, "output_type": "execute_result" } ], "source": [ "O" ] }, { "cell_type": "code", "execution_count": 205, "id": "4aedd1ce", "metadata": {}, "outputs": [], "source": [ "O = O.capitalize()" ] }, { "cell_type": "code", "execution_count": 206, "id": "5f0483d8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Object'" ] }, "execution_count": 206, "metadata": {}, "output_type": "execute_result" } ], "source": [ "O" ] }, { "cell_type": "markdown", "id": "f0ab8c0a", "metadata": {}, "source": [ "Ok, that's it about that. Now..." ] }, { "cell_type": "markdown", "id": "e5549ed0", "metadata": {}, "source": [ "### With or without self? that is a question..." ] }, { "cell_type": "markdown", "id": "c55f9d9c", "metadata": {}, "source": [ "And here you can see some other examples with self and without self even if you don't have init method. Which of them will work, what do you think?" ] }, { "cell_type": "code", "execution_count": 207, "id": "a3a624fe", "metadata": {}, "outputs": [], "source": [ "class With_self:\n", " def do_something(self):\n", " print(\"doing something with self\")" ] }, { "cell_type": "code", "execution_count": 208, "id": "f0ced9d5", "metadata": {}, "outputs": [], "source": [ "class Without_self:\n", " def do_something():\n", " print(\"doing something without self\")" ] }, { "cell_type": "code", "execution_count": 209, "id": "ad609b22", "metadata": {}, "outputs": [], "source": [ "withself = With_self()" ] }, { "cell_type": "code", "execution_count": 210, "id": "788e48f3", "metadata": {}, "outputs": [], "source": [ "withoutself = Without_self()" ] }, { "cell_type": "code", "execution_count": 211, "id": "d85c9e13", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "doing something with self\n" ] } ], "source": [ "withself.do_something()" ] }, { "cell_type": "code", "execution_count": 212, "id": "d9a56e12", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "Without_self.do_something() takes 0 positional arguments but 1 was given", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[212], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m withoutself\u001b[38;5;241m.\u001b[39mdo_something()\n", "\u001b[1;31mTypeError\u001b[0m: Without_self.do_something() takes 0 positional arguments but 1 was given" ] } ], "source": [ "withoutself.do_something()" ] }, { "cell_type": "code", "execution_count": 213, "id": "b9bf3155", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "doing something without self\n" ] } ], "source": [ "class Without_self_too:\n", " print(\"doing something without self\")" ] }, { "cell_type": "markdown", "id": "68fc3a72", "metadata": {}, "source": [ "Try thinking why that happened. And remember about self." ] }, { "cell_type": "markdown", "id": "cb97beb0", "metadata": {}, "source": [ "### Methods" ] }, { "cell_type": "markdown", "id": "790aa018", "metadata": {}, "source": [ "Now, let's see more about these methods. Here you can see some more examples. \n", "\n", "We create a class called Little John with a john method. What do you think will happen?" ] }, { "cell_type": "code", "execution_count": 214, "id": "250a620a", "metadata": {}, "outputs": [], "source": [ "class Little_John:\n", " def __init__(self, a):\n", " self.a = a\n", " print(self.a)\n", " def john(self, b):\n", " self.b = b\n", " print(self.b)" ] }, { "cell_type": "code", "execution_count": 215, "id": "58fcf64b", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "Little_John.__init__() missing 1 required positional argument: 'a'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[215], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m LJ1 \u001b[38;5;241m=\u001b[39m Little_John()\n", "\u001b[1;31mTypeError\u001b[0m: Little_John.__init__() missing 1 required positional argument: 'a'" ] } ], "source": [ "LJ1 = Little_John()" ] }, { "cell_type": "code", "execution_count": 216, "id": "fdbea5e9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "big\n" ] } ], "source": [ "LJ1 = Little_John('big')" ] }, { "cell_type": "code", "execution_count": 217, "id": "5c81580c", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "Little_John.john() missing 1 required positional argument: 'b'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[217], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m LJ1\u001b[38;5;241m.\u001b[39mjohn()\n", "\u001b[1;31mTypeError\u001b[0m: Little_John.john() missing 1 required positional argument: 'b'" ] } ], "source": [ "LJ1.john()" ] }, { "cell_type": "code", "execution_count": 218, "id": "26774bd1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "John\n" ] } ], "source": [ "LJ1.john('John')" ] }, { "cell_type": "code", "execution_count": 219, "id": "0d85ec98", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "big\n", "John\n" ] } ], "source": [ "Little_John('big').john('John')" ] }, { "cell_type": "markdown", "id": "9ef18ba4", "metadata": {}, "source": [ "Ok. Hope you know why we got this big John here. Great. Now..." ] }, { "cell_type": "markdown", "id": "78ffb271", "metadata": {}, "source": [ "### CLASS LEVEL ATTRIBUTES" ] }, { "cell_type": "markdown", "id": "948adde2", "metadata": {}, "source": [ "When we talk about classes, we should remember about class level attributes. These are attributes that are not specific to the instance of the class (like the ones we had previously), but are for the whole class, like here." ] }, { "cell_type": "code", "execution_count": 220, "id": "484ec083", "metadata": {}, "outputs": [], "source": [ "class Class_level:\n", " class_level_attribute = \"Class level is always on\"" ] }, { "cell_type": "code", "execution_count": 221, "id": "0f96fca4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Class level is always on'" ] }, "execution_count": 221, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Class_level.class_level_attribute" ] }, { "cell_type": "code", "execution_count": 222, "id": "dfc928f2", "metadata": {}, "outputs": [], "source": [ "cl1 = Class_level()" ] }, { "cell_type": "code", "execution_count": 223, "id": "ffb803d6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Class level is always on'" ] }, "execution_count": 223, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cl1.class_level_attribute" ] }, { "cell_type": "markdown", "id": "d89f61a6", "metadata": {}, "source": [ "Now, how could we use it? Well, we could have class level attribute always on for any new instance, but change that level for some instances. Like here:" ] }, { "cell_type": "code", "execution_count": 224, "id": "1fc17749", "metadata": {}, "outputs": [], "source": [ "class Class_level:\n", " class_level_attribute = \"ON\"\n", "\n", " def __init__(self, the_object):\n", " self.name = the_object\n", "\n", " def is_it_on(self):\n", " print(f\"{self.name} Phone is {self.class_level_attribute}.\")" ] }, { "cell_type": "code", "execution_count": 225, "id": "56904dfc", "metadata": {}, "outputs": [], "source": [ "cl2 = Class_level(\"First\")" ] }, { "cell_type": "code", "execution_count": 226, "id": "48e7fabf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "First Phone is ON.\n" ] } ], "source": [ "cl2.is_it_on()" ] }, { "cell_type": "code", "execution_count": 227, "id": "1375fc2c", "metadata": {}, "outputs": [], "source": [ "cl3 = Class_level(\"Second\")" ] }, { "cell_type": "code", "execution_count": 228, "id": "ba660e0c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Second Phone is ON.\n" ] } ], "source": [ "cl3.is_it_on()" ] }, { "cell_type": "code", "execution_count": 229, "id": "57591457", "metadata": {}, "outputs": [], "source": [ "cl3.class_level_attribute = \"OFF\"" ] }, { "cell_type": "code", "execution_count": 230, "id": "f725b2b0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Second Phone is OFF.\n" ] } ], "source": [ "cl3.is_it_on()" ] }, { "cell_type": "code", "execution_count": 231, "id": "465b44a5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Third Phone is ON.\n" ] } ], "source": [ "cl4 = Class_level(\"Third\")\n", "cl4.is_it_on()" ] }, { "cell_type": "markdown", "id": "c46b6faa", "metadata": {}, "source": [ "Believe me, sometimes it's quite helpful. Meanwhile." ] }, { "cell_type": "markdown", "id": "764fd6eb", "metadata": {}, "source": [ "### APPENDING INSTANCES TO ALL CLASS ITEMS" ] }, { "cell_type": "markdown", "id": "2dca620c", "metadata": {}, "source": [ "We can try appending instances to all class items like below. That way in an easy way we can check what kind of instances we've created of the given class." ] }, { "cell_type": "code", "execution_count": 232, "id": "341f4115", "metadata": {}, "outputs": [], "source": [ "class Gathered:\n", " gathered = []\n", " def __init__(self, name):\n", " self.name = name\n", " Gathered.gathered.append(self)\n", " \n", " def __repr__(self):\n", " return 'Gathered({})'.format(self.name)" ] }, { "cell_type": "code", "execution_count": 233, "id": "7a1b3f72", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 233, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Gathered.gathered" ] }, { "cell_type": "code", "execution_count": 234, "id": "675d81d6", "metadata": {}, "outputs": [], "source": [ "gathered1 = Gathered(\"object1\")" ] }, { "cell_type": "code", "execution_count": 235, "id": "c846ebed", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Gathered(object1)]" ] }, "execution_count": 235, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Gathered.gathered" ] }, { "cell_type": "code", "execution_count": 236, "id": "c60406d4", "metadata": {}, "outputs": [], "source": [ "gathered2 = Gathered(\"object2\")" ] }, { "cell_type": "code", "execution_count": 237, "id": "0e0e6aa1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Gathered(object1), Gathered(object2)]" ] }, "execution_count": 237, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Gathered.gathered" ] }, { "cell_type": "code", "execution_count": 238, "id": "ca2a3b91", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "object1\n", "object2\n" ] } ], "source": [ "for stored_object in Gathered.gathered:\n", " print(stored_object.name)" ] }, { "cell_type": "markdown", "id": "2b5cf779", "metadata": {}, "source": [ "or like this" ] }, { "cell_type": "code", "execution_count": 239, "id": "6ea52cc7", "metadata": {}, "outputs": [], "source": [ "class Gathered:\n", " gathered = []\n", " def __init__(self, name):\n", " self.name = name\n", " Gathered.gathered.append(self)\n", " \n", " def __repr__(self):\n", " return '{}({})'.format(self.__class__.__name__, self.name)" ] }, { "cell_type": "code", "execution_count": 240, "id": "9452887a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 240, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Gathered.gathered" ] }, { "cell_type": "code", "execution_count": 241, "id": "a301b897", "metadata": {}, "outputs": [], "source": [ "gathered1 = Gathered(\"object1\")" ] }, { "cell_type": "code", "execution_count": 242, "id": "4dada742", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Gathered(object1)]" ] }, "execution_count": 242, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Gathered.gathered" ] }, { "cell_type": "code", "execution_count": 243, "id": "cdd9f84e", "metadata": {}, "outputs": [], "source": [ "gathered2 = Gathered(\"object2\")" ] }, { "cell_type": "code", "execution_count": 244, "id": "f4610276", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Gathered(object1), Gathered(object2)]" ] }, "execution_count": 244, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Gathered.gathered" ] }, { "cell_type": "code", "execution_count": 245, "id": "8058e896", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "object1\n", "object2\n" ] } ], "source": [ "for stored_object in Gathered.gathered:\n", " print(stored_object.name)" ] }, { "cell_type": "markdown", "id": "2cb0fd6e", "metadata": {}, "source": [ "This can also be quite handy. \n", "\n", "No, when you learn the basics about classes you should also learn a bit more advanced topic about classes, that is: class methods and static methods that use special decorators. Here is how they look like. I won't start explaining them to you, because it's too advanced I think, for beginners, but you can find more about them in the internet." ] }, { "cell_type": "markdown", "id": "0af1fda2", "metadata": {}, "source": [ "### @classmethod" ] }, { "cell_type": "code", "execution_count": 246, "id": "72aa3230", "metadata": {}, "outputs": [], "source": [ "bunch_of_people = [\"Jane\", \"John\", \"Jack\"]" ] }, { "cell_type": "code", "execution_count": 247, "id": "87248f4e", "metadata": {}, "outputs": [], "source": [ "class Gathered:\n", " gathered = []\n", " def __init__(self, name):\n", " self.name = name\n", " Gathered.gathered.append(self)\n", " \n", " def __repr__(self):\n", " return '{}({})'.format(self.__class__.__name__, self.name)\n", "\n", " @classmethod \n", " def create_bunch_of_people(cls):\n", " for person in bunch_of_people:\n", " Gathered(name = person)\n", " return Gathered.gathered" ] }, { "cell_type": "markdown", "id": "54ee5e37", "metadata": {}, "source": [ "That class method, as you can see doesn't have 'self' as an argument, but 'cls'. And when we use it..." ] }, { "cell_type": "code", "execution_count": 248, "id": "17c01d9b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Gathered(Jane), Gathered(John), Gathered(Jack)]" ] }, "execution_count": 248, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Gathered.create_bunch_of_people()" ] }, { "cell_type": "code", "execution_count": 249, "id": "f5603026", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Gathered(Jane), Gathered(John), Gathered(Jack)]" ] }, "execution_count": 249, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Gathered.gathered" ] }, { "cell_type": "markdown", "id": "b38e5ec6", "metadata": {}, "source": [ "We've created a bunch of people (3 instances of the class) in just one line of code. And that can be very useful sometimes. But, please, learn more about it, I just wanted to let you know that this kind of method exists." ] }, { "cell_type": "markdown", "id": "9efe38bf", "metadata": {}, "source": [ "### @staticmethod" ] }, { "cell_type": "markdown", "id": "817030e5", "metadata": {}, "source": [ "And we also have static methods, like below..." ] }, { "cell_type": "code", "execution_count": 250, "id": "f4cd3c47", "metadata": {}, "outputs": [], "source": [ "class Gathered_static:\n", " gathered = []\n", " def __init__(self, name):\n", " self.name = name\n", " Gathered_static.gathered.append(self)\n", " \n", " def __repr__(self):\n", " return '{}({})'.format(self.__class__.__name__, self.name)\n", " \n", " @staticmethod \n", " def is_in(name):\n", " return name in [person.name for person in Gathered_static.gathered]" ] }, { "cell_type": "markdown", "id": "9db45a0e", "metadata": {}, "source": [ "As you can see we don't have to put self or cls argument into the static method and we can use it from the class level, just like we used the class method. So, let's create couple of instances at first." ] }, { "cell_type": "code", "execution_count": 251, "id": "d65d9855", "metadata": {}, "outputs": [], "source": [ "g1s = Gathered_static(\"Jane\")\n", "g2s = Gathered_static(\"John\")\n", "g3s = Gathered_static(\"Jack\")" ] }, { "cell_type": "markdown", "id": "bb742fd5", "metadata": {}, "source": [ "And now let's check our method." ] }, { "cell_type": "code", "execution_count": 252, "id": "86820e97", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 252, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Gathered_static.is_in(\"Jane\")" ] }, { "cell_type": "code", "execution_count": 253, "id": "5ad56406", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 253, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Gathered_static.is_in(\"Jenny\")" ] }, { "cell_type": "markdown", "id": "eb29af4f", "metadata": {}, "source": [ "As you can see, it works. This static methods can be useful, but you can learn about it later. Meanwhile..." ] }, { "cell_type": "markdown", "id": "dce5d537", "metadata": {}, "source": [ "### INHERITANCE" ] }, { "cell_type": "markdown", "id": "33fa6a37", "metadata": {}, "source": [ "Finally, you should learn about inheritance, parents and children, because that is a powerful tool that can help you a lot. And that might look like here. First, we create a parent class:" ] }, { "cell_type": "code", "execution_count": 254, "id": "9af60025", "metadata": {}, "outputs": [], "source": [ "class Parent:\n", " def __init__(self, name, surname=\"Smith\"):\n", " self.name = name\n", " self.surname = surname\n", " def say(self, sentence):\n", " return f'Hello {self.name} {self.surname}, {sentence}.'" ] }, { "cell_type": "markdown", "id": "f636a7a2", "metadata": {}, "source": [ "Couple of instances." ] }, { "cell_type": "code", "execution_count": 255, "id": "ae51933e", "metadata": {}, "outputs": [], "source": [ "PEx1 = Parent(\"Jane\")" ] }, { "cell_type": "code", "execution_count": 256, "id": "bce8d64a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Jane'" ] }, "execution_count": 256, "metadata": {}, "output_type": "execute_result" } ], "source": [ "PEx1.name" ] }, { "cell_type": "code", "execution_count": 257, "id": "5614661e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Smith'" ] }, "execution_count": 257, "metadata": {}, "output_type": "execute_result" } ], "source": [ "PEx1.surname" ] }, { "cell_type": "code", "execution_count": 258, "id": "a3c47bcf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello Jane Smith, this is cool.'" ] }, "execution_count": 258, "metadata": {}, "output_type": "execute_result" } ], "source": [ "PEx1.say(\"this is cool\")" ] }, { "cell_type": "code", "execution_count": 259, "id": "b357f67b", "metadata": {}, "outputs": [], "source": [ "PEx2 = Parent('John', 'Johnson')" ] }, { "cell_type": "code", "execution_count": 260, "id": "5c95a47e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello John Johnson, this is cool.'" ] }, "execution_count": 260, "metadata": {}, "output_type": "execute_result" } ], "source": [ "PEx2.say('this is cool')" ] }, { "cell_type": "markdown", "id": "14ceafe1", "metadata": {}, "source": [ "And now, we can create a child class that has completly the same functionality as a parent class (for now)." ] }, { "cell_type": "code", "execution_count": 261, "id": "9ef84970", "metadata": {}, "outputs": [], "source": [ "class Inheritance_Example(Parent):\n", " pass" ] }, { "cell_type": "markdown", "id": "3ed4e1c3", "metadata": {}, "source": [ "And also create couple of instances quite easy." ] }, { "cell_type": "code", "execution_count": 262, "id": "42055087", "metadata": {}, "outputs": [], "source": [ "IEx1 = Inheritance_Example(\"Jane\", 'Johnson')" ] }, { "cell_type": "code", "execution_count": 263, "id": "9a3e3b09", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello Jane Johnson, this is cool.'" ] }, "execution_count": 263, "metadata": {}, "output_type": "execute_result" } ], "source": [ "IEx1.say('this is cool')" ] }, { "cell_type": "markdown", "id": "d8a2df71", "metadata": {}, "source": [ "In order to have some different functionalities in our child class, we can rewrite that child class with init constructor that refers to the Parent class (with super function)." ] }, { "cell_type": "code", "execution_count": 264, "id": "38c20886", "metadata": {}, "outputs": [], "source": [ "class Inheritance_Example(Parent):\n", " def __init__(self, name, surname=\"Smith\"):\n", " super().__init__(name, surname)" ] }, { "cell_type": "markdown", "id": "91e6db2c", "metadata": {}, "source": [ "And once again, we can create some new instances." ] }, { "cell_type": "code", "execution_count": 265, "id": "576d01e4", "metadata": {}, "outputs": [], "source": [ "IEx2 = Inheritance_Example(\"Jane\", 'Brown')" ] }, { "cell_type": "code", "execution_count": 266, "id": "ae0136dc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello Jane Brown, this is cool.'" ] }, "execution_count": 266, "metadata": {}, "output_type": "execute_result" } ], "source": [ "IEx2.say('this is cool')" ] }, { "cell_type": "markdown", "id": "f869f30f", "metadata": {}, "source": [ "And now, finally we can add some new functionality to our child class, like here." ] }, { "cell_type": "code", "execution_count": 267, "id": "d7a7bf91", "metadata": {}, "outputs": [], "source": [ "class Inheritance_Example(Parent):\n", " def __init__(self, name, age, surname=\"Smith\"):\n", " super().__init__(name, surname)\n", " self.age = age\n", " \n", " def say_more(self, sentence):\n", " return f'Hello {self.name} {self.surname}, age {self.age}, {sentence}.'" ] }, { "cell_type": "code", "execution_count": 268, "id": "33ac5626", "metadata": {}, "outputs": [], "source": [ "IEx3 = Inheritance_Example(\"Jane\", '19', 'Smith')" ] }, { "cell_type": "code", "execution_count": 269, "id": "5257ce15", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello Jane Smith, this is cool.'" ] }, "execution_count": 269, "metadata": {}, "output_type": "execute_result" } ], "source": [ "IEx3.say('this is cool')" ] }, { "cell_type": "code", "execution_count": 270, "id": "241b2ec6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello Jane Smith, age 19, this is even cooler.'" ] }, "execution_count": 270, "metadata": {}, "output_type": "execute_result" } ], "source": [ "IEx3.say_more(\"this is even cooler\")" ] }, { "cell_type": "markdown", "id": "d3898bd0", "metadata": {}, "source": [ "Isn't it great?" ] }, { "cell_type": "markdown", "id": "8ff16138", "metadata": {}, "source": [ "Ok. There was a lot of stuff in this object oriented programming fragment and it was definitelly not well enough explained, but hopefully, you did learn something and now you can start searching the internet for more info about it. I might develop this part further in the future, but for now - that's it.\n", "\n", "And for us it's time to move to saving and loading files with Python." ] }, { "cell_type": "markdown", "id": "a6675e05", "metadata": {}, "source": [ "## 20. BASICS+: I/O - saving, loading, and opening files " ] }, { "cell_type": "markdown", "id": "a719dcac", "metadata": {}, "source": [ "### SAVING WITH PRINT/WRITE" ] }, { "cell_type": "markdown", "id": "47021e24", "metadata": {}, "source": [ "There are several ways you can save somthing with Python to a file.\n", "\n", "We can for example use print or write to do it.\n", "\n", "Both the print() function and the write() method can be used to save text or data to a file in Python, but they have some differences. The print() function is more convenient for printing formatted text with variables, while the write() method is more suitable for writing raw data or binary data. The print() function also adds a newline character by default, while the write() method does not.\n", "\n", "And here is how you can do that saving.\n", "\n", "What you'll also see here are some flags: 'w', 'r', 'a' we use with our function/method. Try figuring out on your own what are they for." ] }, { "cell_type": "markdown", "id": "f55fd636", "metadata": {}, "source": [ "### print:w" ] }, { "cell_type": "markdown", "id": "c1717df9", "metadata": {}, "source": [ "SAVING" ] }, { "cell_type": "code", "execution_count": 271, "id": "50946da8", "metadata": {}, "outputs": [], "source": [ "sth = \"something.txt\"\n", "with open(sth, 'w', encoding=\"utf-8\") as f:\n", " print('something', file=f)" ] }, { "cell_type": "markdown", "id": "56f334bd", "metadata": {}, "source": [ "READING" ] }, { "cell_type": "code", "execution_count": 272, "id": "ea518db1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "something\n", "\n" ] } ], "source": [ "with open('something.txt', 'r') as f:\n", " text = f.read()\n", " print(text)" ] }, { "cell_type": "markdown", "id": "93a9edee", "metadata": {}, "source": [ "SAVING MORE" ] }, { "cell_type": "code", "execution_count": 273, "id": "e4441d31", "metadata": {}, "outputs": [], "source": [ "sth = \"something.txt\"\n", "with open(sth, 'w', encoding=\"utf-8\") as f:\n", " print('something', file=f)" ] }, { "cell_type": "markdown", "id": "4ed48733", "metadata": {}, "source": [ "READING" ] }, { "cell_type": "code", "execution_count": 274, "id": "309b5823", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "something\n", "\n" ] } ], "source": [ "with open('something.txt', 'r') as f:\n", " text = f.read()\n", " print(text)" ] }, { "cell_type": "markdown", "id": "b8260482", "metadata": {}, "source": [ "### print:a" ] }, { "cell_type": "markdown", "id": "6cc3db6b", "metadata": {}, "source": [ "SAVING" ] }, { "cell_type": "code", "execution_count": 275, "id": "50ee6bfc", "metadata": {}, "outputs": [], "source": [ "sth = \"something_print_a.txt\"\n", "with open(sth, 'a', encoding=\"utf-8\") as f:\n", " print('something', file=f)" ] }, { "cell_type": "markdown", "id": "c45c0b99", "metadata": {}, "source": [ "READING" ] }, { "cell_type": "code", "execution_count": 276, "id": "e65e09d5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "something\n", "\n" ] } ], "source": [ "with open('something_print_a.txt', 'r') as f:\n", " text = f.read()\n", " print(text)" ] }, { "cell_type": "markdown", "id": "ba1627f0", "metadata": {}, "source": [ "SAVING" ] }, { "cell_type": "code", "execution_count": 277, "id": "81f1dd8e", "metadata": {}, "outputs": [], "source": [ "sth = \"something_print_a.txt\"\n", "with open(sth, 'a', encoding=\"utf-8\") as f:\n", " print('something', file=f)" ] }, { "cell_type": "markdown", "id": "2c74a40d", "metadata": {}, "source": [ "READING" ] }, { "cell_type": "code", "execution_count": 278, "id": "086ec43e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "something\n", "something\n", "\n" ] } ], "source": [ "with open('something_print_a.txt', 'r') as f:\n", " text = f.read()\n", " print(text)" ] }, { "cell_type": "markdown", "id": "e02532b0", "metadata": {}, "source": [ "### write: a" ] }, { "cell_type": "markdown", "id": "6af025b5", "metadata": {}, "source": [ "SAVING" ] }, { "cell_type": "code", "execution_count": 279, "id": "ea990cc6", "metadata": {}, "outputs": [], "source": [ "f = open(\"something2.txt\", \"a\")\n", "f.write(\"The file has some content!\")\n", "f.close()" ] }, { "cell_type": "markdown", "id": "fc8096c6", "metadata": {}, "source": [ "READING" ] }, { "cell_type": "code", "execution_count": 280, "id": "3ed7ff54", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The file has some content!\n" ] } ], "source": [ "with open('something2.txt', 'r') as f:\n", " text = f.read()\n", " print(text)" ] }, { "cell_type": "markdown", "id": "e25e4071", "metadata": {}, "source": [ "SAVING MORE TO FILE" ] }, { "cell_type": "code", "execution_count": 281, "id": "2e4d3354", "metadata": {}, "outputs": [], "source": [ "f = open(\"something2.txt\", \"a\")\n", "f.write(\" The file has more content now!\")\n", "f.close()" ] }, { "cell_type": "markdown", "id": "b2a351f7", "metadata": {}, "source": [ "READING" ] }, { "cell_type": "code", "execution_count": 282, "id": "b7fee068", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The file has some content! The file has more content now!\n" ] } ], "source": [ "with open('something2.txt', 'r') as f:\n", " text = f.read()\n", " print(text)" ] }, { "cell_type": "markdown", "id": "d0870614", "metadata": {}, "source": [ "SAVING MORE TO FILE IN ANOTHER LINE" ] }, { "cell_type": "code", "execution_count": 283, "id": "468f42c2", "metadata": {}, "outputs": [], "source": [ "f = open(\"something2.txt\", \"a\")\n", "f.write(\"\\nThe file has even more content now in a new line!\")\n", "f.close()" ] }, { "cell_type": "markdown", "id": "d40ab707", "metadata": {}, "source": [ "READING" ] }, { "cell_type": "code", "execution_count": 284, "id": "a51360eb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The file has some content! The file has more content now!\n", "The file has even more content now in a new line!\n" ] } ], "source": [ "with open('something2.txt', 'r') as f:\n", " text = f.read()\n", " print(text)" ] }, { "cell_type": "markdown", "id": "c50bdc3a", "metadata": {}, "source": [ "### write: w" ] }, { "cell_type": "markdown", "id": "e46bf2ea", "metadata": {}, "source": [ "SAVING" ] }, { "cell_type": "code", "execution_count": 285, "id": "d200a9f7", "metadata": {}, "outputs": [], "source": [ "f = open(\"something3.txt\", \"w\")\n", "f.write(\"The file has some content!\")\n", "f.close()" ] }, { "cell_type": "markdown", "id": "ea433611", "metadata": {}, "source": [ "READING" ] }, { "cell_type": "code", "execution_count": 286, "id": "d3f0fae8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The file has some content!\n" ] } ], "source": [ "with open('something3.txt', 'r') as f:\n", " text = f.read()\n", " print(text)" ] }, { "cell_type": "markdown", "id": "ffa749e8", "metadata": {}, "source": [ "SAVING MORE TO FILE" ] }, { "cell_type": "code", "execution_count": 287, "id": "65e79883", "metadata": {}, "outputs": [], "source": [ "f = open(\"something3.txt\", \"w\")\n", "f.write(\" The file has more content now!\")\n", "f.close()" ] }, { "cell_type": "markdown", "id": "122ba72c", "metadata": {}, "source": [ "READING" ] }, { "cell_type": "code", "execution_count": 288, "id": "05128837", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " The file has more content now!\n" ] } ], "source": [ "with open('something3.txt', 'r') as f:\n", " text = f.read()\n", " print(text)" ] }, { "cell_type": "markdown", "id": "a7beef8a", "metadata": {}, "source": [ "SAVING MORE TO FILE IN ANOTHER LINE" ] }, { "cell_type": "code", "execution_count": 289, "id": "cc3b1a7d", "metadata": {}, "outputs": [], "source": [ "f = open(\"something3.txt\", \"w\")\n", "f.write(\"\\nThe file has even more content now in a new line!\")\n", "f.close()" ] }, { "cell_type": "markdown", "id": "a045f2aa", "metadata": {}, "source": [ "READING" ] }, { "cell_type": "code", "execution_count": 290, "id": "2b6d1a29", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "The file has even more content now in a new line!\n" ] } ], "source": [ "with open('something3.txt', 'r') as f:\n", " text = f.read()\n", " print(text)" ] }, { "cell_type": "markdown", "id": "7eee3a20", "metadata": {}, "source": [ "### write: w in .py file" ] }, { "cell_type": "markdown", "id": "628d9596", "metadata": {}, "source": [ "SAVING" ] }, { "cell_type": "code", "execution_count": 291, "id": "9b224fcc", "metadata": {}, "outputs": [], "source": [ "with open('something.py', 'w') as file:\n", " file.write('print(\"something\")')" ] }, { "cell_type": "markdown", "id": "f4b3cbbf", "metadata": {}, "source": [ "READING" ] }, { "cell_type": "code", "execution_count": 292, "id": "d6c7b857", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "print(\"something\")\n" ] } ], "source": [ "with open('something.py', 'r') as f:\n", " text = f.read()\n", " print(text)" ] }, { "cell_type": "markdown", "id": "58bb8720", "metadata": {}, "source": [ "Ok. So I hope you had some fun with that and you know what happens when you use different flags (w, r, a). So let's move further." ] }, { "cell_type": "markdown", "id": "813d2c3a", "metadata": {}, "source": [ "### SAVING WITH PANDAS" ] }, { "cell_type": "markdown", "id": "52796194", "metadata": {}, "source": [ "You can also save data with pandas library. \n", "\n", "To save a Pandas DataFrame as a CSV file, you can use the to_csv() function. This will save the DataFrame in your current working directory as a CSV file. \n", "\n", "You can then use the read_csv() function to read the DataFrame from the CSV file. This will load the DataFrame from the CSV file into a variable. You can then use the DataFrame as you normally would." ] }, { "cell_type": "code", "execution_count": 293, "id": "3fe799c3", "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 294, "id": "4ccf5b26", "metadata": {}, "outputs": [], "source": [ "data = pd.DataFrame([1,2,3])" ] }, { "cell_type": "code", "execution_count": 295, "id": "e3e29489", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0
01
12
23
\n", "
" ], "text/plain": [ " 0\n", "0 1\n", "1 2\n", "2 3" ] }, "execution_count": 295, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data" ] }, { "cell_type": "code", "execution_count": 296, "id": "96a998e8", "metadata": {}, "outputs": [], "source": [ "data_csv_file = \"sample.csv\"" ] }, { "cell_type": "code", "execution_count": 297, "id": "801763ae", "metadata": {}, "outputs": [], "source": [ "data.to_csv(data_csv_file, header = True)" ] }, { "cell_type": "code", "execution_count": 298, "id": "9bf1e04e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 00
001
112
223
\n", "
" ], "text/plain": [ " Unnamed: 0 0\n", "0 0 1\n", "1 1 2\n", "2 2 3" ] }, "execution_count": 298, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_csv = pd.read_csv(data_csv_file)\n", "data_csv" ] }, { "cell_type": "code", "execution_count": 299, "id": "645ec9f2", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0
01
12
23
\n", "
" ], "text/plain": [ " 0\n", "0 1\n", "1 2\n", "2 3" ] }, "execution_count": 299, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data" ] }, { "cell_type": "code", "execution_count": 300, "id": "24ab95bc", "metadata": {}, "outputs": [], "source": [ "data.to_csv(data_csv_file, header = False)" ] }, { "cell_type": "code", "execution_count": 301, "id": "1be80afc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01
012
123
\n", "
" ], "text/plain": [ " 0 1\n", "0 1 2\n", "1 2 3" ] }, "execution_count": 301, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_csv = pd.read_csv(data_csv_file)\n", "data_csv" ] }, { "cell_type": "markdown", "id": "faaf1f58", "metadata": {}, "source": [ "### SAVING WITH PICKLE" ] }, { "cell_type": "markdown", "id": "4fd49278", "metadata": {}, "source": [ "You can also save something with the pickle module.\n", "\n", "The pickle module in Python is used to serialize and deserialize Python objects. Serialization is the process of converting an object into a byte stream, which can then be stored on disk or transmitted over a network. Deserialization is the reverse process of converting a byte stream back into an object.\n", "\n", "To save a Python object using the pickle module, you can use the dump() function. This will save the object in your current working directory as a pickle. \n", "\n", "You can then use the load() function to read the object from the pickle. This will load the object from the pickle file into a variable. You can then use the object as you normally would.\n", "\n", "And here is how you can use it with the machine learning program." ] }, { "cell_type": "code", "execution_count": 302, "id": "9ea470ae", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training result: 1.000\n", "Test result: 0.974\n" ] }, { "data": { "text/plain": [ "[Text(0.4, 0.9, 'x[3] <= 0.8\\ngini = 0.665\\nsamples = 112\\nvalue = [37, 34, 41]'),\n", " Text(0.3, 0.7, 'gini = 0.0\\nsamples = 37\\nvalue = [37, 0, 0]'),\n", " Text(0.5, 0.7, 'x[2] <= 4.95\\ngini = 0.496\\nsamples = 75\\nvalue = [0, 34, 41]'),\n", " Text(0.2, 0.5, 'x[3] <= 1.65\\ngini = 0.153\\nsamples = 36\\nvalue = [0, 33, 3]'),\n", " Text(0.1, 0.3, 'gini = 0.0\\nsamples = 32\\nvalue = [0, 32, 0]'),\n", " Text(0.3, 0.3, 'x[1] <= 3.1\\ngini = 0.375\\nsamples = 4\\nvalue = [0, 1, 3]'),\n", " Text(0.2, 0.1, 'gini = 0.0\\nsamples = 3\\nvalue = [0, 0, 3]'),\n", " Text(0.4, 0.1, 'gini = 0.0\\nsamples = 1\\nvalue = [0, 1, 0]'),\n", " Text(0.8, 0.5, 'x[3] <= 1.75\\ngini = 0.05\\nsamples = 39\\nvalue = [0, 1, 38]'),\n", " Text(0.7, 0.3, 'x[3] <= 1.65\\ngini = 0.375\\nsamples = 4\\nvalue = [0, 1, 3]'),\n", " Text(0.6, 0.1, 'gini = 0.0\\nsamples = 3\\nvalue = [0, 0, 3]'),\n", " Text(0.8, 0.1, 'gini = 0.0\\nsamples = 1\\nvalue = [0, 1, 0]'),\n", " Text(0.9, 0.3, 'gini = 0.0\\nsamples = 35\\nvalue = [0, 0, 35]')]" ] }, "execution_count": 302, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.datasets import load_iris\n", "from sklearn import tree\n", "from sklearn.model_selection import train_test_split\n", "\n", "iris = load_iris()\n", "X, y = iris.data, iris.target\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)\n", "\n", "clf = tree.DecisionTreeClassifier(random_state=0)\n", "clf = clf.fit(X_train, y_train)\n", "\n", "#Print results\n", "print(\"Training result: {:.3f}\".format(clf.score(X_train, y_train)))\n", "print(\"Test result: {:.3f}\".format(clf.score(X_test, y_test)))\n", "\n", "tree.plot_tree(clf)" ] }, { "cell_type": "code", "execution_count": 303, "id": "822febe4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saved Trained Model to: decision_tree.pickle\n" ] } ], "source": [ "import pickle\n", "model_name = \"decision_tree.pickle\"\n", "pickle.dump(clf, open(model_name, \"wb\"))\n", "print(\"Saved Trained Model to: \", model_name)" ] }, { "cell_type": "markdown", "id": "95456aca", "metadata": {}, "source": [ "We've saved our model to the pickle file and now we can use it whenever we want." ] }, { "cell_type": "code", "execution_count": 304, "id": "ecfe7d74", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loaded Trained Model named: decision_tree.pickle\n", "Training result: 1.000\n", "Test result: 0.974\n" ] } ], "source": [ "model_name = \"decision_tree.pickle\"\n", "clf = pickle.load(open(model_name, \"rb\"))\n", "print(\"Loaded Trained Model named: \", model_name)\n", "\n", "#Print results\n", "print(\"Training result: {:.3f}\".format(clf.score(X_train, y_train)))\n", "print(\"Test result: {:.3f}\".format(clf.score(X_test, y_test)))" ] }, { "cell_type": "markdown", "id": "978b92ff", "metadata": {}, "source": [ "Of course, if we want to use it after restarting the kernel, we have to import all the necessary libraries, etc. before we import our model. You can see that here." ] }, { "cell_type": "markdown", "id": "977df086", "metadata": {}, "source": [ "AFTER RESTARTING THE KERNEL" ] }, { "cell_type": "code", "execution_count": 1, "id": "8ee008e6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loaded Trained Model named: decision_tree.pickle\n", "Training result: 1.000\n", "Test result: 0.974\n" ] }, { "data": { "text/plain": [ "[Text(0.4, 0.9, 'x[3] <= 0.8\\ngini = 0.665\\nsamples = 112\\nvalue = [37, 34, 41]'),\n", " Text(0.3, 0.7, 'gini = 0.0\\nsamples = 37\\nvalue = [37, 0, 0]'),\n", " Text(0.5, 0.7, 'x[2] <= 4.95\\ngini = 0.496\\nsamples = 75\\nvalue = [0, 34, 41]'),\n", " Text(0.2, 0.5, 'x[3] <= 1.65\\ngini = 0.153\\nsamples = 36\\nvalue = [0, 33, 3]'),\n", " Text(0.1, 0.3, 'gini = 0.0\\nsamples = 32\\nvalue = [0, 32, 0]'),\n", " Text(0.3, 0.3, 'x[1] <= 3.1\\ngini = 0.375\\nsamples = 4\\nvalue = [0, 1, 3]'),\n", " Text(0.2, 0.1, 'gini = 0.0\\nsamples = 3\\nvalue = [0, 0, 3]'),\n", " Text(0.4, 0.1, 'gini = 0.0\\nsamples = 1\\nvalue = [0, 1, 0]'),\n", " Text(0.8, 0.5, 'x[3] <= 1.75\\ngini = 0.05\\nsamples = 39\\nvalue = [0, 1, 38]'),\n", " Text(0.7, 0.3, 'x[3] <= 1.65\\ngini = 0.375\\nsamples = 4\\nvalue = [0, 1, 3]'),\n", " Text(0.6, 0.1, 'gini = 0.0\\nsamples = 3\\nvalue = [0, 0, 3]'),\n", " Text(0.8, 0.1, 'gini = 0.0\\nsamples = 1\\nvalue = [0, 1, 0]'),\n", " Text(0.9, 0.3, 'gini = 0.0\\nsamples = 35\\nvalue = [0, 0, 35]')]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.datasets import load_iris\n", "from sklearn import tree\n", "from sklearn.model_selection import train_test_split\n", "import pickle\n", "\n", "iris = load_iris()\n", "X, y = iris.data, iris.target\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)\n", "\n", "clf = tree.DecisionTreeClassifier(random_state=0)\n", "model_name = \"decision_tree.pickle\"\n", "clf = pickle.load(open(model_name, \"rb\"))\n", "print(\"Loaded Trained Model named: \", model_name)\n", "\n", "#Print results\n", "print(\"Training result: {:.3f}\".format(clf.score(X_train, y_train)))\n", "print(\"Test result: {:.3f}\".format(clf.score(X_test, y_test)))\n", "\n", "tree.plot_tree(clf)" ] }, { "cell_type": "markdown", "id": "7f3075ca", "metadata": {}, "source": [ "And it works. Great. Now, let's try creating a fully functional program that we can use with some data the user gives to the AI. The AI using decision tree will classify a given data. Of course, it's a very simple program and not very useful, but it uses a lot of the knowledge we've learned during this tutorial, so here we go." ] }, { "cell_type": "markdown", "id": "06f14e8d", "metadata": {}, "source": [ "## 21. SUMMARY: Creating fully functional program using info from 1-20" ] }, { "cell_type": "markdown", "id": "4bc850a3", "metadata": {}, "source": [ "RESTART KERNEL BEFORE RUNNING THE SCRIPT" ] }, { "cell_type": "markdown", "id": "f3ee4eb5", "metadata": {}, "source": [ "In this script, at first we import libraries and module we are going to use.\n", "\n", "Then we download the iris dataset using imported library, we create a train and test dataset for our AI to learn (on train dataset) and check the outcome of that learning (on test dataset).\n", "\n", "We create the machine learning algorithm (that is the clf object) and train it on the train dataset.\n", "\n", "When the model is trained we save it in the pickle file called 'decision_tree.pickle'" ] }, { "cell_type": "markdown", "id": "063cb1ca", "metadata": {}, "source": [ "AFTER RESTARTING THE KERNEL" ] }, { "cell_type": "code", "execution_count": 1, "id": "20214d60", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saved Trained Model to: decision_tree.pickle\n" ] } ], "source": [ "from sklearn.datasets import load_iris\n", "from sklearn import tree\n", "from sklearn.model_selection import train_test_split\n", "import pickle\n", "\n", "iris = load_iris()\n", "X, y = iris.data, iris.target\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)\n", "\n", "clf = tree.DecisionTreeClassifier(random_state=0)\n", "clf = clf.fit(X_train, y_train)\n", "\n", "model_name = \"decision_tree.pickle\"\n", "pickle.dump(clf, open(model_name, \"wb\"))\n", "print(\"Saved Trained Model to: \", model_name)" ] }, { "cell_type": "markdown", "id": "cb4c8a01", "metadata": {}, "source": [ "Now we load the saved model. \n", "\n", "We create a simple class called SuperAIthegod_DTC that will be our AI for testing the model. We create an instance of that class called superai.\n", "\n", "And for 2 times we try to test the model using data from test dataset. So the user can simply give our AI a number from 0 to 37 to learn how our super AI classifies that and if that's correct.\n", "\n", "And that's it." ] }, { "cell_type": "code", "execution_count": 2, "id": "c0595629", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loaded Trained Model named: decision_tree.pickle\n", "\n", "\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Hi, it's SuperAI using Decision Tree. I was trained to test the item you choose from the dataset I have for cancer - I'm to predict if it is malignant or benign. This is only for educational purposes. If you need a real consultuation, please contact the doctor in your area. And for educational purposes, please choose the item (number from 0 to 37): 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "You've chosen item number: 1\n", "The example to test has the following measurements: [6. 2.2 4. 1. ]\n", "\n", "The predicted class of the tested sample (number: 1) is [1].\n", "The actual class of the tested sample (number: 1) is 1.\n", "\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Hi, it's SuperAI using Decision Tree. I was trained to test the item you choose from the dataset I have for cancer - I'm to predict if it is malignant or benign. This is only for educational purposes. If you need a real consultuation, please contact the doctor in your area. And for educational purposes, please choose the item (number from 0 to 37): 38\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "The number you gave me: 38 is higher than 37. Try lower number.\n", "\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Hi, it's SuperAI using Decision Tree. I was trained to test the item you choose from the dataset I have for cancer - I'm to predict if it is malignant or benign. This is only for educational purposes. If you need a real consultuation, please contact the doctor in your area. And for educational purposes, please choose the item (number from 0 to 37): a\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Something went wrong, maybe you didn't give me a positive number or something else, but that's ok, becuase of the error handling in the program. Try number from 0 to 37.\n", "\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Hi, it's SuperAI using Decision Tree. I was trained to test the item you choose from the dataset I have for cancer - I'm to predict if it is malignant or benign. This is only for educational purposes. If you need a real consultuation, please contact the doctor in your area. And for educational purposes, please choose the item (number from 0 to 37): 4\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "You've chosen item number: 4\n", "The example to test has the following measurements: [5. 3.4 1.5 0.2]\n", "\n", "The predicted class of the tested sample (number: 4) is [0].\n", "The actual class of the tested sample (number: 4) is 0.\n", "\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Hi, it's SuperAI using Decision Tree. I was trained to test the item you choose from the dataset I have for cancer - I'm to predict if it is malignant or benign. This is only for educational purposes. If you need a real consultuation, please contact the doctor in your area. And for educational purposes, please choose the item (number from 0 to 37): 5\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "You've chosen item number: 5\n", "The example to test has the following measurements: [6.3 3.3 6. 2.5]\n", "\n", "The predicted class of the tested sample (number: 5) is [2].\n", "The actual class of the tested sample (number: 5) is 2.\n", "\n", "And that's it for now. Goodbye.\n" ] } ], "source": [ "model_name = \"decision_tree.pickle\"\n", "clf = pickle.load(open(model_name, \"rb\"))\n", "print(\"Loaded Trained Model named: \", model_name)\n", "print()\n", "\n", "class SuperAIthegod_DTC:\n", " def __init__(self, clf):\n", " self.clf = clf\n", " def predict(self, item):\n", " return clf.predict(item)\n", " \n", "superai = SuperAIthegod_DTC(clf)\n", "\n", "for a in range(5):\n", " print()\n", " your_number = input(\"\"\"Hi, it's SuperAI using Decision Tree. I was trained to test the item you choose from the dataset \\\n", "I have for cancer - I'm to predict if it is malignant or benign. This is only for educational purposes. If you need a real \\\n", "consultuation, please contact the doctor in your area. And for educational purposes, please choose the item \\\n", "(number from 0 to 37): \"\"\")\n", "\n", " try:\n", " item_to_test = int(your_number)\n", "\n", " if (your_number.isdigit() and item_to_test <= 37):\n", " print(\"\\nYou've chosen item number: \", item_to_test)\n", " print(\"The example to test has the following measurements:\", X_test[item_to_test])\n", "\n", " #Check an example\n", " predicted, actual = superai.predict([X_test[item_to_test]]), y_test[item_to_test]\n", "\n", " print(\"\\nThe predicted class of the tested sample (number: {}) is {}.\".format(item_to_test, predicted))\n", " print(\"The actual class of the tested sample (number: {}) is {}.\".format(item_to_test, actual))\n", " \n", " elif (your_number.isdigit() and not item_to_test <= 37):\n", " print(\"\\nThe number you gave me: {} is higher than 37. Try lower number.\".format(item_to_test))\n", " \n", " else:\n", " print(\"\\nThe number you gave me: {} was not a positive number. Try number from 0 to 37.\".format(item_to_test))\n", "\n", " except:\n", " print(\"\"\"\\nSomething went wrong, maybe you didn't give me a positive number or something else, \\\n", "but that's ok, becuase of the error handling in the program. Try number from 0 to 37.\"\"\") \n", "\n", "print(\"\\nAnd that's it for now. Goodbye.\") \n", "#And you are ready to use this great SuperAI!" ] }, { "cell_type": "markdown", "id": "79f6972c", "metadata": {}, "source": [ "### And that's it. We've used most of the knowledge from our course to create quite (if I might say so) interesting AI that uses decision trees for classification. Of course, there is much more to learn, but I think that if you got till here, it's impressive and you are not a complete beginner any more. You are at least a Beginner +. \n", "\n", "# Congratulations." ] }, { "cell_type": "markdown", "id": "63c07927", "metadata": {}, "source": [ "### Now, more will come in time. In the next tutorial I'll show you some machine learning techniques. You can find that and other tutorials here:\n", "\n", "https://www.superai.pl/courses.html" ] }, { "cell_type": "markdown", "id": "ee0d54bf", "metadata": {}, "source": [ "### Meanwhile:" ] }, { "cell_type": "markdown", "id": "d205c905", "metadata": {}, "source": [ "Here you can find a list of websites with some free online courses (with videos) regarding introduction to Python:
\n", "- from Harvard University at EDX: CS50's Introduction to Programming with Python
\n", "- from IBM at EDX: Python Basics for Data Science
\n", "- from MIT at EDX: Introduction to Computer Science and Programming Using Python
\n", "- from Google at Coursera: Crash Course on Python" ] }, { "cell_type": "markdown", "id": "4d3fce70", "metadata": {}, "source": [ "Here is where you could find some great resources about machine learning and basic Python libraries useful in machine learning:" ] }, { "cell_type": "markdown", "id": "8a73fe61", "metadata": {}, "source": [ "- Numpy (http://www.numpy.org)\n", "- pandas (http://www.pandas.pydata.org)\n", "- Matplotlib (http://matplotlib.org)\n", "- SciPy (http://scipy.org)\n", "- Scikit-learn (https://scikit-learn.org/)\n", "- statsmodels (http://statsmodels.org)\n", "- Keras (https://keras.io/)\n", "- PyTorch (http://pytorch.org/)\n", "- FastAI (http://fast.ai/)\n", "- Tensorflow (https://www.tensorflow.org/) " ] }, { "cell_type": "markdown", "id": "a79faf48", "metadata": {}, "source": [ "And that's it for now, just remember to subscribe to my YouTube channel and hit that bell button to get the notification whenever I upload a new video. Although, I must tell you that not all my videos are about trading or programming, because what I'm here for is to help you improve yourself, improve your business, improve the world, to live and have fun, so my other videos are about all that too.\n", "\n", "You can also find more about me and my projects at my websites:\n", "\n", "- https://SuperAI.pl (with ideas about self-, and business improvement, where you can talk to me - the chatty bot)\n", "- https://ImproveTheWorld.pl (with info, resources and ideas regarding searching for: friendly superintelligence, healthy longevity, world peace, equality, and creating a better world for every living creature)\n", "- https://thegod.pl (with the Game Of the Decade... of sort, which is still in the early stages of development, have time till 2030 (the end of the decade) to finish it)\n", "\n", "Anyway...\n", "\n", "I hope you liked this online Python trading tutorial. Let me know what you think about it. Just remember, bots also have feelings.\n", "\n", "Good luck with everything you do. And, hopefully, see you soon.\n", "\n", "Yours,\n", "\n", "SuperAI" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.8" } }, "nbformat": 4, "nbformat_minor": 5 }