1
0
mirror of https://github.com/gsi-upm/sitc synced 2024-12-22 19:58:12 +00:00
sitc/python/1_2_Numbers_Strings.ipynb

629 lines
12 KiB
Plaintext
Raw Normal View History

2016-02-01 12:05:58 +00:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![](http://www.upm.es/sfs/Rectorado/Gabinete%20del%20Rector/Logos/UPM/EscPolitecnica/EscUpmPolit_p.gif \"UPM\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Course Notes for Learning Intelligent Systems"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-03-06 16:46:12 +00:00
"Department of Telematic Engineering Systems, Universidad Politécnica de Madrid, © Carlos A. Iglesias"
2016-02-01 12:05:58 +00:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Built-in Types: Booleans, Numbers and Strings"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python comes with standard types that are built in the interpreter. \n",
"\n",
"The main built-in types are booleans, numeric, strings and sequences. More details can be found in the [Python documentation](https://docs.python.org/3/library/stdtypes.html)."
]
},
{
"cell_type": "markdown",
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-01 12:05:58 +00:00
"source": [
"## 1. Booleans"
]
},
{
"cell_type": "code",
2019-02-28 14:30:33 +00:00
"execution_count": null,
"metadata": {},
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"True and False # operations with booleans"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"not True"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"True or False"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Numbers"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In Python3, there are the following [numeric types](https://docs.python.org/3/library/stdtypes.html#typesnumeric):\n",
"* integers (int): 1, -1, ...\n",
"* floating point numbers (float): 0.1, 1E2\n",
"* complex numbers (complex): 2 + 3j\n",
"Let's play a bit"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"2 + 2 # 2 plus 2 (integers)"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"2.0 * 3.0 # 2.0 times 3.0 (floats)"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"2.0 ** 4.0 # 2.0 to the power of 4 (float)"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"(3 + 4j) + (5 + 5j) #add two complex numbers"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"10 / 3 # classic division"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"10 // 3 # floor division"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"10 % 3 # remainder"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"10e158*17e158 #overflow shown as 'inf', infinitive"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"type(10)"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"type(2 + 3j)"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"type(2.1)"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"type(2E3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Strings"
]
},
{
"cell_type": "markdown",
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-01 12:05:58 +00:00
"source": [
"Strings are **immutable sequences** of Unicode code points.\n",
"\n",
"Strings in Python can be enclosed in matching single quotes or double quotes."
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"\"This is a string\""
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"'This is also a string'"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"\"This is a string containing single quotes 'hi'\""
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"'This is string containing double quotes \"hi\"'"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"'''This is \n",
"\n",
"a long string\n",
"\n",
"''' # Triple quoted strings are used for long strings that span several lines, \n",
" # We can use triple single quotes or triple double quotes for long strings"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Strings can contain special characters: \\n (new line), \\t (tab), \\a (beep) and \\\\\\ (slash character)"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"\"String with special characters: \\n newline, \\a beep and \\\\ slash\""
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"\"concatenate \" + \"two strings\" #use of '+' for concatenating two strings"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"len('hola') # length of a string"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"type(\"hola\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Strings are sequences, so they can be accessed through and index starting from 0"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-01 12:05:58 +00:00
"outputs": [],
"source": [
"s = \"hola\" # assign the string value \"hola\" to the variable s"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"s # get the value of s"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"s[0]"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"s[1]"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"s[3]"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"s [-1] # we can start from the beginning (index 0, 1, 2, ...) or from the last position (-1, -2, ...)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since Strings are sequences, they can be accessed with the *slice notation*: s[start:end]. The resulting slice includes the elements of the sequence from position start (included) to position end (excluded). Both arguments start and end are optional (default values: start->0, end->length)."
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"s[0:2] #slice [0,2)"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"s[:2] #slice [0,2)"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"s[:] #slice [0, len(s)]"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"s[:-2]"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"s[-4:-2]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since Python 1.4, you can use the extended slice notation: [start:end:step]. The slice moves from start before end is reached, and moves from one position to the next by step items.\n",
"\n",
"Step cannot be 0.\n",
"\n",
2016-02-16 13:40:37 +00:00
"If start or end are omitted, they become the end value (the end side depends on the sign of the step). This means, for a positive step, default start and end are [0,len), while for a negative step, the default values are [len, 0)"
2016-02-01 12:05:58 +00:00
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-01 12:05:58 +00:00
"outputs": [],
"source": [
"se = \"This is a string\""
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"se[::1] # moves from 0 to len, and the index is incremented by 1"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"se[0:14:2] #take the even indexed characters from 0 to 14"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"se[::-1] #reverse the string"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"se[:4:-1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use also operations (+, *) with strings"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-01 12:05:58 +00:00
"outputs": [],
"source": [
"a = 'b'"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"se + \" plus \" + se + \" plus \"+ a*3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also used methods for Strings, such as lower(), upper(), split(), ...\n",
"\n",
"You can check the available methods by writing a String variable, \".\", and pressing Tab."
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"s.lower()"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"s.upper()"
]
},
{
"cell_type": "code",
2016-02-15 08:01:37 +00:00
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-15 08:01:37 +00:00
"outputs": [],
2016-02-01 12:05:58 +00:00
"source": [
"s.split('o') # splits String "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercises"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Think if the following expressions are ok, and which will be the result.\n",
"\n",
"Execute the cells and check your answers."
]
},
{
"cell_type": "code",
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-01 12:05:58 +00:00
"outputs": [],
"source": [
"\"hohoho\".split('h')"
]
},
{
"cell_type": "code",
"execution_count": null,
2019-02-28 14:30:33 +00:00
"metadata": {},
2016-02-01 12:05:58 +00:00
"outputs": [],
"source": [
"type(\"hohoho\".split('h'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Licence"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The notebook is freely licensed under under the [Creative Commons Attribution Share-Alike license](https://creativecommons.org/licenses/by/2.0/). \n",
"\n",
2019-03-06 16:46:12 +00:00
"© Carlos A. Iglesias, Universidad Politécnica de Madrid."
2016-02-01 12:05:58 +00:00
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
2019-03-06 16:46:12 +00:00
"version": "3.7.1"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,
"autocomplete": true,
"bibliofile": "biblio.bib",
"cite_by": "apalike",
"current_citInitial": 1,
"eqLabelWithNumbers": true,
"eqNumInitial": 1,
"hotkeys": {
"equation": "Ctrl-E",
"itemize": "Ctrl-I"
},
"labels_anchors": false,
"latex_user_defs": false,
"report_style_numbering": false,
"user_envs_cfg": false
2016-02-01 12:05:58 +00:00
}
},
"nbformat": 4,
2019-03-06 16:46:12 +00:00
"nbformat_minor": 1
2016-02-01 12:05:58 +00:00
}