Getting Started with Python

Variables and Simple Data Types

Hello World

What really happens when you run hello_world. py?

print("Hello Python World!")

Output:

Hello Python World!

When you run the file hello_world. py, the ending . py indicates that the file is a Python program. Your editor then runs the file through the Python interpreter, which reads through the program and determines what each word in the program means. For example, when the interpreter sees the word print followed by parentheses, it prints to the screen whatever is inside the parentheses.

Variables

Let’s try using a variable in hello_world. py.

message = "Hello Python World!"
print(message)

Output:

Hello Python World!

We’ve added a variable named message. Every variable is connected to a value, which is the information associated with that variable. In this case the value is the "Hello Python world!" text.

Adding a variable makes a little more work for the Python interpreter. When it processes the first line, it associates the variable message with the "Hello Python world!" text. When it reaches the second line, it prints the value associated with message to the screen.

You can change the value of a variable in your program at any time, and Python will always keep track of its current value.

message = "Hello Python World!"
print(message)

message = "Hello Python!"
print(message)

Output:

Hello Python World!
Hello Python!

Variables Are Labels

Variables are often described as boxes you can store values in. This idea can be helpful the first few times you use a variable, but it isn’t an accurate way to describe how variables are represented internally in Python. It’s much better to think of variables as labels that you can assign to values. You can also say that a variable references a certain value.

This distinction probably won’t matter much in your initial programs, but it’s worth learning earlier rather than later. At some point, you’ll see unexpected behavior from a variable, and an accurate understanding of how variables work will help you identify what’s happening in your code.

Strings

Because most programs define and gather some sort of data, and then do something useful with it, it helps to classify different types of data. The first data type we’ll look at is the string. Strings are quite simple at first glance, but you can use them in many different ways.

A string is a series of characters.

Anything inside quotes is considered a string in Python, and you can use single '' or double quotes "" around your strings like this:

"This is a string."
'This is also a string.'

This flexibility allows you to use quotes and apostrophes within your strings:

'I told my friend, "Python is my favorite language!"'
"The language 'Python' is named after Monty Python, not the snake."
"One of Python's strengths is its diverse and supportive community."

Changing Case in a String with Methods

One of the simplest tasks you can do with strings is change the case of the words in a string.

name = "ahmed gouda"
print(name.title())

Output:

Ahmed Gouda

In this example, the variable name refers to the lowercase string "ahmed gouda". The method title() appears after the variable in the print() call.

A method is an action that Python can perform on a piece of data.

The dot (.) after name in name.title() tells Python to make the title() method act on the variable name. Every method is followed by a set of parentheses, because methods often need additional information to do their work. That information is provided inside the parentheses. The title() function doesn’t need any additional information, so its parentheses are empty.

The title() method changes each word to title case, where each word begins with a capital letter. This is useful because you’ll often want to think of a name as a piece of information. For example, you might want your program to recognize the input values Ahmed, AHMED, and ahmed as the same name, and display all of them as Ahmed.

Several other useful methods are available for dealing with case as well. For example, you can change a string to all uppercase or all lowercase letters.

name = "Ahmed  Gouda"
print(name.upper())
print(name.lower())

Output:

AHMED GOUDA
ahmed gouda

The lower() method is particularly useful for storing data. Many times you won’t want to trust the capitalization that your users provide, so you’ll convert strings to lowercase before storing them. Then when you want to display the information, you’ll use the case that makes the most sense for each string.

Using Variables in Strings

In some situations, you’ll want to use a variable’s value inside a string. For example, you might want two variables to represent a first name and a last name respectively, and then want to combine those values to display someone’s full name.

first_name = "ahmed"
last_name = "gouda"
full_name = f"{first_name} {last_name}"
print(full_name)

Output:

ahmed gouda

To insert a variable’s value into a string, place the letter f immediately before the opening quotation mark. Put braces around the name or names of any variable you want to use inside the string. Python will replace each variable with its value when the string is displayed.

These strings are called f-strings. The f is for format, because Python formats the string by replacing the name of any variable in braces with its value.

You can do a lot with f-strings. For example, you can use f-strings to compose complete messages using the information associated with a variable.

first_name = "ahmed"
last_name = "gouda"
full_name = f"{first_name} {last_name}"
print(f"Hello, {full_name.title()}!")

Output:

Hello, Ahmed Gouda!

You can also use f-strings to compose a message, and then assign the entire message to a variable.

first_name = "ahmed"
last_name = "gouda"
full_name = f"{first_name} {last_name}"
message = f"Hello, {full_name.title()}!"
print(message)

This code displays the message Hello, Ahmed Gouda! as well, but by assigning the message to a variable we make the final print() call much simpler.

Adding Whitespace to Strings with Tabs or Newlines

In programming, whitespace refers to any nonprinting character, such as spaces, tabs, and end-of-line symbols. You can use whitespace to organize your output so it’s easier for users to read.

Character CombinationAction
\tAdd a tab to your text
\nAdd a new line in a string
print("\tPython")
    Python
print("Languages:\nPython\nC\nRust")
Languages:
Python
C
Rust
print("Languages:\n\tPython\n\tC\n\tRust")
Languages:
    Python
    C
    Rust

Stripping White Spaces

Extra whitespace can be confusing in your programs. To programmers 'python' and 'python ' look pretty much the same. But to a program, they are two different strings. Python detects the extra space in 'python ' and considers it significant unless you tell it otherwise.

It’s important to think about whitespace, because often you’ll want to compare two strings to determine whether they are the same. For example, one important instance might involve checking people’s usernames when they log in to a website. Extra whitespace can be confusing in much simpler situations as well. Fortunately, Python makes it easy to eliminate extraneous whitespace from data that people enter.

Python can look for extra whitespace on the right and left sides of a string.

MethodAction
rstrip()Remove the extra space from the right side
lstrip()Remove the extra space from the left side
strip()Remove the extra space from the both sides
>>> favorite_language = ' python '
>>> favorite_language
' python '
>>> favorite_language.rstrip()
' python'
>>> favorite_language.lstrip()
'python '
>>> favorite_language.strip()
'python'
>>> favorite_language
' python '

The value associated with favorite_language contains extra whitespace at the both sides of the string. When you ask Python for this value in a terminal session, you can see the space. When the strip() method acts on the variable favorite_language, this extra space is removed. However, it is only removed temporarily. If you ask for the value of favorite_language again, you can see that the string looks the same as when it was entered, including the extra whitespace. To remove the whitespace from the string permanently, you have to associate the stripped value with the variable name.

>>> favorite_language = ' python '
>>> favorite_language = favorite_language.strip()
>>> favorite_language
'python'

To remove the whitespace from the string, you strip the whitespace from the string and then associate this new value with the original variable. Changing a variable’s value is done often in programming. This is how a variable’s value can be updated as a program is executed or in response to user input.

Experimenting with these stripping functions can help you become familiar with manipulating strings. In the real world, these stripping functions are used most often to clean up user input before it’s stored in a program.

Avoiding Syntax Errors with Strings

One kind of error that you might see with some regularity is a syntax error.

A syntax error occurs when Python doesn’t recognize a section of your program as valid Python code.

For example, if you use an apostrophe within single quotes, you’ll produce an error. This happens because Python interprets everything between the first single quote and the apostrophe as a string. It then tries to interpret the rest of the text as Python code, which causes errors.

message = "One of Python's strengths is its diverse community."
print(message)

Output:

One of Python's strengths is its diverse community.
message = 'One of Python's strengths is its diverse community.'
print(message)

Output:

SyntaxError: invalid syntax

The error occurs right after the second single quote. This syntax error indicates that the interpreter doesn’t recognize something in the code as valid Python code. Errors can come from a variety of sources. You might see syntax errors often as you learn to write proper Python code. Syntax errors are also the least specific kind of error, so they can be difficult and frustrating to identify and correct. Your editor’s syntax highlighting feature should help you spot some syntax errors quickly as you write your programs.

Numbers

Numbers are used quite often in programming to keep score in games, represent data in visualizations, store information in web applications, and so on. Python treats numbers in several different ways, depending on how they’re being used. Let’s first look at how Python manages integers, because they’re the simplest to work with.

Integers

You can add (+), subtract (-), multiply (*), and divide (/) integers in Python.

>>> 2 + 3
5
>>> 3 - 2
1
>>> 2 * 3
6
>>> 3 / 2
1.5

In a terminal session, Python simply returns the result of the operation. Python uses two multiplication symbols to represent exponents.

>>> 3 ** 2
9
>>> 3 ** 3
27
>>> 10 ** 6
1000000

Python supports the order of operations too, so you can use multiple operations in one expression. You can also use parentheses to modify the order of operations so Python can evaluate your expression in the order you specify.

>>> 2 + 3*4
14
>>> (2 + 3) * 4
20

The spacing in these examples has no effect on how Python evaluates the expressions; it simply helps you more quickly spot the operations that have priority when you’re reading through the code.

Floats

Python calls any number with a decimal point a float. This term is used in most programming languages, and it refers to the fact that a decimal point can appear at any position in a number. Every programming language must be carefully designed to properly manage decimal numbers so numbers behave appropriately no matter where the decimal point appears.

For the most part, you can use decimals without worrying about how they behave. Simply enter the numbers you want to use, and Python will most likely do what you expect.

>>> 0.1 + 0.1
0.2
>>> 0.2 + 0.2
0.4
>>> 2 * 0.1
0.2
>>> 2 * 0.2
0.4

But be aware that you can sometimes get an arbitrary number of decimal places in your answer.

>>> 0.2 + 0.1
0.30000000000000004
>>> 3 * 0.1
0.30000000000000004

This happens in all languages and is of little concern. Python tries to find a way to represent the result as precisely as possible, which is sometimes difficult given how computers have to represent numbers internally.

Integers and Floats

When you divide any two numbers, even if they are integers that result in a whole number, you’ll always get a float.

>>> 4/2
2.0

If you mix an integer and a float in any other operation, you’ll get a float as well.

>>> 1 + 2.0
3.0
>>> 2 * 3.0
6.0
>>> 3.0 ** 2
9.0

Python defaults to a float in any operation that uses a float, even if the output is a whole number.

Underscores in Numbers

When you’re writing long numbers, you can group digits using underscores to make large numbers more readable.

>>> universe_age = 14_000_000_000

When you print a number that was defined using underscores, Python prints only the digits.

>>> print(universe_age)
14000000000

Python ignores the underscores when storing these kinds of values. Even if you don’t group the digits in threes, the value will still be unaffected. To Python, 1000 is the same as 1_000, which is the same as 10_00. This feature works for integers and floats.

Multiple Assignment

You can assign values to more than one variable using just a single line. This can help shorten your programs and make them easier to read; you’ll use this technique most often when initializing a set of numbers.

For example, here’s how you can initialize the variables x, y, and z to zero:

>>> x, y, z = 0, 0, 0

You need to separate the variable names with commas, and do the same with the values, and Python will assign each value to its respectively positioned variable. As long as the number of values matches the number of variables, Python will match them up correctly.

Constants

A constant is like a variable whose value stays the same throughout the life of a program. Python doesn’t have built-in constant types, but Python programmers use all capital letters to indicate a variable should be treated as a constant and never be changed.

MAX_CONNECTIONS = 5000

When you want to treat a variable as a constant in your code, make the name of the variable all capital letters.

Comments

Comments are an extremely useful feature in most programming languages. As your programs become longer and more complicated, you should add notes within your programs that describe your overall approach to the problem you’re solving. A comment allows you to write notes in English within your programs.

How Do You Write Comments?

In Python, the hash mark (#) indicates a comment. Anything following a hash mark in your code is ignored by the Python interpreter. For example:

# Say hello to everyone.
print("Hello Python people!")

Python ignores the first line and executes the second line.

Hello Python people!

What Kind of Comments Should You Write?

The main reason to write comments is to explain what your code is supposed to do and how you are making it work. When you’re in the middle of working on a project, you understand how all of the pieces fit together. But when you return to a project after some time away, you’ll likely have forgotten some of the details. You can always study your code for a while and figure out how segments were supposed to work, but writing good comments can save you time by summarizing your overall approach in clear English.

If you want to become a professional programmer or collaborate with other programmers, you should write meaningful comments. Today, most software is written collaboratively, whether by a group of employees at one company or a group of people working together on an open source project. Skilled programmers expect to see comments in code, so it’s best to start adding descriptive comments to your programs now. Writing clear, concise comments in your code is one of the most beneficial habits you can form as a new programmer.

When you’re determining whether to write a comment, ask yourself if you had to consider several approaches before coming up with a reasonable way to make something work; if so, write a comment about your solution. It’s much easier to delete extra comments later on than it is to go back and write comments for a sparsely commented program.

Important Note

Don’t try to write perfect code; write code that works, and then decide whether to improve your code for that project or move on to something new.