# VARIABLES & ASSIGNMENTS

Variables are one of the most important concepts in programming, and you will certainly be using them in every useful program you write. Variables are like labels, or names, for the numbers and other values in your programs. Variables are used for keeping track of all the facts and figures you use throughout your code.

Variables can be given any name you choose (although there are some rules to that!) Choosing good variable names makes it easier to write your code, to change your code later and to help others understand your code.

Variable names

Choosing good variable names can make a program easier to read an understand. A variable can generally be any name you want, as long as it contains only:

- Uppercase (A through Z) or lowercase (a through z) letters

- Digits (0 through 9)

- The underscore character ("_")

And, it can't start with a digit, either.

So, for example:

Variable Name | Allowed?
--- | ---
fred | YES
Fred | YES
FRED | YES
Fred.Schmed | NO — Can't use periods
this_is_a_really_long_variable_name | YES
thisisareallylongvariablenametoo | YES — Although it sure is hard to read
Fred's_house | NO — Can't use apostrophe
Freds house | NO — Can't use spaces
Freds_house | YES
Fred123 | YES
123Fred | NO — Can't start with a digit
You Don't Say? | NO — Can't use apostrophe, question mark, or spaces
#firstworldproblems | NO — Can't use hash

Even though you can name variables any way you want, it's common to write variable names that are longer than one word by separating the words with underscores. And, that's the way we'll generally do it throughout this guide. One exception: for variables that don't change values throughout the program, we'll generally use ALL_CAPS for those variable names.

## Assigning Values to Variables

A "variable" is a value that can vary (change), and that's what program variables do throughout a program. To assign a variable a value, you use the equals sign (=) in what is called an "assignment statement," which looks like:

my_variable = 5

To change it to a different value, you use another assignment statement:

my_variable = 7

A variable can be many different types of values, including numbers, phrases (called "strings"), or lists. The value of a variable can change many times in a program.

## Variables Can Be Assigned Numbers

As an example, we'll calculate the number of seconds in a day. To do do this, we'll start by creating a variable called `sec_in_minute` that will be the number of seconds in a minute (which is 60):

sec_in_minute = 60

Now, let's create two more variables:

min_in_hour = 60 hour_in_day = 24

We can now compute (and print) the number of seconds in a day with:

print(sec_in_minute * min_in_hour * hour_in_day)

The asterisk ('*') is a multiplication symbol — see the project for more information.

Here is what the output would look like if you ran that code:

    86400

## Variables Can Be Assigned the Value of Other Variables

Remember we said above that variables can be almost any type of data – that includes data from other variables. We can take our program one step further by creating a variable called `sec_in_day` and using it to be our calculation for the number of seconds in a day:

sec_in_day = sec_in_minute * min_in_hour * hour_in_day

Now, if you want to output the number of seconds in a day, you can simply print the number being held by the `sec_in_day` variable:

print(sec_in_day)

This is what the output would look like:

    86400

## Variables Can Be Assigned Strings

Variables can also be "strings". In programming, strings are just sequences of characters — generally normal text. For example, we could have a variable that holds one of the output message we're using above:

message = "Number of seconds in a day: "

We could then print that message to the output, along with our calculation:

print(message, sec_in_day)

Here is what the code and output would look like using a variable for the text string:

    Number of seconds in a day: 86400

Note that because `message` is a variable, we don't put quotation marks around it.

Other Variable Types

In this tutorial, we've discussed two types of variable values: numbers and strings. But there are many other types of data values that can be used as well:

- Lists — Lists are ordered sequences of other values. We'll discuss them more in and will be using them frequently in future projects.

- Booleans - Booleans are a funny name for the values `True` and `False`. We'll discuss them more in and you'll experience the concept of booleans lots of different places.

- None — `None` is a special value which appropriately indicates that there is no value at all.

Those are the most common types of values, and they cover the ones you'll see in the core set of Ready Set STEM projects. But there are more, including types you can even define yourself.

One last note: in Python, as in some other programming languages, all values are called objects, and we'll discuss objects more throughout this guide.