Python Programming Using Problem Solving

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Python is a robust, procedural, object-oriented, and functional language. The features of the language make it valuable for web development, game development, business, and scientific programming. This book deals with problem-solving and programming in Python. It concentrates on the development of efficient algorithms, the syntax of the language, and the ability to design programs in order to solve problems. In addition to standard Python topics, the book has extensive coverage of NumPy, data visualization, and Matplotlib. Numerous types of exercises, including theoretical, programming, and multiple-choice, reinforce the concepts covered in each chapter. FEATURES Concentrates on the development of efficient algorithms, the syntax of the language, and the ability to design programs in order to solve problems Features both standard Python topics and also extensive coverage of NumPy, data visualization, and Matplotlib problem-solving techniques

Author(s): H. Bhasin
Publisher: David Pallai
Year: 2023

Language: English
Pages: 799

Cover
Halftitle
Title
Copyright
Dedication
Contents
Preface
Section I: Algorithmic Problem-Solving and Python Fundamentals
Chapter 1: Algorithmic Problem-Solving
1.1 Introduction
1.2 Definition and Characteristics
1.3 Notations: Pseudocode and Flow Chart
1.4 Strategies for Problem-Solving: Recursion Versus Iteration
1.5 Asymptotic Notation
1.6 Complexity
1.7 Illustrations
1.7.1 Minimum in a List
1.7.2 Insert a Card in a Pack of Cards (Or Insert an element in a sorted list). There are ten cards in the pack, numbered from 1 to 10.
1.7.3 Guess a Number in a Given Range
1.7.4 Tower of Hanoi
1.8 Conclusion
Glossary
Points to Remember
Exercises
Multiple Choice Questions
Theory
Application
Chapter 2: Introduction to Python
2.1 Introduction
2.2 Features of Python
2.2.1 Easy
2.2.2 Type and Run
2.2.3 Syntax
2.2.4 Mixing
2.2.5 Dynamic Typing
2.2.6 Built-in Object Types
2.2.7 Numerous Libraries and Tools
2.2.8 Portable
2.2.9 Free
2.3 The paradigms
2.3.1 Procedural
2.3.2 Object-Oriented
2.3.3 Functional
2.4 Chronology and Uses
2.4.1 Chronology
2.4.2 Uses
2.5 Installation of Anaconda
2.6 Implementation of an Algorithm: Statement, state, Control Blocks, and Functions
2.6.1 Statement
2.6.2 State
2.6.3 Control Flow
2.7 Conclusion
Glossary
Points to Remember
Resources
Exercises
Multiple Choice Questions
Theory
Chapter 3: Fundamentals
3.1 Introduction
3.2 Basic Input Output
3.2.1 Print Function
3.2.2 Input
3.3 Running a Program
3.3.1 Using the Command Prompt
3.3.2 Executing Programs Written in .py Files
3.3.3 Using Anaconda Navigator
3.4 The Jupyter Notebook
3.5 Value Type and Reference Type
3.6 Tokens, Keywords, and Identifiers
3.6.1 Python Keywords
3.6.2 Python Identifiers
3.6.3 Python Escape Sequence
3.7 Statements
3.7.1 Expression Statement
3.7.2 Assignment Statements
3.7.3 The Assert Statements
3.7.4 The Pass Statements
3.7.5 The Control Statements
3.8 Comments
3.9 Operators
3.10 Types and Examples of Operators
3.10.1 Arithmetic Operators
3.10.2 String Operators
3.10.3 Comparison Operators
3.10.4 Assignment Operators
3.10.5 Logical Operators
3.10.6 Priority of Operators
3.11 Basic Data Types
3.11.1 Integer
3.11.2 Float
3.11.3 String
3.12 Conclusion
Exercises
Multiple Choice Questions
Theory
Explore
Section II: Procedural Programming
Chapter 4: Conditional Statements
4.1 Introduction
4.2 “If,” If-Else, and If-Elif-Else Constructs
4.3 The If-Elif-Else Ladder
4.4 Logical Operators
4.5 The Ternary Operator
4.6 The Get Construct
4.7 Examples
4.8 Summary
Glossary
Points to Remember
Exercises
Multiple Choice Questions
Programming Exercise
Chapter 5: Looping
5.1 Introduction
5.2 While
5.3 Patterns
5.4 Nesting and Applications of Loops in Lists
5.5 Conclusion
Glossary
Points to Remember
Exercises
Multiple Choice Questions
Programming
Chapter 6: Functions
6.1 Introduction
6.2 Features of a Function
6.2.1 Modular Programming
6.2.2 Reusability of Code
6.2.3 Manageability
6.2.3.1 Easy debugging
6.2.3.2 Efficient
6.3 Basic Terminology
6.3.1 Name of a Function
6.3.2 Arguments
6.3.3 Return Value
6.4 Definition and Invocation
6.4.1 Working
6.5 Types of Function
6.5.1 Arguments: Types of Arguments
6.6 Implementing Search
6.7 Scope
6.8 Recursion
6.8.1 Rabbit Problem
6.8.2 Disadvantages of Using Recursion
6.9 Conclusion
Glossary
Points to Remember
Exercises
Multiple Choice Questions
Programming Exercise
Questions Based on Recursion
Theory
Extra Questions
Chapter 7: File Handling
7.1 Introduction
7.2 The File handling mechanism
7.3 The open function and file access modes
7.4 Python Functions for File Handling
7.4.1 The Essential Ones
7.4.2 The OS Methods
7.4.3 Miscellaneous Functions and File Attributes
7.5 Command Line Arguments
7.6 Implementation and illustrations
7.7 Conclusion
Points to Remember
Exercises
Multiple Choice Questions
Theory
Programming
Chapter 8: Lists, Tuple, and Dictionary
8.1 Introduction
8.2 Lists
8.2.1 Accessing Elements: Indexing and Slicing
8.2.2 Mutability
8.2.3 Operators
8.2.4 Traversal
8.2.5 Functions
8.3 Tuple
8.3.1 Accessing Elements of a Tuple
8.3.2 Nonmutability
8.3.3 Operators
8.3.4 Traversal
8.3.5 Functions
8.4 Associate Arrays and Dictionaries
8.4.1 Displaying Elements of a Dictionary
8.4.2 Some Important Functions of Dictionaries
8.4.2.1 The len function returns the number of elements in a given dictionary.
8.4.2.2 The max function returns the key with maximum value. If the key is a string, then the value in the lexicographic ordering would be returned.
8.4.2.3 The min function returns the key with minimum value. If the key is a string, then the value in the lexicographic ordering would be returned.
8.4.2.4 The sorted function would sort the elements of a given dictionary by their keys. If the keys are strings then lexicographic ordering would be followed.
8.4.2.5 The pop function takes out the element with the given key from the dictionary.
8.4.3 Input from the User
8.5 Conclusion
Glossary
Points to Remember
Exercises
Multiple Choice Questions
Theory
Programming exercise
Chapter 9: Iterations, Generators, and Comprehensions
9.1 Introduction
9.2 The Power of “For”
9.3 Iterator
9.4 Defining an Iterable Object
9.5 Generators
9.6 Comprehensions
9.7 Conclusion
Glossary
Points to Remember
Exercises
Multiple Choice Questions
Theory
Programming Exercise
Chapter 10: Strings
10.1 Introduction
10.2 Loops Revised
10.3 String Operators
10.3.1 The Concatenation Operator (+)
10.3.2 The Replication Operator (*)
10.3.3 The Membership Operator
10.4 In-Built Functions
10.4.1 len()
10.4.2 Capitalize()
10.4.3 Find()
10.4.4 Count
10.4.5 endswith()
10.4.6 encode
10.4.7 decode
10.4.8 Miscellaneous Functions
10.5 Conclusion
Glossary
Points to Remember
Exercises
Multiple Choice Questions
Theory
Section III: Object-Oriented Programming
Chapter 11: Introduction to Object-Oriented Paradigm
11.1 Introduction
11.2 Creating New Types
11.3 Attributes and Functions
11.3.1 Attributes
11.4 Elements of Object-Oriented Programming
11.4.1 Class
11.4.2 Object
11.4.3 Encapsulation
11.4.4 Data Hiding
11.4.5 Inheritance
11.4.6 Polymorphism
11.4.7 Reusability
11.5 Conclusion
Glossary
Points to Remember
Exercises
Multiple Choice Questions
Theory
Explore and Design
Chapter 12: Classes and Objects
12.1 Introduction to Classes
12.2 Defining a Class
12.3 Creating an Object
12.4 Scope of Data Members
12.5 Nesting
12.6 Constructor
12.7 Multiple __Init__(s)
12.8 Destructors
12.9 Conclusion
Glossary
Points to Remember
Exercises
Multiple Choice Questions
Theory
Programming Exercise
Chapter 13: Inheritance
13.1 Introduction to Inheritance and Composition
13.1.1 Inheritance and Methods
13.1.2 Composition
13.2 Inheritance: Importance and Types
13.2.1 Need for Inheritance
13.2.2 Types of Inheritance
13.2.2.1 Simple inheritance
13.2.2.2 Hierarchical inheritance
13.2.2.3 Multilevel inheritance
13.2.2.4 Multiple inheritance and hybrid inheritance
13.3 Methods
13.3.1 Bound Methods
13.3.2 Unbound Method
13.3.3 Methods are Callable Objects
13.3.4 The Importance and Usage of Super
13.3.5 Calling the Base Class Function Using Super
13.4 Search in Inheritance Tree
13.5 Class Interface and Abstract Classes
13.6 Conclusion
Glossary
Points to Remember
Exercises
Multiple Choice Questions
Theory
Programming Exercise
Chapter 14: Operator Overloading
14.1 Introduction
14.2 __Init__ Revisited
14.2.1 Overloading __init__(Sort of)
14.3 Methods for Overloading Binary Operators
14.4 Overloading Binary Operators: The Fraction Example
14.5 Overloading the += Operator
14.6 Overloading the > and < Operators
14.7 Overloading the __Bool__ Operator: Precedence of __Bool__ Over __Len__
14.8 Conclusion
Glossary
Points to Remember
Exercises
Multiple Choice Questions
Theory
Programming
Chapter 15: Exception Handling
15.1 Introduction
15.2 Importance and Mechanism
15.2.1 An Example of Try/Except
15.2.2 Manually Raising Exceptions
15.3 Build-in Exceptions in Python
15.4 The Process
15.4.1 Example
15.4.2 Exception Handling: Try/Except
15.4.3 Raising Exceptions
15.5 Crafting User Defined Exceptions
15.6 An Example of Exception Handling
15.7 Conclusion
Glossary
Points to Remember
Exercises
Multiple Choice Questions
Theory
Programming
Section IV: Numpy, Pandas, and Matplotlib
Chapter 16: Numpy–I
16.1 Introduction
16.2 Fundamentals
16.2.1 Similarity and Differences Between a List and a NumPy Array
16.3 Functions for Generating Sequences
16.3.1 arange()
16.3.2 linspace()
16.4 Aggregate Functions
16.5 Generating Random Numbers Using Numpy
16.6 Zeros, Ones, Eyes, and Full
16.7 Indexing
16.8 Slicing
16.9 Operations: Scalar with an Array
16.9.1 Addition
16.9.1.1 Using the + operator
16.9.1.2 Using the numpy. add function
16.9.2 Subtraction
16.9.2.1 Using the – operator
16.9.2.2 Using the numpy.subtract function
16.9.3 Multiplication
16.9.3.1 Using the * operator
16.9.3.2 Using the numpy.multiply function
16.9.4 Division
16.9.4.1 Using the / operator
16.9.4.2 Using the numpy.divide function
16.9.5 Remainder
16.9.5.1 Using the % operator
16.9.5.2 Using the numpy.remainder function
16.9.6 Power
16.9.6.1 Using the ** operator
16.9.6.2 Using the numpy.power function
16.10 Operations: Array with an Array
16.10.1 Addition
16.10.1.1 Using the + operator
16.10.1.2 Using the numpy.add function
16.10.2 Subtraction
16.10.2.1 Using the — operator
16.10.2.2 Using the numpy.subtract function
16.10.3 Multiplication
16.10.3.1 Using the * operator
16.10.3.2 Using the numpy.multiply function
16.10.4 Division
16.10.4.1 Using the / operator
16.10.4.2 Using the numpy.divide function
16.10.5 Remainder
16.10.5.1 Using the % operator
16.10.5.2 Using the numpy.mod function
16.10.6 Power
16.10.6.1 Using the ** operator
16.10.6.2 Using the numpy.power function
16.11 Conclusion
Exercises
Multiple Choice Questions
Theory
Chapter 17: Numpy–II
17.1 Introduction
17.2 Joining Arrays
17.2.1 hstack
17.2.2 vstack
17.2.3 Concatenate
17.3 Splitting Arrays
17.3.1 hsplit
17.3.2 vsplit
17.3.3 Split
17.3.4 Extract
17.4 Variance
17.5 Covariance
17.6 Correlation
17.7 Conclusion
Exercises
Multiple Choice Questions
Theory
Chapter 18: Data Visualization-I
18.1 Introduction
18.2 The Plot Function
18.2.1 xlabel
18.2.2 ylabel
18.2.3 axis
18.2.4 xlim, ylim
18.2.5 xticks, yticks
18.2.6 show
18.2.7 savefig
18.3 Plotting Lines and Curves
18.3.1 Plot(X)
18.3.2 Plot(X, Y)
18.3.3 Plot(<2D Array>)
18.3.4 Axis Function
18.3.5 Plotting Points: Scatter Diagram
18.3.6 Sine and Cosine Curves
18.3.7 Comparing Functions
18.3.8 Plotting Multiple Lines
18.4 Additional Arguments
18.4.1 Markers
18.4.2 Color
18.4.3 Linestyle
18.4.4 Linewidth
18.5 The Bar Chart
18.6 Conclusion
Exercises
Multiple Choice Questions
Theory
Chapter 19: Data Visualization–II
19.1 Introduction
19.2 Box Plot
19.3 Frequency Plots and Histogram
19.4 The Pie Chart
19.5 Conclusion
Exercises
Multiple Choice Questions
Theory
Chapter 20: Pandas–I
20.1 Introduction
20.2 Creating Pandas Series
20.2.1 Using List
20.2.2 Using NumPy Arrays
20.2.3 Using Dictionary
20.3 Indexing, Iloc, Slicing, and Boolean Index
20.3.1 Indexing: loc
20.3.2 Indexing Continued: iloc
20.3.3 Slicing
20.3.4 Functions: Head, Tail, Describe, and index
20.3.4.1 head()
20.3.4.2 tail()
20.3.4.3 index
20.3.4.4 describe()
20.3.5 Boolean Index
20.4 Sorting, Statistical Analysis, and String Functions
20.4.1 sort_values()
20.4.2 Statistical Functions
20.4.3 String Functions
20.5 Creating a Data Frame
20.5.1 Creating a Data Frame Using a Dictionary
20.5.2 Creating a Data Frame Using a Two-Dimensional Array
20.5.3 Creating the Data Frame Using a Series
20.6 Operations on Rows and Columns of a Data Frame
20.6.1 Adding a Column in a Data Frame
20.6.2 Deleting Column from the Data Frame
20.6.3 Adding a Row in a Data Frame
20.6.4 Deleting Row from the Data Frame
20.7 Dealing with Rows
20.7.1 loc[] and iloc[]
20.7.2 rename
20.8 Iterating a Pandas Data Frame
20.8.1 Iterating Pandas Data Frame Rows
20.8.1.1 iterrows()
20.8.1.2 index
20.8.1.3 itertuples()
20.8.2 Iterating Over Columns
20.8.2.1 iteritems()
20.8.2.2 list
20.9 Conclusion
Exercises
Multiple Choice Questions
Theory
Chapter 21: Pandas–II
21.1 Introduction
21.2 Data Frame Methods: Head, Tail, and Describe
21.2.1 Functions: Head, Tail, and Describe
21.2.1.1 head()
21.2.2 tail()
21.2.3 columns
21.2.4 describe()
21.3 Boolean Index
21.4 Sorting, Descriptive Statistics, and Applying String Functions
21.4.1 sort_values()
21.4.2 Finding Maximum, Minimum, Median, Standard Deviation, Mean, and Count of Values
21.4.3 String Functions
21.5 Reading from a CSV File: Pandas.read_csv
21.6 Missing Values
21.6.1 To Check Null Values
21.6.2 dropna()
21.6.3 fillna()
21.7 Conclusion
Exercises
Multiple Choice Questions
Theory
Appendix A: Problems for Practice: Programming Questions
Appendix B: Answers to MCQs
References
Web Resources
Index