Welcome to Python 101! — Lets get started with the basics
Tags: beginners, python, programming
Published: 2022-04-16 07:59:13

Python is a high-level programming language, in layman's language, it is closer to human understanding(English like) than it is to machines. Python is an interpreted language and a general purpose programming language.

**A brief history of python**

Python  is programming language that came into life in the 1980s and was developed by Guido van Rossum at Centrum Wiskunde & Informatica (CWI) in the Netherlands, with the ideology of it being a successor to the ABC programming language.

Since then python has evolved through several versions to the latest version python 3.10 (as of the time of writing this article) with a first release date of 4 October, 2021

Python 2.0, released 16 October 2000, with new features including a cycle-detecting garbage collector for memory management and support for Unicode.

Python 3.0, released on 3 December 2008.With this version there was massive revision that it was not backward compatible with previous python versions.

Before we get our hands dirty, let's set some rules of engagement, shall we!

**Syntax in Python**

Python has a very simple and user friendly syntax, that you'll find simple and easy to grasp.
Some include:

- Indentation in python is crucial, it can break your code!

- Python is case sensitive, State and state are different

- All variables should start with a lowercase letter

- classes begin with capital letters

- The standard is to actually use English names in programming

Identifiers (names you define for variables, types, functions, and labels) should not be keywords in python and start with a symbol or number.
 
For more on style and best practices in python check out on [PEP-8](https://www.python.org/dev/peps/pep-0008/)

**Installing python**
- [On windows machine](https://medium.com/co-learning-lounge/how-to-download-install-python-on-windows-2021-44a707994013)
- [On linux machine](https://opensource.com/article/20/4/install-python-linux)

- [On MacOS](https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-local-programming-environment-on-macos) 

### **Python Basics**
 **Base types**
 
1. int (integer)
```
value = 76
```
2. float 
```
value = 56.21
```
3. bool (boolean)
```
is_blue = True
```
4. str (string)
 ```
message = "Hello world!"
```
Backslash is used for escaping characters.
e.g
  - \' - Single quote
  - \b - backspace
  - \n - new line
  - \r - carriage return
  -  \t - tab

```
message = " \t Sammy\'s cat ran away\nand into the bush it went.\n"
# print - an inbuilt function to print an output
print(message)
```
```
# output
#     Sammy's cat ran away
# and into the bush it went.
```
 Multiline strings

  ```
   message = """ Lorem ipsum dolor sit amet, consectetur adipiscing elit, 
   sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
   Ut enim ad minim veniam, 
   quis nostrud exercitation ullamco laboris nisi ut 
   aliquip ex ea commodo consequat."""
   ``` 

**Sequence types**

1. list

 Lists are modifiable and can hold values of different types.
```
list_country = ["Russia",  "South Africa", "Japan", "Peru"]
random_list  = ["x", 3.14, 4, False, "No way"]
```

2. tuple

Tuples cannot be modified once created. They are immutable.
```
coordinates = (33.56, 4.56, 21.89)
```

3. range

Is a function returning a sequence of numbers, starts from 0 and increments by 1 by default.
Format: range(start, stop, step)
```
for x in range(0,10,2):
    print(x)
```

**Mapping types**

Dictionary

Is a collection of data that is stored in key-value pair, key is unique
e.g "Laptop" is the key and "Mac book" the value.
```
backpack = {"Laptop":"Mac book", "Headphones": "Sony",  "Hard drive": "SSD"}
```

**Set types**
1. set

A set is an unordered collection that is mutable, iterable and has unique elements.
```
fruits = {"apple", "mango", "orange"}
```
2.frozen-set

Freezes the elements, making them unchangeable.
```
fruits = ({"apple, "mango", "orange"})
```

#### Conversions

Change a value of one data type to another.
``` 
""" 1.str to int"""
int("10") #output: 10

""" 2. float to int"""
int(10.34) #output: 10

""" 3. any data type to str"""
str(10.10) #output: "10.1"
str(3==3) #output:  "True"

""" 4. character to ASCII code """
ord('*') #output: 42

""" 5. string to list"""
message = "Hello world!"
message_list = list(message)
# print- print output
print(message_list)
# output
# ['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!']

""" 6. dictionary to list """
day = {"day":14, "month": "Feb", "year": 2022}
# create a list with list compression
generated_list = [(x, y) for x, y  in day.items()]
# print - print output
print(generated_list)
# output
# [('day', 14), ('month', 'Feb'), ('year', 2022)]

""" 7. list to string """
word_list = ["The", "new", "version", "of", "slack", "is", "amazing"]
word_str = " ".join(word_list)
print(word_str)
# output
# The new version of slack is amazing

""" 8. list to set """
number_list = [34, 45, 67 ,87]
number_set = set(number_list)
print(number_set)
# output
# {34, 67, 45, 87}

""" 9. list to dictionary """
day_list = [('day', 14), ('month', 'Feb'), ('year', 2022)]
day_dict = dict(day_list)
print(day_dict)
# output
# {"day":14, "month": "Feb", "year": 2022}
```

#### Working with Strings
There are several ways in which strings can be manipulated.
```
print("Hello")

# output
# Hello

print("Hello", "world", "!")

# output
# Hello world !

print("Hello", "world", sep="-")

# output
# Hello-world

print("Hello") # for every print, output is set to a new line
print("world")

# output
# Hello
# World

print("Hello", "world", sep="-", end="!") 

# output
# Hello-world!

print("Hello", end=" ") # without new line
print("World")

# output
# Hello world
```

#### String Concatenation
String concatenation is the operation of joining character strings end-to-end.(wikipedia)

```
first_name = "John"
middle_name = "Magarita"
last_name = "Omondi"

print(first_name + " " + middle_name + " " + last_name)
 
# output
# John Magarita Omondi
```
#### String formatting

```
first_name = "John"
middle_name = "Magarita"
last_name = "Omondi"
salary = 50000
print("{0} {1} earns a salary of ${2}".format(first_name, middle_name, salary))

# output
# John Magarita earns a salary of $50000
```

With knowing the basics of python, you can write simple command line programs
for example:

#### Simple mad-libs generator program
```
""" A simple word game that takes user input based on the word type and 
inserting in to a paragraph """

noun1 = input("Enter a noun(Plural): ")
place = input("Enter a place: ")
noun2 = input("Enter a noun: ")
noun3 = input("Enter a noun(Plural): ")
adjective1 = input("Enter an Adjective: ")
verb1 = input("Enter a verb: ")
verb2 = input("Enter a verb: ")
number = input("Enter a number: ")
adjective2 = input("Enter an Adjective: ")
body_part = input("Enter a body part: ")
verb3 = input("Enter a verb: ")

mad_lib = """Two {0}, both alike in dignity,
In fair {1} where we lay our scene,
From ancient {2} break to new mutiny,
Where civil blood makes civil hands unclean.
From forth the fatal loins of these two foes
A pair of star-cross`d {3} take their life;
Whole misadventured piteous overthrows
Do with their {4} bury their parents` strife.
The fearful passage of their {5} love,
And the continuance of their parents` rage,
Which, but their children`s end, nought could {6},
Is now the {7} hours` traffic of our stage;
The which if you with {8} {9} attend,
What here shall {10}, our toil shall strive to mend. """.format(noun1, place, noun2, noun3, adjective1, verb1, verb2,number, adjective2,body_part, verb3)

print("\n====Mad Lib (Romeo and Juliet: Prologue Ad-lib) ====\n")
print(mad_lib)
```

**Conclusion**

Python is an amazing multi-purpose programming language that can be used in almost all fields in technology, from AI to scripting and data science. The best part is, it is fun to learn and user-friendly. 
Happy coding!