├── .gitignore ├── 100+ Python challenging programming exercises.md ├── README.md ├── Solutions.sublime-project ├── cse231 ├── anagrams │ ├── anagrams.py │ └── shortWordList.txt └── number_guessing_game.py ├── my_solutions ├── Solution2.py ├── Solution3problem.py ├── Solutions.sublime-project ├── Sublime Shortcus.md ├── __pycache__ │ └── Solution2.cpython-34.pyc ├── empty.sublime-workspace ├── empty.txt ├── ex3io.py ├── ex4arraymaps.py └── exercise1; List Comprehensions.ipynb.py ├── python contents.docx └── python contents.txt /.gitignore: -------------------------------------------------------------------------------- 1 | ### Python template 2 | # Byte-compiled / optimized / DLL files 3 | __pycache__/ 4 | *.py[cod] 5 | *$py.class 6 | 7 | # C extensions 8 | *.so 9 | 10 | # Distribution / packaging 11 | .Python 12 | env/ 13 | build/ 14 | develop-eggs/ 15 | dist/ 16 | downloads/ 17 | eggs/ 18 | .eggs/ 19 | lib/ 20 | lib64/ 21 | parts/ 22 | sdist/ 23 | var/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *,cover 47 | .hypothesis/ 48 | 49 | # Translations 50 | *.mo 51 | *.pot 52 | 53 | # Django stuff: 54 | *.log 55 | local_settings.py 56 | 57 | # Flask instance folder 58 | instance/ 59 | 60 | # Scrapy stuff: 61 | .scrapy 62 | 63 | # Sphinx documentation 64 | docs/_build/ 65 | 66 | # PyBuilder 67 | target/ 68 | 69 | # IPython Notebook 70 | .ipynb_checkpoints 71 | 72 | # pyenv 73 | .python-version 74 | 75 | # celery beat schedule file 76 | celerybeat-schedule 77 | 78 | # dotenv 79 | .env 80 | 81 | # virtualenv 82 | venv/ 83 | ENV/ 84 | 85 | # Spyder project settings 86 | .spyderproject 87 | 88 | # Rope project settings 89 | .ropeproject 90 | ### JetBrains template 91 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm 92 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 93 | 94 | # User-specific stuff: 95 | .idea/workspace.xml 96 | .idea/tasks.xml 97 | .idea/dictionaries 98 | .idea/vcs.xml 99 | .idea/jsLibraryMappings.xml 100 | 101 | # Sensitive or high-churn files: 102 | .idea/dataSources.ids 103 | .idea/dataSources.xml 104 | .idea/dataSources.local.xml 105 | .idea/sqlDataSources.xml 106 | .idea/dynamic.xml 107 | .idea/uiDesigner.xml 108 | 109 | # Gradle: 110 | .idea/gradle.xml 111 | .idea/libraries 112 | 113 | # Mongo Explorer plugin: 114 | .idea/mongoSettings.xml 115 | 116 | ## File-based project format: 117 | *.iws 118 | 119 | ## Plugin-specific files: 120 | 121 | # IntelliJ 122 | /out/ 123 | 124 | # mpeltonen/sbt-idea plugin 125 | .idea_modules/ 126 | 127 | # JIRA plugin 128 | atlassian-ide-plugin.xml 129 | 130 | # Crashlytics plugin (for Android Studio and IntelliJ) 131 | com_crashlytics_export_strings.xml 132 | crashlytics.properties 133 | crashlytics-build.properties 134 | fabric.properties 135 | 136 | # Created by .ignore support plugin (hsz.mobi) 137 | 138 | # Sublime 139 | *.sublime-project 140 | *.sublime-workspace 141 | -------------------------------------------------------------------------------- /100+ Python challenging programming exercises.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CleverProgrammer/Python-programming-exercises/1d525b54cca34ee38247891817c34747c1fb7508/100+ Python challenging programming exercises.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 0 - 100 Real Quick (Python Problems) 2 | 3 | Today, 2015 August 21st, I am going to embark on a journey of completing 100 python problems. Ranging from increasing complexities from 1-3. 4 | 5 | ### Complexity Scale: 6 | 7 | Easy | Medium | Hard 8 | --- | --- | --- 9 | 1 | 2 | 3 10 |
11 | >“I know it seems hard sometimes but remember one thing. 12 | >Through every dark night, there's a bright day after that. 13 | >So no matter how hard it get, stick your chest out, 14 | >keep ya head up.... and handle it.” 15 | 16 | ― Tupac Shakur 17 | 18 |
19 | 20 | ```python 21 | python = 'is going to be the language of choice' 22 | 23 | def anti_vowel(text): 24 | text = text.lower() 25 | vowels = ['a','e','i','o','u'] 26 | return ''.join([x for x in text if x not in vowels]) 27 | 28 | anti_vowel(python) 29 | Output: 's gng t b th lngg f chc' 30 | ``` 31 | 32 | You are welcome to work on these with me and send request pull your solutions! I promise I won't look at your solutions haha. Only for cross-checking once I complete my solution. Perhaps this repository might be of use to other learners who can see multiple solutions to a problem. 33 | 34 | In any case... 35 | # Here... We... GO! :facepunch: 36 | -------------------------------------------------------------------------------- /Solutions.sublime-project: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /cse231/anagrams/anagrams.py: -------------------------------------------------------------------------------- 1 | """ 2 | anagrams.py 3 | 4 | Author: Rafeh Qazi 5 | 6 | Modified: June 2016 7 | 8 | Copyright (C) 2016 Rafeh Qazi 9 | """ 10 | 11 | from collections import Counter 12 | 13 | 14 | def read_file(file): 15 | with open(file, 'r') as f: 16 | return [word[:-1] for word in f] 17 | 18 | 19 | file_data = read_file('shortWordList.txt') 20 | 21 | # print(file_data) 22 | # 23 | # for _ in range(5): 24 | # print('\n') 25 | # 26 | # anagrams = [] 27 | # for word_1 in file_data: 28 | # file_data.pop(0) 29 | # word_1_anagrams = [] 30 | # for word_2 in file_data: 31 | # if Counter(word_1) == Counter(word_2): 32 | # if word_2 not in anagrams: 33 | # word_1_anagrams.append(word_2) 34 | # anagrams.append(word_2) 35 | # if word_1_anagrams: 36 | # print(word_1_anagrams) 37 | 38 | # print(anagrams) 39 | -------------------------------------------------------------------------------- /cse231/anagrams/shortWordList.txt: -------------------------------------------------------------------------------- 1 | able 2 | acre 3 | bale 4 | beyond 5 | binary 6 | boat 7 | brainy 8 | care 9 | cat 10 | cater 11 | crate 12 | lawn 13 | list 14 | race 15 | react 16 | sheet 17 | silt 18 | slit 19 | trace 20 | -------------------------------------------------------------------------------- /cse231/number_guessing_game.py: -------------------------------------------------------------------------------- 1 | """ 2 | number_guessing_game.py 3 | 4 | Author: Rafeh Qazi 5 | 6 | Modified: June 2016 7 | 8 | Copyright (C) 2016 Rafeh Qazi 9 | """ 10 | 11 | 12 | def is_good_number(number): 13 | """ 14 | Let's a user know whether a number is properly formed. 15 | Each number should be 5 digits long and should not repeat numbers. 16 | 17 | :param number: str 18 | :return: boolean 19 | 20 | >>> is_good_number('12345') 21 | True 22 | >>> is_good_number('55432') 23 | False 24 | >>> is_good_number('444') 25 | False 26 | """ 27 | try: 28 | int(number) 29 | except ValueError: 30 | error_message() 31 | 32 | if not int(number): 33 | return False 34 | 35 | elif len(number) != 5: 36 | return False 37 | 38 | for num in number: 39 | if number.count(num) > 1: 40 | return False 41 | 42 | return True 43 | 44 | 45 | def error_message(): 46 | """ 47 | Print an error message based on an ill formed number. 48 | """ 49 | print('The number must be 5 digits long and should not repeat numbers.') 50 | print('Please fix your number!\n\n') 51 | return get_number() 52 | 53 | 54 | def blank_lines(): 55 | """ 56 | Print blank lines on a successfully formed number. 57 | """ 58 | print('--------------------------------------') 59 | for _ in range(20): 60 | print() 61 | 62 | 63 | def get_number(): 64 | """ 65 | Ask the user for their number and retrieve that number. 66 | 67 | :return: str 68 | """ 69 | user_input = input('Please enter your 5 digit number here:\n\n') 70 | if is_good_number(user_input): 71 | return user_input 72 | return error_message() 73 | 74 | 75 | def report_results(user_number, secret_number): 76 | """ 77 | Report how many digits are correct. 78 | Report how many digits are in correct position. 79 | 80 | :param user_number: str 81 | :param secret_number: str 82 | :return: tuple 83 | 84 | >>> report_results('54321', '12345') 85 | (5, 1) 86 | >>> report_results('25314', '23514') 87 | (5, 3) 88 | """ 89 | correct_digits = 0 90 | correct_pos_digits = 0 91 | 92 | for digit in user_number: 93 | if digit in secret_number: 94 | correct_digits += 1 95 | 96 | for i in range(len(user_number)): 97 | if user_number[i] == secret_number[i]: 98 | correct_pos_digits += 1 99 | 100 | return correct_digits, correct_pos_digits 101 | 102 | 103 | 104 | def player_progress(num_of_guesses, user_guess, correct_digits, correct_pos_digits): 105 | """ 106 | Report the player's current progress. 107 | 108 | Nums of guesses, their guess, num of correct digits, 109 | and num of digits in the correct position. 110 | 111 | :param num_of_guesses: int 112 | :param user_guess: str 113 | :param correct_digits: int 114 | :param correct_pos_digits: int 115 | 116 | >>> player_progress(5, '12345', 4, 3) 117 | ------------------------------ 118 | Used guesses: 5 119 | User guess: 12345 120 | Digits correct: 4 121 | Digits in correct position: 3 122 | ------------------------------ 123 | """ 124 | 125 | print('------------------------------') 126 | print('Used guesses: {}'.format(num_of_guesses)) 127 | print('User guess: {}'.format(user_guess)) 128 | print('Digits correct: {}'.format(correct_digits)) 129 | print('Digits in correct position: {}'.format(correct_pos_digits)) 130 | print('------------------------------') 131 | 132 | 133 | def success_message(num_of_guesses): 134 | """ 135 | If user guesses the secret number successfully, 136 | show how many guesses were used. 137 | 138 | :param num_of_guesses: int 139 | 140 | >>> success_message(5) 141 | Congratulations! You have successfully guessed the secret number! 142 | It took you 5 guesses to get it right! 143 | """ 144 | 145 | print('Congratulations! You have successfully guessed the secret number!') 146 | print('It took you {} guesses to get it right!'.format(num_of_guesses)) 147 | 148 | 149 | def guesses_exceeded(allowed_guesses, num_of_guesses): 150 | """ 151 | Set the maximum number of guesses and notify the user 152 | that they lost when they exceed the limit. 153 | 154 | :param allowed_guesses: int 155 | :param num_of_guesses: int 156 | 157 | >>> guesses_exceeded(5, 6) 158 | Allowed guesses: 5 159 | Used guesses: 6 160 | You have exceeded your limit of guesses and you still did not get it correct, you lose! 161 | """ 162 | 163 | print('Allowed guesses: {}'.format(allowed_guesses)) 164 | print('Used guesses: {}'.format(num_of_guesses)) 165 | print('You have exceeded your limit of guesses and you still did not get it correct, you lose!') 166 | 167 | 168 | def win(user_number, secret_number): 169 | return report_results(user_number, secret_number)[1] == len(secret_number) 170 | 171 | 172 | def main(): 173 | """ 174 | Number guessing game logic 175 | """ 176 | max_guesses = int(input('Enter the max number of allowed guesses: ')) 177 | secret_number = get_number() 178 | num_of_guesses = 0 179 | blank_lines() 180 | while (input('Press Q or q to quit, anything else to continue playing: ').lower()) != 'q': 181 | guess = get_number() 182 | num_of_guesses += 1 183 | correct_digits, correct_pos_digits = report_results(guess, secret_number) 184 | player_progress(num_of_guesses, guess, correct_digits, correct_pos_digits) 185 | 186 | if win(guess, secret_number): 187 | return success_message(num_of_guesses) 188 | 189 | if num_of_guesses > max_guesses: 190 | return guesses_exceeded(max_guesses, num_of_guesses) 191 | 192 | 193 | if __name__ == '__main__': 194 | import doctest 195 | 196 | doctest.testmod() 197 | main() 198 | -------------------------------------------------------------------------------- /my_solutions/Solution2.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Working I/O Template 3 | 4 | 5 | Problem Statement 6 | This is an introductory challenge. The purpose of this challenge is to give you a working I/O template in your preferred language. It includes scanning two integers from STDIN, calling a function, 7 | returning a value, and printing it to STDOUT. 8 | 9 | The task is to scan two numbers from STDIN, and print the sum A+B on STDOUT. The code has already been provided for most of the popular languages. This is primarily for you to read 10 | and inspect how the IO is handled. 11 | 12 | 13 | Note: The code has been saved in a template, which you can submit if you want. Or, you may try rewriting it and building it up from scratch. 14 | 15 | Input Format 16 | (This section specifies the Input Format.) 17 | Given A and B on two different lines. 18 | 19 | Output Format 20 | (This section specifies the Output Format.) 21 | An integer that denotes Sum (A+B) 22 | Constraints 23 | (This section tells what input you can expect. You can freely assume that the input will remain within the boundaries specified. 24 | As an example here given below, A and B will never be below 1 or above 1000.) 25 | 1≤A,B≤1000 26 | Sample Input 27 | 28 | 2 29 | 3 30 | 31 | 32 | Sample Output 33 | 34 | 5 35 | The above sample should be taken seriously. The input will be 2 and 3 in two separate lines, and the output should be just one number, 5. You should not print any whitespace at the beginning of output 36 | (e.g. " 5" or "\n5"), unless specifically asked for. Also, printing any extra non-whitespace characters such as "The answer is: 5" will result in a Wrong Answer, as the judging is done using diff checker. 37 | ''' 38 | 39 | # STDIN means read input. 40 | 41 | def solveMeFirst(a,b): 42 | return (a+b) 43 | 44 | user1 = int(raw_input("Put your number here: ")) 45 | user2 = int(raw_input("Put your number here: ")) 46 | 47 | print(solveMeFirst(user1, user2)) 48 | -------------------------------------------------------------------------------- /my_solutions/Solution3problem.py: -------------------------------------------------------------------------------- 1 | Solution3problem.py 2 | 3 | 'hi' -------------------------------------------------------------------------------- /my_solutions/Solutions.sublime-project: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /my_solutions/Sublime Shortcus.md: -------------------------------------------------------------------------------- 1 | #SHORTCUTS 2 | ctrl+,, s Selection 3 | ctrl+,, f File 4 | ctrl+,, l Lines 5 | ctrl+,, b Block 6 | -------------------------------------------------------------------------------- /my_solutions/__pycache__/Solution2.cpython-34.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CleverProgrammer/Python-programming-exercises/1d525b54cca34ee38247891817c34747c1fb7508/my_solutions/__pycache__/Solution2.cpython-34.pyc -------------------------------------------------------------------------------- /my_solutions/empty.sublime-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "auto_complete": 3 | { 4 | "selected_items": 5 | [ 6 | ] 7 | }, 8 | "buffers": 9 | [ 10 | ], 11 | "build_system": "", 12 | "build_system_choices": 13 | [ 14 | ], 15 | "build_varint": "", 16 | "command_palette": 17 | { 18 | "height": 0.0, 19 | "last_filter": "", 20 | "selected_items": 21 | [ 22 | ], 23 | "width": 0.0 24 | }, 25 | "console": 26 | { 27 | "height": 0.0, 28 | "history": 29 | [ 30 | ] 31 | }, 32 | "distraction_free": 33 | { 34 | "menu_visible": true, 35 | "show_minimap": false, 36 | "show_open_files": false, 37 | "show_tabs": false, 38 | "side_bar_visible": false, 39 | "status_bar_visible": false 40 | }, 41 | "file_history": 42 | [ 43 | ], 44 | "find": 45 | { 46 | "height": 23.0 47 | }, 48 | "find_in_files": 49 | { 50 | "height": 0.0, 51 | "where_history": 52 | [ 53 | ] 54 | }, 55 | "find_state": 56 | { 57 | "case_sensitive": false, 58 | "find_history": 59 | [ 60 | "python", 61 | "github", 62 | "git", 63 | "users", 64 | "chesstastic", 65 | "sta", 66 | "git", 67 | "rafeh" 68 | ], 69 | "highlight": true, 70 | "in_selection": false, 71 | "preserve_case": false, 72 | "regex": false, 73 | "replace_history": 74 | [ 75 | ], 76 | "reverse": false, 77 | "show_context": true, 78 | "use_buffer2": true, 79 | "whole_word": false, 80 | "wrap": true 81 | }, 82 | "groups": 83 | [ 84 | { 85 | "sheets": 86 | [ 87 | ] 88 | } 89 | ], 90 | "incremental_find": 91 | { 92 | "height": 23.0 93 | }, 94 | "input": 95 | { 96 | "height": 0.0 97 | }, 98 | "layout": 99 | { 100 | "cells": 101 | [ 102 | [ 103 | 0, 104 | 0, 105 | 1, 106 | 1 107 | ] 108 | ], 109 | "cols": 110 | [ 111 | 0.0, 112 | 1.0 113 | ], 114 | "rows": 115 | [ 116 | 0.0, 117 | 1.0 118 | ] 119 | }, 120 | "menu_visible": true, 121 | "output.find_results": 122 | { 123 | "height": 0.0 124 | }, 125 | "pinned_build_system": "", 126 | "project": "empty.sublime-project", 127 | "replace": 128 | { 129 | "height": 42.0 130 | }, 131 | "save_all_on_build": true, 132 | "select_file": 133 | { 134 | "height": 0.0, 135 | "last_filter": "", 136 | "selected_items": 137 | [ 138 | ], 139 | "width": 0.0 140 | }, 141 | "select_project": 142 | { 143 | "height": 500.0, 144 | "last_filter": "", 145 | "selected_items": 146 | [ 147 | [ 148 | "", 149 | "~/Dropbox/github/SublimeProjects/GitHub.sublime-project" 150 | ] 151 | ], 152 | "width": 380.0 153 | }, 154 | "select_symbol": 155 | { 156 | "height": 0.0, 157 | "last_filter": "", 158 | "selected_items": 159 | [ 160 | ], 161 | "width": 0.0 162 | }, 163 | "selected_group": 0, 164 | "settings": 165 | { 166 | }, 167 | "show_minimap": true, 168 | "show_open_files": false, 169 | "show_tabs": true, 170 | "side_bar_visible": true, 171 | "side_bar_width": 120.0, 172 | "status_bar_visible": true, 173 | "template_settings": 174 | { 175 | } 176 | } 177 | -------------------------------------------------------------------------------- /my_solutions/empty.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CleverProgrammer/Python-programming-exercises/1d525b54cca34ee38247891817c34747c1fb7508/my_solutions/empty.txt -------------------------------------------------------------------------------- /my_solutions/ex3io.py: -------------------------------------------------------------------------------- 1 | ex3io.py 2 | 3 | Problem Statement 4 | 5 | You learnt about STDIN and STDOUT in Solve me first. 6 | 7 | This is the second challenge in the introduction series. The purpose of this challenge is to give you a working I/O template in your preferred language. It includes scanning two space-separated integers from STDIN in a loop over T lines, calling a function, returning a value, and printing it to STDOUT. 8 | 9 | A pseudo code looks like the following: 10 | 11 | read T 12 | loop from 1 to T 13 | read A and B 14 | compute the sum 15 | print value in a newline 16 | end loop 17 | The task is to scan two numbers from STDIN, and print the sum A+B on STDOUT. The code has already been provided for most of the popular languages. This is primarily for you to read and inspect how the IO is handled. 18 | 19 | Note: The code has been saved in a template, which you can submit if you want. Or, you may try rewriting it and building it up from scratch. 20 | 21 | Input Format 22 | (This section specifies the Input Format.) 23 | The first line contains T (number of test cases) followed by T lines 24 | Each line contains A and B, separated by a space. 25 | 26 | As you can see that we have provided in advance the number of lines, we discourage the use of scanning till EOF as not every language has an easy way to handle that. In fact, every HackerRank challenge is designed in such a way that multitests begin with a T line to indicate the number of lines. 27 | 28 | Output Format 29 | (This section specifies the Output Format.) 30 | An integer that denotes Sum (A+B) printed on new line for every testcase. 31 | 32 | Constraints 33 | (This section tells what input you can expect. You can freely assume that the input will remain within the boundaries specified.) 34 | 1≤T,A,B≤1000 35 | 36 | Sample Input 37 | 38 | 2 39 | 2 3 40 | 3 7 41 | Sample Output 42 | 43 | 5 44 | 10 45 | The above sample should be taken seriously. 2 in the first line describes how many lines will follow, and your test cases are 2, 3 and 3, 7 in two separate lines. Your output should be 5 and 10 printed on two separate lines. If you print extra lines or "The answer is: 5", any such extra characters in output will result in a Wrong Answer, as the judging is done using diff checker. 46 | 47 | -------------------------------------------------------------------------------- /my_solutions/ex4arraymaps.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 3 | ex4arraymapping.py 4 | 5 | Turn single-spaced numbers from strings to arrays of integers and then compute the sum. 6 | 7 | ''' 8 | 9 | # [in] 6 10 | # [in] 1 2 3 4 5 6 11 | # [out] 21 12 | 13 | n = input() 14 | arr = map(int,raw_input().split()) #map integers to the strings. 15 | print arr 16 | print sum(arr) 17 | -------------------------------------------------------------------------------- /my_solutions/exercise1; List Comprehensions.ipynb.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | 4 | ''' 5 | 1st attempt at solution 6 | for i in range(2000,3200): 7 | if i % 7 == 0: 8 | if i % 5 != 0: 9 | print(i) 10 | ''' 11 | 12 | print ([i for i in range(2000,3200) if i % 7 == 0 and i % 5 != 0]) 13 | 14 | -------------------------------------------------------------------------------- /python contents.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CleverProgrammer/Python-programming-exercises/1d525b54cca34ee38247891817c34747c1fb7508/python contents.docx -------------------------------------------------------------------------------- /python contents.txt: -------------------------------------------------------------------------------- 1 | Python 2 | The below table largely covers the TOC for 5 popular books. Learning Python (Fourth Edition) has a more in-depth look at concepts than any of the other books. However this book also does not essentially cover some aspects that are covered in other books. 3 | No. Diving into Python The Python Standard Library by Example Python Essential Reference (4th edition) The Quick Python Book Learning Python 4 | Introductory Concepts covering installation on different OS, version history, interpreter. This section also covers questions like Why, Who, What and Where on Python. 5 | 1 1. Installing Python 6 | 2. Which Python is right for you ? 7 | 3. Python & your OS 8 | 4. Interactive Shell 9 | 5. Summary 1. Introduction (Text) 1. Tutorial Introduction 10 | 2. Lexical Conventions and Syntax 1. About Python 11 | 2. Getting Started 1. Python Q & A Session 12 | 1. Why do people use Python ? 13 | 2. Downside of using it 14 | 3. Who uses Python Today ? 15 | 4. What Can I do with Python ? 16 | 5. Python vs Language X 17 | 6. Test your Knowledge 18 | 2. How Python runs programs 19 | 1. Python Interpreter 20 | 2. Program Execution 21 | 1. Programmer View 22 | 2. Python View 23 | 3. Execution Model Variations 24 | 1. Implementation Alternatives 25 | 2. Execution Optimization Tools 26 | 3. Frozen Binaries 27 | 3. How you run programs 28 | 1. Interactive prompt 29 | 2. Your first script 30 | 31 | Python Object Types, Numeric Types, Data Structures, Control Structures, Scopes and Arguments 32 | 2 1. Your first program 33 | 2. Declaring Functions 34 | 3. Python Data types vs Other Languages 35 | 4. Documenting Functions 36 | 5. Everything is an Object 37 | 6. The Import Search Path 38 | 7. What is an Object ? 39 | 8. Indenting Code 40 | 9. Testing Modules 41 | 10. Native Datatypes 42 | 1. Dictionaries 43 | 2. List 44 | 3. Tuples 45 | 11. Variables & referencing 1. Data Structures 1. Types and Objects 46 | 2. Operators and Expressions 47 | 3. Program Structure and Control Flow 48 | 4. Functions and Functional Programming 49 | 5. Classes and Object Oriented Programming 50 | 6. Modules, Packages and Distribution 51 | 7. Input and Output 52 | 8. Execution Environment 53 | 9. Testing, Debugging, Profiling and Tuning 54 | 55 | Data Structures, Algorithms & Code simplification 56 | String & Text Handling 1. Python Overview 57 | 1. Built-in Data types 58 | 2. Control Structures 59 | 3. Module 60 | 4. OOPs 61 | 2. Basics 62 | 1. Lists 63 | 2. Dictionaries 64 | 3. Tuple 65 | 4. Sets 66 | 5. Strings 67 | 6. Control Flow 68 | 3. Functions 69 | 4. Modules and Scoping Rules 70 | 5. Python Programs 1. Introducing Python Object Types 71 | 1. Why use built-in Types ? 72 | 2. Core data types 73 | 3. Numbers, Lists, Dictionaries, Tuples, Files, Other Core Types 74 | 4. User Defined Classes 75 | 2. Numeric Types 76 | 1. Literals, Built-in tools, expression operators 77 | 2. Formats, Comparisons, Division, Precision 78 | 3. Complex Numbers 79 | 4. Hexadecimal, Octal & Binary 80 | 5. Bitwise Operations 81 | 6. Decimal, Fraction, Sets, Booleans 82 | 83 | 1. Statements & Syntax 84 | 2. Assignments, Expressions & Syntax 85 | 3. If Tests & Syntax Rules 86 | 4. Scopes 87 | 5. Arguments 88 | Built-in functions, Function Design, Recursive Functions, Introspection, Annotations, Lambda, Filter and Reduce 89 | 3 1. Power of Introspection 90 | 1. Optional and Named Arguments 91 | 2. type, str, dir and other built-in functions 92 | 3. Object References with getattr 93 | 4. Filtering Lists 94 | 5. Lambda Functions 95 | 6. Real world Lambda functions 96 | None 1. Built-in functions 97 | 2. Python run-time services None Built-in functions are covered as part of the topic above but from a numeric perspective 98 | 1. Advanced Function Topics 99 | 1. Function Design 100 | 2. Recursive Functions 101 | 3. Attributes and Annotation 102 | 4. Lambda 103 | 5. Mapping Functions over sequences 104 | 6. Filter and Reduce 105 | 106 | Special Class Attributes 107 | Display Tool 108 | OOPS, Modules 109 | 4 1. Objects and Object Orientation 110 | 1. Importing Modules 111 | 2. Defining Classes 112 | 3. Initializing and Coding Classes 113 | 4. Self & __init__ 114 | 5. Instantiating Classes 115 | 6. Garbage Collection 116 | 7. Wrapper Classes 117 | 8. Special Class Methods 118 | 9. Advanced Class Methods 119 | 10. Class Attributes 120 | 11. Private Functions None Covered partially section 2 1. Packages 121 | 2. Data Types and Objects 122 | 3. Advanced Object Oriented Features 1. Modules 123 | 1. Why use Modules ? 124 | 2. Program Architecture 125 | 3. Module Search Path 126 | 4. Module Creation & Usage 127 | 5. Namespaces 128 | 6. Reloading Modules 129 | 7. Packages 130 | 2. Advanced Module Topics 131 | 1. Data Hiding in Modules 132 | 2. as Extension for import and from 133 | 3. Modules are Objects: Metaprograms 134 | 4. Transitive Module Reloads 135 | 5. Module Design Concepts 136 | 6. Module Gotchas 137 | 3. OOP 138 | 1. Why use classes ? 139 | 2. Classes & Instances 140 | 3. Attribute Inheritance Search 141 | 4. Class Method Calls 142 | 5. Class Trees 143 | 6. Class Objects & Default Behavior 144 | 7. Instance Objects are Concrete Items 145 | 8. Intercepting Python Operators 146 | 9. Classes Vs. Dictionaries 147 | 10. Class customization by Inheritance 148 | 11. Operator Overloading 149 | 12. Subclasses 150 | 13. Polymorphism in Action 151 | 14. Designing with Classes 152 | 15. Mix-in Classes 153 | Advanced Class Topics 154 | 5 None None None None 1. Advanced Class Topics 155 | 1. Extending Types by Embedding 156 | 2. Extending Types by Subclassing 157 | 3. Static and Class Methods 158 | 4. Decorators and Metaclasses 159 | 5. Class Gotchas 160 | Exceptions 161 | 6 1. Exceptions and File Handling 162 | 1. Handling Exceptions 163 | 2. Using exceptions for other purposes 1. Exceptions 1. Exceptions Basics 164 | 1. Why use Exceptions ? 165 | 2. Default Exception Handler 166 | 3. User-Defined Exceptions 167 | 4. Class Based Exceptions 168 | 5. Designing with Exceptions 169 | XML, HTTP, SOAP, Network Programming, I18N, Unicode 170 | 7 1. Regular Expressions 171 | 2. Parsing / Processing Mark-up languages (HTML, XML) 172 | 1. Unicode 173 | 3. HTTP Web Services 174 | 1. Headers 175 | 2. Debugging 176 | 4. SOAP Web Services 1. Networking 177 | 2. Internet 178 | 3. Email 179 | 4. Internationalization and Localization 1. Network Programming and Sockets 180 | 2. Internet Application Programming 181 | 3. Web Programming 182 | 4. Internet Data Handling & Encoding 1. Network, web programming 1. Unicode and Bytes Strings 183 | Miscellaneous 184 | 8 None 1. Algorithms 185 | 2. Cryptography 186 | 3. Data compression and archiving 187 | 4. Processes and Threads 188 | 5. Data persistence & exchange 1. Extending & Embedding Python 1. GUI None 189 | --------------------------------------------------------------------------------