# Basic types in python#

Variables in python can hold different types of numbers and also other things such as text, images and more complex objects.

We can also print out the type of a variable.

This is an integer number:

a = 5

type(a)

int


And this is a floating point variable:

b = 3.5

type(b)

float


When combining variables of different types, Python makes a decision which type the new variable should have

c = a + b

type(c)

float


# Strings#

Variables can also hold text. We call them a “string” in this case, and define them by surrounding the value with either single quotes ' ' or double quotes " ":

first_name = "Robert"
last_name = 'Haase'


Strings can be concatenated using the + operator:

first_name + last_name

'RobertHaase'

first_name + " " + last_name

'Robert Haase'


If we want to have single and double quotation marks within our text, we can put them in like this:

text = "She said 'Hi'."
print(text)

She said 'Hi'.

text = 'He said "How are you?".'
print(text)

He said "How are you?".


## Combining strings and numbers#

When combining variables of numeric types and string types, errors may appear:

first_name + a

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Input In [12], in <cell line: 1>()
----> 1 first_name + a

TypeError: can only concatenate str (not "int") to str


Those can be prevented by converting the numeric variable to a string type using the str() function:

first_name + str(a)

'Robert5'


You can also convert strings to numbers in case they contain numbers:

d = "5"

int(d)

5

a + int(d)

10


If the string does not contain a number, an error message may appear:

int("hello")

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Input In [17], in <cell line: 1>()
----> 1 int("hello")

ValueError: invalid literal for int() with base 10: 'hello'

int("")

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Input In [18], in <cell line: 1>()
----> 1 int("")

ValueError: invalid literal for int() with base 10: ''

int("5")

5


## f-strings#

Instead of having to manually convert numbers to strings in order to assemble them with other strings, we can resort to f-strings which are defined by simply adding an f before the opening quote of a regular string:

f"This is an f-string"

'This is an f-string'


We can now add variables directly in this text by surrounding them with curly brackets:

f"This is an f-string. a's value is {a}. Doubling the value of a gives {2*a}."

"This is an f-string. a's value is 5. Doubling the value of a gives 10."


As you can see above, f-strings can contain as many variables as needed and curly brackets can contain more than just a variable. We can even execute functions inside them:

f"The first_name variable contains {first_name.lower().count('r')} r letters."

'The first_name variable contains 2 r letters.'


# Exercise#

Marie Curie’s name and birthdate are stored in variables. Concatenate them in one string variable and print it out. The output should be “Marie Curie, * 7 November 1867”

first_name = "Marie"
last_name = "Curie"

birthday_day = 7
birthday_month = "November"
birthday_year = 1867