Difference between revisions of "Python"

From Sinfronteras
Jump to: navigation, search
(OOP with Python)
(Data types)
 
(156 intermediate revisions by the same user not shown)
Line 1: Line 1:
Este curso creo que está bueno: https://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3
 
  
https://www.linkedin.com/groups/25827/25827-6252617967876530180?midToken=AQGAer8k7UG2aA&trk=eml-b2_anet_digest_of_digests-hero-12-view%7Ediscussion&trkEmail=eml-b2_anet_digest_of_digests-hero-12-view%7Ediscussion-null-6adzns%7Ej11y530y%7Ebq&lipi=urn%3Ali%3Apage%3Aemail_b2_anet_digest_of_digests%3BG9uUYE5oSqCC6IiHvBuPAQ%3D%3D
+
<br />
 +
https://www.python.org/
  
https://www.udemy.com/the-python-mega-course/?utm_source=facebook&utm_medium=udemyads&utm_campaign=NEW-FB-PROS-TECH-Dev-Core-Python-EN-ENG_._ci_692188_._sl_ENG_._vi_TECH_._sd_All_._la_EN_.&utm_term=_._ag_Dev-Core-Python-Affinity-Secondary-Worldwide-_._ci_692188_._._pi_1500516769988382_._gi_all_._ai_18--65_._an_w2JZ7e&k_clickid=06af6ff1-3223-44a3-ac5a-faf35c3045d8_116713439&pmtag=730e4958-3f44-4290-b5bb-1fb0fb62b7d5
+
https://docs.python.org/3/
  
https://openclassrooms.com/courses/apprenez-a-programmer-en-python/les-structures-conditionnelles
 
  
http://www.enlistq.com/10-python-idioms-to-help-you-improve-your-code/
+
<br />
 +
==Online Python Interpreters==
 +
These ones supports many languages:  
  
https://www.linkedin.com/groups/25827/25827-6226729936229666816?midToken=AQGAer8k7UG2aA&trk=eml-b2_anet_digest_of_digests-hero-11-discussion%7Esubject&trkEmail=eml-b2_anet_digest_of_digests-hero-11-discussion%7Esubject-null-6adzns%7Eiy47cgxw%7Eys
+
*https://repl.it/
 +
*https://www.onlinegdb.com
  
https://www.linkedin.com/pulse/python-top-10-programming-languages-year-2017-alok-kumar
 
  
 +
<br />
 +
==Installation==
  
==Qu'est-ce que Python? - Pourquoi Python? - À quoi peut servir Python?==
 
* Python est un langage de programmation interprété, à ne pas confondre avec un langage compilé.
 
  
* Il permet de créer toutes sortes de programmes, comme des jeux, des logiciels, des progiciels, etc.
+
<br />
 +
===Installing python on Ubuntu===
 +
The last version of Python is usually installed this way. It can be verified in many sources: https://phoenixnap.com/kb/how-to-install-python-3-ubuntu
  
* Il est possible d'associer des bibliothèques à Python afin d'étendre ses possibilités.
+
sudo apt update
 +
sudo apt install software-properties-common
 +
sudo add-apt-repository ppa:deadsnakes/ppa
 +
sudo apt update
 +
sudo apt install python3.8
 +
 +
python --version
 +
 
 +
 
 +
<br />
  
* Il est portable, c'est à dire qu'il peut fonctionner sous différents systèmes d'exploitation (Windows, Linux, Mac OS X,…).
+
===[[Python_for_Data_Science#Anaconda|Installing Anaconda]]===
  
==Instalación==
 
Python est pré-installé sur la plupart des distributions Linux. Sinon:
 
  
===Versión instalada===
+
<br />
 +
===Display the installed version===
 
Para ver la versión por defecto:
 
Para ver la versión por defecto:
 
  python --version
 
  python --version
Line 43: Line 54:
 
  >>>
 
  >>>
  
===Cambiar la versión por defecto===
+
 
 +
<br />
 +
===Change the default version===
 
https://linuxconfig.org/how-to-change-from-default-to-alternative-python-version-on-debian-linux
 
https://linuxconfig.org/how-to-change-from-default-to-alternative-python-version-on-debian-linux
  
 +
 +
<br />
 
====Change python version on per user basis====
 
====Change python version on per user basis====
 
To change a python version on per user basis you simply create an alias within user's home directory. Open ~/.bashrc file and add new alias to change your default python executable:
 
To change a python version on per user basis you simply create an alias within user's home directory. Open ~/.bashrc file and add new alias to change your default python executable:
Line 53: Line 68:
 
  . ~/.bashrc
 
  . ~/.bashrc
  
 +
 +
<br />
 
====Change python version system-wide====
 
====Change python version system-wide====
To change python version system-wide we can use '''update-alternatives''' command. Logged in as a root user, first list all available python alternatives:
+
To change python version system-wide we can use '''update-alternatives''' command.
  
 +
Logged in as a root user. First we can list all available python alternatives:
 
  # update-alternatives --list python
 
  # update-alternatives --list python
 
  update-alternatives: error: no alternatives for python
 
  update-alternatives: error: no alternatives for python
  
The above error message means that no python alternatives has been recognized by update-alternatives command. For this reason we need to update our alternatives table and include both python2.7 and python3.5:
+
El comando anterio debería mostrar las alternativas (por ejemplo python2.7 , python3.5) que ya han sido incluidas a través del comando update-alternatives --install. The above error message means that no python alternatives has been recognized by update-alternatives command. For this reason we need to update our alternatives table and include both python2.7 and python3.5:
  
 +
Debemos entonces contruir la tabla de alternativas de la siguiente forma:
 
  # update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
 
  # update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
 
  update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode
 
  update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode
Line 66: Line 85:
 
  update-alternatives: using /usr/bin/python3.4 to provide /usr/bin/python (python) in auto mode
 
  update-alternatives: using /usr/bin/python3.4 to provide /usr/bin/python (python) in auto mode
  
The --install option take multiple arguments from which it will be able to create a symbolic link. The last argument specified it priority means, if no manual alternative selection is made the alternative with the highest priority number will be set. In our case we have set a priority 2 for /usr/bin/python3.4 and '''as a result the /usr/bin/python3.5 was set as default python version automatically by update-alternatives command.'''  
+
The --install option take multiple arguments from which it will be able to create a symbolic link. The last argument specified it priority means, if no manual alternative selection is made the alternative with the highest priority number will be set. In our case we have set a priority 2 for /usr/bin/python3.4 and '''as a result the /usr/bin/python3.5 was set as default python version automatically by update-alternatives command.'''
 +
 
 +
Es decir, si queremos que python2.7 sea la versión por defecto podemos ejecutar el comando update-alternatives --intall de la forma mostrada arriba y ajustar el último argumento de forma tal que el mayor valor sea asociado a la versión que queremos por defecto.
 +
 
 +
 
 +
<br />
 +
 
 +
==IDE for Python==
 +
<br />
 +
===PyCharm===
 +
https://www.jetbrains.com/pycharm/
 +
 
 +
 
 +
'''Installation:''' <br />
 +
https://www.jetbrains.com/help/pycharm/installation-guide.html
 +
 
 +
sudo snap install pycharm-community --classic
 +
 
 +
 
 +
<br />
 +
 
 +
===[[Node.js - Express.js#Visual Studio Code|Visual Studio Code]]===
 +
Python in Visual Studio Code
 +
 
 +
https://code.visualstudio.com/docs/languages/python
 +
 
 +
 
 +
<br />
 +
===[[Python_for_Data_Science#Jupyter|Jupyter]]===
 +
.
 +
 
 +
 
 +
<br />
 +
===Atom===
 +
https://flight-manual.atom.io/getting-started/sections/installing-atom/
 +
 
 +
 
 +
<br />
 +
===Python on eclipse===
 +
Para utilizar Python en Eclipse debemos instalar PyDev:
 +
 
 +
Help > Eclipse Marketplace
 +
Find: PyDev
 +
 
 +
 
 +
<br />
 +
===Sublime Text===
 +
https://www.sublimetext.com/
 +
 
 +
https://en.wikipedia.org/wiki/Sublime_Text
 +
 
 +
Sublime Text is a proprietary cross-platform source code editor '''with a Python application programming interface (API)'''. It natively supports many programming languages and markup languages, and functions can be added by users with plugins.
 +
 
 +
 
 +
<br />
 +
====Installation====
 +
https://linuxconfig.org/how-to-install-sublime-text-on-ubuntu-18-04-bionic-beaver-linux
 +
 
 +
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
 +
sudo apt-add-repository "deb https://download.sublimetext.com/ apt/stable/"
 +
 
 +
sudo apt install sublime-text
 +
 
 +
 
 +
<br />
 +
====Keyboard shortcut to comment lines in Sublime Text 3====
 +
http://stackoverflow.com/questions/17742781/keyboard-shortcut-to-comment-lines-in-sublime-text-3
 +
 
 +
https://forum.sublimetext.com/t/st3-3012-toggle-comments-broken/8930/8
 +
 
 +
As a workaround, go to Preferences->Key Bindings - User and add these keybindings (if you're using Linux):
 +
 
 +
{ "keys": ["ctrl+7"], "command": "toggle_comment", "args": { "block": false } },
 +
{ "keys": ["ctrl+shift+7"], "command": "toggle_comment", "args": { "block": true } }
 +
 
 +
 
 +
<br />
 +
====Indentation====
 +
https://stackoverflow.com/questions/9474090/how-do-i-force-sublime-text-to-indent-two-spaces-per-tab
 +
 
 +
If you want it for all files, go to Preferences -> Settings - Default/User. But as several comments below indicate, Syntax Specific settings can limit it to just the languages you choose.
 +
 
 +
To limit this configuration to Ruby files, first open up a Ruby file in the editor, and then go to Preferences -> Settings -> More -> Syntax Specific -> User. This should open a settings window named Ruby.sublime-settings
 +
 
 +
Save these settings:
  
 +
<syntaxhighlight lang="php">
 +
{
 +
  "tab_size": 2,
 +
  "translate_tabs_to_spaces": true,
 +
  "detect_indentation": false
 +
}
 +
</syntaxhighlight>
  
===Ubuntu===
 
apt-get install python3.x
 
  
Si se descarga:
+
<br />
* Décompressez l'archive en tapant : tar -xzf Python-3.4.0.tar.bz2 (cette commande est bien entendu à adapter suivant la version et le type de compression).
+
====Crear un proyecto en Sublime Text====
* Attendez quelques instants que la décompression se termine, puis rendez-vous dans le dossier qui vient d'être créé dans le répertoire courant (Python-3.4.0 dans mon cas).
 
* Exécutez le script configure en tapant ./configure dans la console.
 
* Une fois que la configuration s'est déroulée, il n'y a plus qu'à compiler en tapant make puis make install en tant que super-utilisateur.
 
  
==Lancer Python==
+
#Abrimos una nueva ventana: File > New Window
Lorsque vous l'avez installé sur votre système, Python a créé un lien vers l'interpréteur sous la forme python3.X (le X étant le numéro de la version installée).
+
#Add folder to project
 +
#Save project as: es apropiado guardarlo en el mismo directorio en donde fue creado el proyecto.
  
Si, par exemple, vous avez installé Python 3.4, vous pouvez y accéder grâce à la commande
+
Esto creará dos archivos:
  
python3.4
+
*nombre-111.sublime-project
 +
*nombre-111.sublime-workspace : Este es el que debemos abrir para ingresar al proyecto.
  
==Premiers pas avec l'interpréteur de commandes Python==
 
  
===Opérations courantes===
+
<br />
 +
 
 +
==Using Python==
 +
 
 +
 
 +
<br />
 +
===Python Shell===
 +
From the terminal, you can start the Python Shell/Interpreter (Also know as Python Interactive Shell) using the command:
 +
 
 +
python3.x
 +
 
 +
 
 +
<br />
 +
====Premiers pas avec l interpreteur de commandes Python====
 +
 
 +
 
 +
<br />
 +
=====Operations courantes=====
  
 
  >>> 3 + 4
 
  >>> 3 + 4
Line 98: Line 221:
 
  5.1899999999999995
 
  5.1899999999999995
  
==Les types de données==
 
  
==='''int''': Les nombres entiers===
+
<br />
Le type entier se nomme int en Python (qui correspond à l'anglais « integer », c'est-à-dire entier). La forme d'un entier est un nombre sans virgule.
+
===Writing and Running a Python code===
 +
You can use your favorite Text Editor or IDE to write your Python code:
 +
 
 +
example.py
 +
<syntaxhighlight lang="python">
 +
#!/usr/bin/python3.6
 +
 
 +
c=input("Ingrese un caracter: ")
 +
e=int(input("Entrez un entier: "))
 +
 
 +
for i in range(1,e+1):
 +
for j in range(1,i+1):
 +
print(c,end="")
 +
print()
 +
</syntaxhighlight>
 +
 
 +
 
 +
*If we use the line '''''#!/usr/bin/python3.6''''' to indicate the path to the Python Interpreter, then we can then run our code as a Executable file this way:
 +
 
 +
./example.py
 +
 
 +
 
 +
*However, the most common way is not including '''''#!/usr/bin/python3.6''''' and calling the Python Interpreter through the '''''python''''' command:
 +
 
 +
python3 example.py
 +
 
 +
 
 +
*Of course, you can also run a Python program through a button on a IDE Graphical Interface.
 +
 
 +
 
 +
<br />
 +
 
 +
==pip and virtualenv==
 +
https://pypi.org/project/pip/
 +
 
 +
https://pip.pypa.io/en/stable/installation/
 +
 
 +
 
 +
To display the version of pip:
 +
<syntaxhighlight lang="shell">
 +
python3.11 -m pip --version
 +
</syntaxhighlight>
 +
 
 +
 
 +
Upgrade pip:
 +
<syntaxhighlight lang="shell">
 +
python3 -m pip install --upgrade pip
 +
</syntaxhighlight>
 +
 
 +
 
 +
<syntaxhighlight lang="shell">
 +
pip install librarie
 +
</syntaxhighlight>
 +
 
 +
 
 +
'''Para especificar la versión de python a la cual será instalada la libreria:'''
 +
<syntaxhighlight lang="shell">
 +
python3 -m pip install pandas
 +
</syntaxhighlight>
 +
En este caso, cuando usemos python3 «pandas» estará disponible, pero no necesariamente para otras versiones de python
 +
 
 +
 
 +
'''To list all pakages installed :'''
 +
<syntaxhighlight lang="shell">
 +
pip list
 +
python3.11 -m pip list
 +
</syntaxhighlight>
 +
 
 +
 
 +
'''How can I install packages using pip according to the requirements.txt'''
 +
<syntaxhighlight lang="shell">
 +
pip install -r requirements.txt
 +
python3.8 -m pip install -r requirements.txt
 +
</syntaxhighlight>
 +
 
 +
 
 +
'''Puede ser necesario instalar venv para la version de python deseada:'''
 +
<syntaxhighlight lang="shell">
 +
sudo apt install python3.11-venv
 +
</syntaxhighlight>
 +
 
 +
 
 +
'''Crear un virtualenv:'''
 +
<syntaxhighlight lang="shell">
 +
python3 -m venv myenv  # This will install a local copy of Python and pip into a directory called myprojectenv
 +
</syntaxhighlight>
 +
 
 +
 
 +
'''Activar el virtualenv:'''
 +
<syntaxhighlight lang="shell">
 +
source myenv/bin/activate
 +
</syntaxhighlight>
 +
 
 +
 
 +
'''Para especificar la versión de Python que del virtualenv:''' https://stackoverflow.com/questions/45293436/how-to-specify-python-version-used-to-create-virtual-environment
 +
<syntaxhighlight lang="shell">
 +
virtualenv -p python3.8 myproject_env    # Creates a new default python3.8 (python3.8 must be a valid command i.e found in the PATH)
 +
</syntaxhighlight>
 +
 
 +
 
 +
'''Para salir del virtualenv:'''
 +
<syntaxhighlight lang="shell">
 +
(myproject_env)$ deactivate
 +
</syntaxhighlight>
 +
 
 +
 
 +
<br />
 +
 
 +
==Keep a python script running on a remote server==
 +
 
 +
 
 +
<br />
 +
===Screen===
 +
 
 +
Create a screen:
 +
screen -S bot
  
==='''float''': Les nombres flottants===
+
Disconnect: Ctrl+A+D
Les flottants sont les nombres à virgule. Ils se nomment float en Python (ce qui signifie « flottant » en anglais). La syntaxe d'un nombre flottant est celle d'un nombre à virgule (n'oubliez pas de remplacer la virgule par un point). Si ce nombre n'a pas de partie flottante mais que vous voulez qu'il soit considéré par le système comme un flottant, vous pouvez lui ajouter une partie flottante de 0 (exemple 52.0).
 
  
===Les chaînes de caractères===
+
Reconnecting:
 +
screen -r bot
  
On peut écrire une chaîne de caractères de différentes façons :
 
  
    entre guillemets ("ceci est une chaîne de caractères") ;
+
List screens:
 +
screen -ls
  
    entre apostrophes ('ceci est une chaîne de caractères') ;
 
  
    entre triples guillemets ("""ceci est une chaîne de caractères""").
+
Kill all sessions
 +
killall screen
  
    entre triples apostrophes ('''ceci est une chaîne de caractères''').
 
  
Si vous utilisez les délimiteurs simples (le guillemet ou l'apostrophe) pour encadrer une chaîne de caractères, il faut échapper les apostrophes se trouvant au cœur de la chaîne. On insère ainsi un caractère anti-slash « \ » avant les apostrophes contenues dans le message.
+
Kill a specific session
 +
screen -S bot -X quit
  
chaine = 'J\'aime le Python!'
 
  
Le caractère d'échappement « \ » est utilisé pour créer d'autres signes très utiles. Ainsi, « \n » symbolise un saut de ligne ("essai\nsur\nplusieurs\nlignes"). Pour écrire un véritable anti-slash dans une chaîne, il faut l'échapper lui-même (et donc écrire « \\ »).
+
Creating the screen without attaching to it
 +
screen -dmS bot
  
L'interpréteur affiche les sauts de lignes comme on les saisit, c'est-à-dire sous forme de « \n ». Nous verrons dans la partie suivante comment afficher réellement ces chaînes de caractères et pourquoi l'interpréteur ne les affiche pas comme il le devrait.
 
  
Utiliser les triples guillemets pour encadrer une chaîne de caractères dispense d'échapper les guillemets et apostrophes, et permet d'écrire plusieurs lignes sans symboliser les retours à la ligne au moyen de « \n ».
+
Activating the venv on the screen previously created without attaching to it
 +
screen -S bot -p 0 -X stuff $'source .venv/bin/activate\n'
  
>>> chaine3 = """Ceci est un nouvel
 
... essai sur plusieurs
 
... lignes"""
 
>>>
 
  
Vous pouvez utiliser, à la place des trois guillemets, trois apostrophes qui jouent exactement le même rôle.
+
To create the screen and activate the venv at the same time without attaching to it:
 +
screen -dmS bot bash -c 'source .venv/bin/activate && exec sh'    # This is working but the prompt is sh so not very good. (&& can be replaced by ;)
 +
screen -dmS bot bash -c 'source .venv/bin/activate && exec bash'  # This is not activating the venv
 +
 
 +
 
 +
<br />
 +
==Data types==
 +
https://docs.python.org/2.0/ref/types.html
 +
 
 +
https://upload.wikimedia.org/wikipedia/commons/1/10/Python_3._The_standard_type_hierarchy.png
 +
 
 +
In this source you can find a very good documentation about Python Data Types and the most important Operations and Methods for each Data Type:
 +
https://www.w3schools.com/python/python_datatypes.asp
 +
 
 +
{| class="wikitable"
 +
|+
 +
!
 +
!
 +
!
 +
!
 +
|-
 +
|'''None'''
 +
|
 +
|
 +
|
 +
|-
 +
|'''Ellipsis'''
 +
|
 +
|
 +
|
 +
|-
 +
|'''Numbers'''
 +
|'''Integers'''
 +
|'''Plain integers'''
 +
|
 +
|-
 +
|
 +
|
 +
|'''Long integers'''
 +
|
 +
|-
 +
|
 +
|'''Floating point numbers'''
 +
|
 +
|
 +
|-
 +
|
 +
|'''Complex numbers'''
 +
|
 +
|
 +
|-
 +
|'''Sequences'''
 +
|'''Immutable sequences'''
 +
|'''Strings'''
 +
|
 +
|-
 +
|
 +
|
 +
|'''Unicode'''
 +
|
 +
|-
 +
|
 +
|
 +
|'''Tuples'''
 +
|
 +
|-
 +
|
 +
|'''Mutable sequences'''
 +
|'''Lists'''
 +
|
 +
|-
 +
|'''Mappings'''
 +
|'''Dictionaries'''
 +
|
 +
|
 +
|-
 +
|'''Callable types'''
 +
|'''User-defined functions'''
 +
|
 +
|
 +
|-
 +
|
 +
|'''User-defined methods'''
 +
|
 +
|
 +
|-
 +
|
 +
|'''Built-in functions'''
 +
|
 +
|
 +
|-
 +
|
 +
|'''Built-in methods'''
 +
|
 +
|
 +
|-
 +
|
 +
|'''Classes'''
 +
|
 +
|
 +
|-
 +
|
 +
|'''Class instances'''
 +
|
 +
|
 +
|-
 +
|'''Modules'''
 +
|
 +
|
 +
|
 +
|-
 +
|'''Classes'''
 +
|
 +
|
 +
|
 +
|-
 +
|'''Class instances'''
 +
|
 +
|
 +
|
 +
|-
 +
|'''Files'''
 +
|
 +
|
 +
|
 +
|-
 +
|'''Internal types'''
 +
|'''Code objects'''
 +
|
 +
|
 +
|-
 +
|
 +
|'''Frame objects'''
 +
|
 +
|
 +
|-
 +
|
 +
|'''Traceback objects'''
 +
|
 +
|
 +
|-
 +
|
 +
|'''Slice objects'''
 +
|
 +
|
 +
|}
 +
 
  
===Les booléens===
+
'''Getting the Data Type:''' You can get the data type of any object by using the type() function:
>>> a = 0
+
print(type(x))
>>> a == 5
+
{| class="wikitable"
False
+
|+Source: https://www.w3schools.com/python/python_datatypes.asp
>>> a > -8
+
! colspan="2" |
True
+
!Type/Class
>>> a != 33.19
+
!Description
True
+
!Example
>>>
+
!Setting the Specific Data Type
 +
!Operations/Functions/Methods
 +
|-
 +
| colspan="2" rowspan="3" |'''Numeric Types'''
 +
|<code>int</code>
 +
|Int, or integer, is a whole number, positive or negative, without decimals, of unlimited length.
 +
|x = 20
 +
|x = int(20)
 +
| rowspan="3" |https://www.w3schools.com/python/python_numbers.asp
 +
|-
 +
|<code>float</code>
 +
|Float, or "floating point number" is a number, positive or negative, containing one or more decimals.
 +
|x = 20.5
 +
|x = float(20.5)
 +
|-
 +
|<code>complex</code>
 +
|Complex numbers are written with a "j" as the imaginary part
 +
|x = 1j
 +
|x = complex(1j)
 +
|-
 +
| colspan="2" |'''Text Type'''
 +
|<code>str</code>
 +
|'''Strings are Arrays:''' Like many other popular programming languages, strings in Python are arrays of bytes representing unicode characters. However, Python does not have a character data type, a single character is simply a string with a length of 1.
 +
|x = "Hello World"
 +
|x = str("Hello World")
 +
|https://www.w3schools.com/python/python_strings.asp
 +
|-
 +
| colspan="2" |'''Boolean Type'''
 +
|<code>bool</code>
 +
|Booleans represent one of two values: <code>True</code> or <code>False</code>.
 +
|x = True
 +
|x = bool(5)
 +
|https://www.w3schools.com/python/python_booleans.asp
 +
|-
 +
| colspan="2" rowspan="3" |'''Binary Types'''
 +
|<code>bytes</code>
 +
|
 +
|x = b"Hello"
 +
|x = bytes(5)
 +
|
 +
|-
 +
|<code>bytearray</code>
 +
|
 +
|x = bytearray(5)
 +
|x = bytearray(5)
 +
|
 +
|-
 +
|<code>memoryview</code>
 +
|
 +
|x = memoryview(bytes(5))
 +
|x = memoryview(bytes(5))
 +
|
 +
|-
 +
| rowspan="7" |'''Python Collections (Arrays)'''
 +
| rowspan="4" |'''Sequence Types'''
 +
|<code>list</code>
 +
|A list is a collection which is ordered and changeable.
 +
|x = ["apple", "banana", "cherry"]
 +
|x = list(("apple", "banana", "cherry"))
 +
|https://www.w3schools.com/python/python_lists.asp
  
Les variables de ce type ne peuvent prendre comme valeur que True ou False.
 
  
>>> age = 21
 
>>> majeur = False
 
>>> if age >= 18:
 
>>>    majeur = True
 
>>>
 
  
===Les mots-clés and, or et not===
+
'''Nice way to create a list:'''<syntaxhighlight lang="python3">
if a>=2 and a<=8:
+
lista = [x**2 for x in range(12) if x%3 == 0]
    print("a est dans l'intervalle.")
+
print(lista)
else:
+
# Output:
    print("a n'est pas dans l'intervalle.")
+
[0, 9, 36, 81]
 +
</syntaxhighlight><br />
 +
|-
 +
|<code>tuple</code>
 +
|A tuple is a collection which is ordered and '''unchangeable'''.
 +
|x = ("apple", "banana", "cherry")
 +
|x = tuple(("apple", "banana", "cherry"))
 +
|https://www.w3schools.com/python/python_tuples.asp
 +
|-
 +
|<code>Array</code>
 +
|Python does not have built-in support for Arrays. You have to import it from a Library:<br />
 +
<code>from numpy import array</code>
  
 +
<code>x = array([3, 6, 9, 12])</code>
  
if a<2 or a>8:
 
    print("a n'est pas dans l'intervalle.")
 
else:
 
    print("a est dans l'intervalle.")
 
  
 +
There are some differences between Array and List: https://medium.com/backticks-tildes/list-vs-array-python-data-type-40ac4f294551
  
Enfin, il existe le mot clé '''not''' qui « inverse » un prédicat. Le prédicat '''not a==5''' équivaut donc à '''a!=5'''.
+
Lists are containers for elements having differing data types but arrays are used as containers for elements of the same data type.
  
'''not''' rend la syntaxe plus claire. Pour cet exemple, j'ajoute à la liste un nouveau mot clé, '''is''', qui teste l'égalité non pas des valeurs de deux variables, mais de leurs références. Je ne vais pas rentrer dans le détail de ce mécanisme avant longtemps. Il vous suffit de savoir que pour les entiers, les flottants et les booléens, c'est strictement la même chose. Mais pour tester une égalité entre variables dont le type est plus complexe, préférez l'opérateur « == ». Revenons à cette démonstration :
+
Arrays are specially optimised for arithmetic computations, Ex:
  
>>> majeur = False
+
<code>x = array([3, 6, 9, 12])</code>
>>> if majeur is not True:
 
...    print("Vous n'êtes pas encore majeur.")
 
...
 
Vous n'êtes pas encore majeur.
 
>>>
 
  
==Les opérateurs==
+
<code>divided_x = x/2</code>  # This would return an error if using List
===« + » « - » « / »===
 
  
>>> 3 + 4
+
<code>print(divided_x)</code>
7
 
  
  >>> -2 + 93
+
[1.5 3. 4.5 6. ]
91
+
|
 +
|
 +
|[[Python_for_Data_Science#Arrays]]
 +
|-
 +
|<code>range</code>
 +
|
 +
|x = range(6)
 +
|x = range(6)
 +
|
 +
|-
 +
|'''Mapping Type'''
 +
|<code>dict</code>
 +
|A dictionary is a collection which is unordered, changeable and indexed. In Python dictionaries are written with curly brackets, and they have keys and values.
 +
|x = {"name" : "John", "age" : 36}
 +
|x = dict(name="John", age=36)
 +
|https://www.w3schools.com/python/python_dictionaries.asp
 +
|-
 +
| rowspan="2" |'''Set Types'''
 +
|<code>set</code>
 +
|A set is a collection which is unordered and unindexed.
 +
|x = {"apple", "banana", "cherry"}
 +
|x = set(("apple", "banana", "cherry"))
 +
|https://www.w3schools.com/python/python_sets.asp
 +
|-
 +
|<code>frozenset</code>
 +
|
 +
|x = frozenset({"apple", "banana", "cherry"})
 +
|x = frozenset(("apple", "banana", "cherry"))
 +
|
 +
|}
 +
<br />
  
>>> 9.5 + 2
 
11.5
 
  
>>> 3.11 + 2.08
+
<br />
5.1899999999999995
 
  
>>> 10 / 5
+
==Operators==
2.0
 
  
>>> 10 / 3
+
{{#lst:Java|operators}}
3.3333333333333335
 
  
===« // » permet d'obtenir la partie entière d'une division (cociente)===
 
>>> 10 // 3
 
3
 
>>> 10 // 4
 
2
 
  
===« % », que l'on appelle le « modulo », permet de connaître le reste de la division (resto)===
+
<br />
>>> 10%3
+
==Control flow statements==
1
 
  
===« += » « -= » « *= » « /= »===
 
variable = variable + 1
 
  
La operación anterior puede resumirse utilizando el operador +=:
+
<br />
 +
===If statements===
 +
https://www.w3schools.com/python/python_conditions.asp
  
variable += 1
 
  
Les opérateurs -=, *= et /= existent également, bien qu'ils soient moins utilisés.
+
<syntaxhighlight lang="python">
 +
a = 200
 +
b = 33
 +
if b > a:
 +
    print("b is greater than a")
 +
elif a == b:
 +
    print("a and b are equal")
 +
else:
 +
    print("a is greater than b")
 +
</syntaxhighlight>
  
===Potencia===
 
>>> 9**(1/2)
 
3.0
 
  
  >>> pow(3,2)
+
'''Short Hand If:'''
9
+
<syntaxhighlight lang="python">
 +
  if a > b: print("a is greater than b")  
 +
</syntaxhighlight>
  
===Valor absoluto===
 
>>> abs(-3.0)
 
3.0
 
  
===Complejos===
+
'''One line if else statement, with 3 conditions:'''
>>> complex(2,3)
+
<syntaxhighlight lang="python">
(2+3j)
+
print("A") if a > b else print("=") if a == b else print("B")  
 +
</syntaxhighlight>
  
>>> complex(2,3)*complex(3,4)
 
(-6+17j)
 
  
>>> a=complex(3,5)
+
<br />
>>> a.real
+
===For Loops===
3.0
+
https://www.w3schools.com/python/python_for_loops.asp
>>> a.imag
 
5.0
 
  
===Maximo y minimo===
 
>>> max(3,45,6,7)
 
45
 
  
>>> min(32,23,2,13,4.3)
+
'''Print each fruit in a fruit list:'''
2
+
<syntaxhighlight lang="python">
 +
fruits = ["apple", "banana", "cherry"]
 +
for fruit in fruits:
 +
    print(fruit)
  
===Redondeo===
+
# Output:
>>> round(34.5)
+
apple
35.0
+
banana
 +
cherry
 +
</syntaxhighlight>
  
>>> round(35.345,1)
 
35.3
 
  
===La clase math===
+
<syntaxhighlight lang="python">
>>> import math
+
fruits = ["apple", "banana", "cherry"]
 +
for fruit_no, fruit in enumerate(fruits):
 +
    print(fruit_no, fruit)
  
====Raiz cuadrada====
+
# Output:
>>> math.sqrt(2)
+
0 apple
1.4142135623730951
+
1 banana
 +
2 cherry
 +
</syntaxhighlight>
  
====Factorial====
 
>>> math.factorial(5)
 
120
 
  
====PI====
+
'''Looping Through a String:'''
>>> math.pi
+
<syntaxhighlight lang="python">
3.1415926535897931
+
for x in "banana":
 +
    print(x)
 +
</syntaxhighlight>
  
====Funciones trigonométricas====
 
>>> math.sin(math.pi)
 
1.2246063538223773e-16
 
  
====Logaritmos====
+
'''The break Statement:'''
>>> math.log(11)
+
<syntaxhighlight lang="python">
2.3978952727983707
+
fruits = ["apple", "banana", "cherry"]
 +
for x in fruits:
 +
    print(x)
 +
    if x == "banana":
 +
          break
 +
</syntaxhighlight>
  
===Permutation===
 
Python propose un moyen simple de permuter deux variables (échanger leur valeur). Dans d'autres langages, il est nécessaire de passer par une troisième variable qui retient l'une des deux valeurs… ici c'est bien plus simple :
 
  
>>> a = 5
+
'''The continue Statement:''' With the continue statement we can stop the current iteration of the loop, and continue with the next:
>>> b = 32
+
<syntaxhighlight lang="python">
>>> a,b = b,a # permutation
+
fruits = ["apple", "banana", "cherry"]
>>> a
+
for x in fruits:
32
+
    if x == "banana":
>>> b
+
          continue
5
+
    print(x)
>>>
+
</syntaxhighlight>
  
===Asignar un mismo valor a varias variables===
 
On peut aussi affecter assez simplement une même valeur à plusieurs variables :
 
  
>>> x = y = 3
+
'''The range() Function:'''
>>> x
+
The range() function returns a sequence of numbers, starting from 0 by default, and increments by 1 (by default), and ends at a specified number.
3
+
<syntaxhighlight lang="python">
>>> y
+
for x in range(6):
3
+
    print(x)
 +
</syntaxhighlight>
 +
Note that range(6) is not the values of 0 to 6, but the values 0 to 5.
  
===Couper une instruction Python, pour l'écrire sur deux lignes ou plus===
 
>>> 1 + 4 - 3 * 19 + 33 - 45 * 2 + (8 - 3) \
 
... -6 + 23.5
 
-86.5
 
>>>
 
  
===Les opérateurs de comparaison===
+
'''The range() Function:'''
'''<''' Strictement inférieur à
+
The range() function returns a sequence of numbers, starting from 0 by default, and increments by 1 (by default), and ends at a specified number.
'''>''' Strictement supérieur à
+
<syntaxhighlight lang="python">
'''<=''' Inférieur ou égal à
+
for x in range(2, 30, 3):
'''>=''' Supérieur ou égal à
+
    print(x)
'''==''' Égal à
+
</syntaxhighlight>
'''!=''' Différent de
 
  
==Funciones más utilizadas==
 
Une fonction exécute un certain nombre d'instructions déjà enregistrées. En gros, c'est comme si vous enregistriez un groupe d'instructions pour faire une action précise et que vous lui donniez un nom. Vous n'avez plus ensuite qu'à appeler cette fonction par son nom autant de fois que nécessaire.
 
  
La plupart des fonctions ont besoin d'au moins un paramètre pour travailler sur une donnée ; ces paramètres sont des informations que vous passez à la fonction afin qu'elle travaille dessus.
+
<br />
  
Les fonctions s'utilisent en respectant la syntaxe suivante :
+
===While Loops===
nom_de_la_fonction(parametre_1,parametre_2,…,parametre_n)
+
https://www.w3schools.com/python/python_while_loops.asp
  
===La fonction « type »===
 
Une des grandes puissances de Python est qu'il comprend automatiquement de quel type est une variable et cela lors de son affectation.  Mais il est pratique de pouvoir savoir de quel type est une variable.
 
  
La syntaxe de cette fonction est simple :
+
<syntaxhighlight lang="python">
type(nom_de_la_variable)
+
i = 1
 +
while i < 6:
 +
    print(i)
 +
    i += 1
 +
</syntaxhighlight>
  
La fonction renvoie le type de la variable passée en paramètre.
 
>>> type(3)
 
<class 'int'>
 
  
===print - input===
+
'''The break Statement:'''
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
>>> a=3
+
i = 1
>>> b=4
+
while i < 6:
// Las variables int deben ser delimitadas entre comas:
+
    print(i)
>>> print("a =",a,"et b =",b)
+
    if i == 3:
a = 6 et b = 4
+
          break
 +
    i += 1
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
 +
'''The continue Statement:''' With the continue statement we can stop the current iteration, and continue with the next:
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
>>> a='3'
+
i = 0
>>> b='4'
+
while i < 6:
// Las variables str pueden ser delimitadas entre comas o entre +:
+
    i += 1
>>> print("a = "+a+" et b = "+b)
+
    if i == 3:
a = 6 et b = 4
+
          continue
 +
    print(i)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
 +
'''The else Statement:''' With the else statement we can run a block of code once when the condition no longer is true:
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
>>> print("Hello World !")
+
i = 1
Hello World !
+
while i < 6:
 +
  print(i)
 +
  i += 1
 +
else:
 +
  print("i is no longer less than 6")
 
</syntaxhighlight>
 
</syntaxhighlight>
  
  
'''input'''
+
<br />
 +
==Input and Output==
 +
Input and Output funtions:
 +
Esta página creo que no está actualizada para python 3, pero está bien organizada: https://en.wikibooks.org/wiki/Python_Programming/Input_and_Output#input.28.29
  
 +
 +
<br />
 +
===input===
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
 
name = input("What's your name? ")
 
name = input("What's your name? ")
Line 380: Line 844:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
====Input and Output funtions====
 
Esta página creo que no está actualizada para python 3, pero está bien organizada: https://en.wikibooks.org/wiki/Python_Programming/Input_and_Output#input.28.29
 
  
==Les structures conditionnelles==
+
<br />
 +
===Output===
 +
 
 +
 
 +
<br />
 +
====print====
 +
<blockquote>
 +
https://docs.python.org/3/tutorial/inputoutput.html
 +
 
 +
The '''''print()''''' function prints the specified message to the screen, or other standard output device:
 +
 
 +
<syntaxhighlight lang="python">
 +
print("Hello World")
 +
</syntaxhighlight>
 +
 
 +
 
 +
'''The full syntax of print() is:'''
 +
<syntaxhighlight lang="python">
 +
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
 +
</syntaxhighlight>
 +
 
 +
 
 +
'''Print more than one object:'''
 +
<syntaxhighlight lang="python">
 +
a = 5
 +
b = a
 +
 
 +
print('a =', a, '= b')
 +
</syntaxhighlight>
 +
 
 +
 
 +
'''print() with separator and end parameters:'''
 +
 
 +
<syntaxhighlight lang="python">
 +
a = 5
 +
print("a =", a, sep='00000', end='\n\n\n')
 +
print("a =", a, sep='0', end='')
 +
</syntaxhighlight>
 +
 
 +
 
 +
'''Print a tuple:'''
 +
<syntaxhighlight lang="python">
 +
x = ("apple", "banana", "cherry")
 +
print(x)
 +
</syntaxhighlight>
 +
</blockquote>
 +
 
 +
 
 +
<br />
 +
====The String format() Method====
 +
<blockquote>
 +
Basic usage of the str.format() method looks like this:
 +
<syntaxhighlight lang="python">
 +
print('{0} and {1}'.format('spam', 'eggs'))
 +
</syntaxhighlight>
 +
 
 +
Positional and keyword arguments can be arbitrarily combined. <span style="color:#FF0000">It is better to use keyword arguments because it is less likely to make mistake because of the position of the arguments.</span>
 +
<syntaxhighlight lang="python">
 +
print('The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred', other='Georg'))
 +
</syntaxhighlight>
  
===IF / ELSE / ELIF===
+
</blockquote>
>>> a = 5
 
>>> if a > 0:
 
...    print("a est supérieur à 0.") # Si no se coloca la identation dentro del if, se genera un error: IndentationError: expected an indented block
 
...
 
a est supérieur à 0.
 
  
  
>>> age = 21
+
<br />
>>> if age >= 18:
 
...    print("Vous êtes majeur.")
 
... else:
 
...    print("Vous êtes mineur.")
 
...
 
Vous êtes majeur.
 
  
 +
==Functions and Methods==
  
>>> a=5
 
>>> if a > 0: # Positif
 
...      print("a est positif.")
 
... elif a < 0:
 
...      print("a est négatif.")
 
... else:
 
...      print("a est nul.")
 
...
 
>>> a est positif.
 
  
==Definir una función==
+
<br />
 +
===How to define a Function===
  
<source lang=python>
+
<source lang="python">
 
def hello():
 
def hello():
 
     print("Hello")
 
     print("Hello")
Line 434: Line 937:
  
  
<source lang=python>
+
<source lang="python">
 
def factorial():
 
def factorial():
 
         n=int(input("Entrez un entier positif: "))
 
         n=int(input("Entrez un entier positif: "))
Line 445: Line 948:
 
</source>
 
</source>
  
==Exceptions==
 
  
<source language=python>
+
<br />
while True:
+
===Some important Functions and Methods===
    try:
 
        x = int(raw_input("Please enter a number: "))
 
        break
 
    except ValueError:
 
        print "Oops!  That was no valid number.  Try again..."
 
</source>
 
  
==OOP with Python==
 
https://python.swaroopch.com/oop.html
 
  
'''Object Oriented Programming'''
+
<br />
 +
====type====
 +
<blockquote>
 +
'''''type()'''''returns the type of these objects:
 +
<syntaxhighlight lang="python">
 +
a = ('apple', 'banana', 'cherry')
 +
b = "Hello World"
 +
c = 33
  
In all the programs we wrote till now, we have designed our program around functions i.e. blocks of statements which manipulate data. This is called the procedure-oriented way of programming. There is another way of organizing your program which is to combine data and functionality and wrap it inside something called an object. This is called the object oriented programming paradigm.
+
x = type(a)
 +
y = type(b)
 +
z = type(c)
 +
</syntaxhighlight>
  
'''Classes and objects''' are the two main aspects of object oriented programming. '''A class''' creates a new type where '''objects''' are instances of the class. An analogy is that you can have variables of type int which translates to saying that variables that store integers are variables which are instances (objects) of the int class.
+
</blockquote>
  
Note for Static Language Programmers:
 
  
Note that even integers are treated as objects (of the int class). This is unlike C++ and Java (before version 1.5) where integers are primitive native types.
+
<br />
  
See help(int) for more details on the class.
+
====List of Functions and Methods====
  
'''fields'''
+
https://www.w3schools.com/python/python_ref_functions.asp
  
Variables that belong to an object or class are referred to as fields.
 
  
'''Methods:'''
+
'''What’s the difference between Python functions and methods?''':
Objects can also have functionality by using functions that belong to a class. Such functions are called methods of the class.
 
  
 +
After reading this far in the article, I bet you have this question: '''''“Why on Earth do we have both functions and methods, when they practically do the same thing?”'''''
  
'''Attributes'''
+
I remember that when I started learning Python, I had a hard time answering this question. This is still the most confusing topic for newcomers in the Python-world.
  
the fields and methods can be referred to as the attributes of that class.
+
The official answer is that there is a small difference between them. Namely: a method always belongs to an object (e.g. in the <code>dog.append(4)</code> method <code>.append()</code> needed the <code>dog</code> object to be applicable), while a function doesn’t necessarily. To make this answer even more twisted: a method is in fact nothing else but a specific function. Got it? All methods are functions, but not all functions are methods!
 +
{| class="wikitable"
 +
|+
 +
!https://www.w3schools.com/python/python_reference.asp
 +
!Function/Method
 +
!Description
 +
!Example
 +
|-
 +
| rowspan="7" |<h5 style="text-align:left">Built-in functions</h5>
 +
https://docs.python.org/3/library/functions.html
  
'''Instance variables and class variables'''
+
https://www.w3schools.com/python/python_ref_functions.asp
 +
|'''<code>abs()</code>'''
 +
|Returns the absolute value of a numeric value
 +
|<code>abs(-4/3)</code>
 +
|-
 +
|'''<code>round()</code>'''
 +
|Returns the rounded value of a numeric value.
 +
|<code>round(-4/3)</code>
 +
|-
 +
|'''<code>min()</code>'''
 +
|Returns the smallest item of a list or of the typed-in arguments. It can even be a string.
 +
|<code>min(3,2,5)</code>
  
Fields are of two types - they can belong to each instance/object of the class or they can belong to the class itself. They are called instance variables and class variables respectively.
+
<code>min('c','a','b')</code>
 +
|-
 +
|'''<code>max()</code>'''
 +
|
 +
|
 +
|-
 +
|'''<code>sorted()</code>'''
 +
|It sorts a list into ascending order. The list can contain strings or numbers.
 +
|<code>a = [3, 2, 1]</code><code>sorted(a)</code>
 +
|-
 +
|'''<code>sum()</code>'''
 +
|It sums a list.
 +
|<code>a = [3, 2, 1]</code><code>sum(a)</code>
 +
|-
 +
|'''<code>len()</code>'''
 +
|Returns the number of elements in a list or the number of characters in a string.
 +
|<code>len('Hello!')</code>
 +
|-
 +
| rowspan="6" |<h5 style="text-align:left">String methods</h5>
 +
https://www.w3schools.com/python/python_ref_string.asp
 +
|'''<code>a.lower()</code>'''
 +
|Returns the lowercase version of a string.
 +
|<code>a = 'MuG'</code><code>a.lower()</code>
 +
|-
 +
|'''<code>a.upper()</code>'''
 +
|
 +
|
 +
|-
 +
|'''<code>a.strip()</code>'''
 +
|If the string has whitespaces at the beginning or at the end, it removes them.
 +
|<code>a = ' Mug '</code><code>a.strip()</code>
 +
|-
 +
|'''<code>a.replace('old', 'new')</code>'''
 +
|Replaces a given string with another string. Note that it’s case sensitive.
 +
|<code>a = 'muh'</code><code>a.replace('h','g')</code>
 +
|-
 +
|'''<code>a.split('delimiter')</code>'''
 +
|Splits your string into a list. Your argument specifies the delimiter.
 +
|<code>a = 'Hello World'</code><code>a.split(' ')</code>
 +
|-
 +
|'''<code>'delimiter'.join(a)</code>'''
 +
|It joins elements of a list into one string. You can specify the delimiter again.
 +
|<code>a = ['Hello', 'World']</code>
  
  
===The ''self''===
+
<code>' '.join(a)</code>
Class methods have only one specific difference from ordinary functions - they must have an extra first name that has to be added to the beginning of the parameter list, but you do not give a value for this parameter when you call the method, Python will provide it. This particular variable refers to the object itself, and by convention, it is given the name self.
+
|-
 +
| rowspan="4" |<h5 style="text-align:left">List methods</h5>
 +
https://docs.python.org/3/tutorial/datastructures.html
  
Say you have a class called MyClass and an instance of this class called myobject. When you call a method of this object as myobject.method(arg1, arg2), this is automatically converted by Python into MyClass.method(myobject, arg1, arg2) - this is all the special self is about.
+
https://www.w3schools.com/python/python_ref_list.asp
 +
|'''<code>a.append(arg)</code>'''
 +
|Adds an element to the end of our list.
 +
|<code>dog = ['Freddie', 9, True, 1.1, 2001, ['bone', 'little ball']]</code>
  
This also means that if you have a method which takes no arguments, then you still have to have one argument - the self.
 
  
 +
<code>dog.append(4)</code>
 +
|-
 +
|'''<code>a.remove(arg)</code>'''
 +
|We have to specify the element that we want to remove and Python will remove the first item with that value from the list.
 +
|<code>dog.remove(2001)</code>
 +
|-
 +
|'''<code>a.count(arg)</code>'''
 +
|Returns the number of the specified value in a list.
 +
|<code>dog.count('Freddie')</code>
 +
|-
 +
|'''<code>a.clear()</code>'''
 +
|removes all elements of the list. It will basically delete Freddie. No worries, we will get him back.
 +
|<code>dog.clear()</code>
 +
|-
 +
| rowspan="3" |<h5 style="text-align:left">Dictionaries methods</h5>
  
<source language=python>
+
https://www.w3schools.com/python/python_ref_dictionary.asp
class Person:
+
|'''<code>a.keys()</code>'''
    def say_hi(self):
+
|It returns all the keys from your dictionary.
        print('Hello, how are you?')
+
|
 +
|-
 +
|'''<code>dog_dict.values()</code>'''
 +
|It returns all the values from your dictionary.
 +
|
 +
|-
 +
|'''<code>dog_dict.clear()</code>'''
 +
|It deletes everything from your dictionary.
 +
|
 +
|-
 +
|<h5 style="text-align:left">Tuple methods</h5>
  
p = Person()
+
https://www.w3schools.com/python/python_ref_tuple.asp
p.say_hi()
+
|
# The previous 2 lines can also be written as
+
|
# Person().say_hi()
+
|
</source>
+
|-
 +
|<h5 style="text-align:left">Set methods</h5>
 +
https://www.w3schools.com/python/python_ref_set.asp
 +
|
 +
|
 +
|
 +
|-
 +
|<h5 style="text-align:left">File methods</h5>
 +
https://www.w3schools.com/python/python_ref_file.asp
 +
|
 +
|
 +
|
 +
|}
  
==Python Web Development==
 
https://www.fullstackpython.com/web-development.html
 
  
Web Frameworks for Python:
+
<br />
  
https://wiki.python.org/moin/WebFrameworks
+
==Exceptions==
  
https://fr.wikipedia.org/wiki/Liste_de_frameworks_Python
+
<syntaxhighlight lang="python">
 +
while True:
 +
    try:
 +
        x = int(raw_input("Please enter a number: "))
 +
        break
 +
    except ValueError:
 +
        print "Oops!  That was no valid number.  Try again..."
 +
</syntaxhighlight>
  
Ejemplos de Web Applications in Python: https://wiki.python.org/moin/WebApplications
 
  
Complete Python Web Course (15€): https://www.udemy.com/the-complete-python-web-course-learn-by-building-8-apps/
+
<br />
  
===Frameworks===
+
==Some example codes==
====Django====
 
Página oficial: https://www.djangoproject.com/
 
  
Documentación: https://docs.djangoproject.com/en/1.11/
 
=====Instalación de django=====
 
Documentación oficial sobre la instalación: https://docs.djangoproject.com/en/1.11/topics/install/#installing-official-release
 
  
En este video se muestra la instalación dentro del virtual environement: https://www.youtube.com/watch?v=oRGK9klCn00#t=107.337193
+
<br />
 +
===Factorial function using recursion===
 +
<span style="background:#E6E6FA; color:red">'''A VERY VERY NICE example of recursion is the factorial function:'''</span>
 +
<syntaxhighlight lang="python3">
 +
Example:
 +
4! = 4 * 3!
 +
3! = 3 * 2!
 +
2! = 2 * 1
 +
Replacing the calculated values gives us the following expression
 +
4! = 4 * 3 * 2 * 1
 +
</syntaxhighlight>
  
Aquí se muestran distintas formas de instalar django: https://www.howtoforge.com/tutorial/how-to-install-django-on-ubuntu/
 
  
======Prerequisitos======
+
<syntaxhighlight lang="python3">
 
+
def factorial(n):
'''1. Install Python'''
+
    if n == 1:
 
+
        return 1
Si ya está instalado. Setup python 3 as Default Python version:''' Ver [[Python#Cambiar la versión por defecto|Cambiar la versión por defecto]]
+
    else:
 
+
        return n * factorial(n-1)
'''2. Install Apache and mod_wsgi'''
+
</syntaxhighlight>
  
If you just want to experiment with Django, skip ahead to the next section; Django includes a lightweight web server you can use for testing, so you won’t need to set up Apache until you’re ready to deploy Django in production.
 
  
'''3. Get your database running'''
+
<br />
  
By default, the configuration uses SQLite. If you’re new to databases, or you’re just interested in trying Django, this is the easiest choice. SQLite is included in Python, so you won’t need to install anything else to support your database.
+
==[[Python for Data Science]]==
  
When starting your first real project, however, you may want to use a more scalable database like PostgreSQL, to avoid database-switching headaches down the road.
 
  
If you plan to use Django’s database API functionality, you’ll need to make sure a database server is running. Django supports many different database servers and is officially supported with PostgreSQL, MySQL, Oracle and SQLite.
+
<br />
 +
==[[Manim]]==
  
'''4. Remove any old versions of Django'''
 
  
If you are upgrading your installation of Django from a previ
+
<br />

Latest revision as of 15:47, 11 September 2024


https://www.python.org/

https://docs.python.org/3/



Online Python Interpreters

These ones supports many languages:



Installation


Installing python on Ubuntu

The last version of Python is usually installed this way. It can be verified in many sources: https://phoenixnap.com/kb/how-to-install-python-3-ubuntu

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.8

python --version



Installing Anaconda


Display the installed version

Para ver la versión por defecto:

python --version

O simplemente entrando a la línea de comandos python a través de:

python

Ahora, en un SO pueden haber más de una versión instalada. Para ver que versiones de python se encuentran ya instaladas en nuestro sistema operativo podemos ir al directorio /usr/bin y ver que ejecutables de python se encuentran:

ls /usr/bin/python
python      python2     python2.7   python3     python3.5   python3.5m  python3m    pythontex   pythontex3

y para ver la versión exacta (Python 3.5.2) ejecutamos python3.5 y este nos muestra la versión exacta al entrar a la línea de comandos python:

python3.5
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>



Change the default version

https://linuxconfig.org/how-to-change-from-default-to-alternative-python-version-on-debian-linux



Change python version on per user basis

To change a python version on per user basis you simply create an alias within user's home directory. Open ~/.bashrc file and add new alias to change your default python executable:

alias python='/usr/bin/python3.4'

Once you make the above change, re-login or source your .bashrc file:

. ~/.bashrc



Change python version system-wide

To change python version system-wide we can use update-alternatives command.

Logged in as a root user. First we can list all available python alternatives:

# update-alternatives --list python
update-alternatives: error: no alternatives for python

El comando anterio debería mostrar las alternativas (por ejemplo python2.7 , python3.5) que ya han sido incluidas a través del comando update-alternatives --install. The above error message means that no python alternatives has been recognized by update-alternatives command. For this reason we need to update our alternatives table and include both python2.7 and python3.5:

Debemos entonces contruir la tabla de alternativas de la siguiente forma:

# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode
# update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2
update-alternatives: using /usr/bin/python3.4 to provide /usr/bin/python (python) in auto mode

The --install option take multiple arguments from which it will be able to create a symbolic link. The last argument specified it priority means, if no manual alternative selection is made the alternative with the highest priority number will be set. In our case we have set a priority 2 for /usr/bin/python3.4 and as a result the /usr/bin/python3.5 was set as default python version automatically by update-alternatives command.

Es decir, si queremos que python2.7 sea la versión por defecto podemos ejecutar el comando update-alternatives --intall de la forma mostrada arriba y ajustar el último argumento de forma tal que el mayor valor sea asociado a la versión que queremos por defecto.



IDE for Python


PyCharm

https://www.jetbrains.com/pycharm/


Installation:
https://www.jetbrains.com/help/pycharm/installation-guide.html

sudo snap install pycharm-community --classic



Visual Studio Code

Python in Visual Studio Code

https://code.visualstudio.com/docs/languages/python



Jupyter

.



Atom

https://flight-manual.atom.io/getting-started/sections/installing-atom/



Python on eclipse

Para utilizar Python en Eclipse debemos instalar PyDev:

Help > Eclipse Marketplace Find: PyDev



Sublime Text

https://www.sublimetext.com/

https://en.wikipedia.org/wiki/Sublime_Text

Sublime Text is a proprietary cross-platform source code editor with a Python application programming interface (API). It natively supports many programming languages and markup languages, and functions can be added by users with plugins.



Installation

https://linuxconfig.org/how-to-install-sublime-text-on-ubuntu-18-04-bionic-beaver-linux

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt-add-repository "deb https://download.sublimetext.com/ apt/stable/"
sudo apt install sublime-text



Keyboard shortcut to comment lines in Sublime Text 3

http://stackoverflow.com/questions/17742781/keyboard-shortcut-to-comment-lines-in-sublime-text-3

https://forum.sublimetext.com/t/st3-3012-toggle-comments-broken/8930/8

As a workaround, go to Preferences->Key Bindings - User and add these keybindings (if you're using Linux):

{ "keys": ["ctrl+7"], "command": "toggle_comment", "args": { "block": false } },
{ "keys": ["ctrl+shift+7"], "command": "toggle_comment", "args": { "block": true } }



Indentation

https://stackoverflow.com/questions/9474090/how-do-i-force-sublime-text-to-indent-two-spaces-per-tab

If you want it for all files, go to Preferences -> Settings - Default/User. But as several comments below indicate, Syntax Specific settings can limit it to just the languages you choose.

To limit this configuration to Ruby files, first open up a Ruby file in the editor, and then go to Preferences -> Settings -> More -> Syntax Specific -> User. This should open a settings window named Ruby.sublime-settings

Save these settings:

{
  "tab_size": 2,
  "translate_tabs_to_spaces": true,
  "detect_indentation": false
}



Crear un proyecto en Sublime Text

  1. Abrimos una nueva ventana: File > New Window
  2. Add folder to project
  3. Save project as: es apropiado guardarlo en el mismo directorio en donde fue creado el proyecto.

Esto creará dos archivos:

  • nombre-111.sublime-project
  • nombre-111.sublime-workspace : Este es el que debemos abrir para ingresar al proyecto.



Using Python


Python Shell

From the terminal, you can start the Python Shell/Interpreter (Also know as Python Interactive Shell) using the command:

python3.x



Premiers pas avec l interpreteur de commandes Python


Operations courantes
>>> 3 + 4
7
>>> 9.5 + 2
11.5
>>> 3.11 + 2.08
5.1899999999999995



Writing and Running a Python code

You can use your favorite Text Editor or IDE to write your Python code:

example.py
#!/usr/bin/python3.6

c=input("Ingrese un caracter: ")
e=int(input("Entrez un entier: "))

for i in range(1,e+1):
	for j in range(1,i+1):
		print(c,end="")
	print()


  • If we use the line #!/usr/bin/python3.6 to indicate the path to the Python Interpreter, then we can then run our code as a Executable file this way:
./example.py


  • However, the most common way is not including #!/usr/bin/python3.6 and calling the Python Interpreter through the python command:
python3 example.py


  • Of course, you can also run a Python program through a button on a IDE Graphical Interface.



pip and virtualenv

https://pypi.org/project/pip/

https://pip.pypa.io/en/stable/installation/


To display the version of pip:

python3.11 -m pip --version


Upgrade pip:

python3 -m pip install --upgrade pip


pip install librarie


Para especificar la versión de python a la cual será instalada la libreria:

python3 -m pip install pandas

En este caso, cuando usemos python3 «pandas» estará disponible, pero no necesariamente para otras versiones de python


To list all pakages installed :

pip list
python3.11 -m pip list


How can I install packages using pip according to the requirements.txt

pip install -r requirements.txt
python3.8 -m pip install -r requirements.txt


Puede ser necesario instalar venv para la version de python deseada:

sudo apt install python3.11-venv


Crear un virtualenv:

python3 -m venv myenv  # This will install a local copy of Python and pip into a directory called myprojectenv


Activar el virtualenv:

source myenv/bin/activate


Para especificar la versión de Python que del virtualenv: https://stackoverflow.com/questions/45293436/how-to-specify-python-version-used-to-create-virtual-environment

virtualenv -p python3.8 myproject_env    # Creates a new default python3.8 (python3.8 must be a valid command i.e found in the PATH)


Para salir del virtualenv:

(myproject_env)$ deactivate



Keep a python script running on a remote server


Screen

Create a screen:

screen -S bot

Disconnect: Ctrl+A+D

Reconnecting:

screen -r bot 


List screens:

screen -ls


Kill all sessions

killall screen


Kill a specific session

screen -S bot -X quit


Creating the screen without attaching to it

screen -dmS bot


Activating the venv on the screen previously created without attaching to it

screen -S bot -p 0 -X stuff $'source .venv/bin/activate\n' 


To create the screen and activate the venv at the same time without attaching to it:

screen -dmS bot bash -c 'source .venv/bin/activate && exec sh'    # This is working but the prompt is sh so not very good. (&& can be replaced by ;)
screen -dmS bot bash -c 'source .venv/bin/activate && exec bash'  # This is not activating the venv



Data types

https://docs.python.org/2.0/ref/types.html

Python_3._The_standard_type_hierarchy.png

In this source you can find a very good documentation about Python Data Types and the most important Operations and Methods for each Data Type: https://www.w3schools.com/python/python_datatypes.asp

None
Ellipsis
Numbers Integers Plain integers
Long integers
Floating point numbers
Complex numbers
Sequences Immutable sequences Strings
Unicode
Tuples
Mutable sequences Lists
Mappings Dictionaries
Callable types User-defined functions
User-defined methods
Built-in functions
Built-in methods
Classes
Class instances
Modules
Classes
Class instances
Files
Internal types Code objects
Frame objects
Traceback objects
Slice objects


Getting the Data Type: You can get the data type of any object by using the type() function:

print(type(x))
Source: https://www.w3schools.com/python/python_datatypes.asp
Type/Class Description Example Setting the Specific Data Type Operations/Functions/Methods
Numeric Types int Int, or integer, is a whole number, positive or negative, without decimals, of unlimited length. x = 20 x = int(20) https://www.w3schools.com/python/python_numbers.asp
float Float, or "floating point number" is a number, positive or negative, containing one or more decimals. x = 20.5 x = float(20.5)
complex Complex numbers are written with a "j" as the imaginary part x = 1j x = complex(1j)
Text Type str Strings are Arrays: Like many other popular programming languages, strings in Python are arrays of bytes representing unicode characters. However, Python does not have a character data type, a single character is simply a string with a length of 1. x = "Hello World" x = str("Hello World") https://www.w3schools.com/python/python_strings.asp
Boolean Type bool Booleans represent one of two values: True or False. x = True x = bool(5) https://www.w3schools.com/python/python_booleans.asp
Binary Types bytes x = b"Hello" x = bytes(5)
bytearray x = bytearray(5) x = bytearray(5)
memoryview x = memoryview(bytes(5)) x = memoryview(bytes(5))
Python Collections (Arrays) Sequence Types list A list is a collection which is ordered and changeable. x = ["apple", "banana", "cherry"] x = list(("apple", "banana", "cherry")) https://www.w3schools.com/python/python_lists.asp


Nice way to create a list:
lista = [x**2 for x in range(12) if x%3 == 0]
print(lista)
# Output:
[0, 9, 36, 81]

tuple A tuple is a collection which is ordered and unchangeable. x = ("apple", "banana", "cherry") x = tuple(("apple", "banana", "cherry")) https://www.w3schools.com/python/python_tuples.asp
Array Python does not have built-in support for Arrays. You have to import it from a Library:

from numpy import array

x = array([3, 6, 9, 12])


There are some differences between Array and List: https://medium.com/backticks-tildes/list-vs-array-python-data-type-40ac4f294551

Lists are containers for elements having differing data types but arrays are used as containers for elements of the same data type.

Arrays are specially optimised for arithmetic computations, Ex:

x = array([3, 6, 9, 12])

divided_x = x/2 # This would return an error if using List

print(divided_x)

[1.5 3. 4.5 6. ]

Python_for_Data_Science#Arrays
range x = range(6) x = range(6)
Mapping Type dict A dictionary is a collection which is unordered, changeable and indexed. In Python dictionaries are written with curly brackets, and they have keys and values. x = {"name" : "John", "age" : 36} x = dict(name="John", age=36) https://www.w3schools.com/python/python_dictionaries.asp
Set Types set A set is a collection which is unordered and unindexed. x = {"apple", "banana", "cherry"} x = set(("apple", "banana", "cherry")) https://www.w3schools.com/python/python_sets.asp
frozenset x = frozenset({"apple", "banana", "cherry"}) x = frozenset(("apple", "banana", "cherry"))




Operators

Operator Name/Description Example Same as
Python

s2

Java JS R Python Java F R
Arithmetic Operators + + Addition x + y
- - Subtraction x - y
* * Multiplication x * y
/ / Division x / y
% % Modulus x % y
** java.util.Math Exponentiation x ** y import java.util.Math

Double result = Math.pow(number, exponent);

// Floor division x // y
++ Increment: Increases the value of a variable by 1 ++x
-- Decrement: Decreases the value of a variable by 1 --x
Assignment Operators = = x = 5
+= += x+= 3 x = x + 3
-= -= x -= 3 x = x - 3
*= *= x *= 3 x = x * 3
/= /= x /= 3 x = x / 3
%= %= x %= 3 x = x % 3
//= x //= 3 x = x // 3
**= x **= 3 x = x ** 3
&= &= x &= 3 x = x & 3
|= |= x |= 3 x = x | 3
^= ^= x ^= 3 x = x ^ 3
>>= >>= x >>= 3 x = x >> 3
<<= <<= x <<= 3 x = x << 3
Comparison Operators == == Equal x == y
!= != Not equal x != y
> > Greater than x > y
< < Less than x < y
>= >= Greater than or equal to x >= y
<= <= Less than or equal to x <= y
Logical Operators and && Logical and: Returns True if both statements are true x < 5 and x < 10 x < 5 && x < 10
or || Logical or: Returns True if one of the statements is true x < 5 or x < 4 x < 5 || x < 4
not ! Logical not: Reverse the result, returns False if the result is true not(x < 5 and x < 10) !(x < 5 && x < 10)
Identity Operators is Returns true if both variables are the same object x is y
is not Returns true if both variables are not the same object x is not y
Membership Operators in Returns True if a sequence with the specified value is present in the object x in y
not in Returns True if a sequence with the specified value is not present in the object x not in y
Bitwise Operators &
AND

Sets each bit to 1 if both bits are 1

| OR

Sets each bit to 1 if one of two bits is 1

^ XOR

Sets each bit to 1 if only one of two bits is 1

~ NOT

Inverts all the bits

<< Zero fill left shift

Shift left by pushing zeros in from the right and let the leftmost bits fall off

>> Signed right shift

Shift right by pushing copies of the leftmost bit in from the left, and let the rightmost bits fall off

Added by myself
String concatenation +
"Coucou ' + 'c\'est ' + 'nous !";
conca()
'Coucou '.concat('c\'est ', 'nous !');
join()
['Coucou ', 'c\'est ', 'nous !'].join();



Control flow statements


If statements

https://www.w3schools.com/python/python_conditions.asp


a = 200
b = 33
if b > a:
     print("b is greater than a")
elif a == b:
     print("a and b are equal")
else:
     print("a is greater than b")


Short Hand If:

 if a > b: print("a is greater than b")


One line if else statement, with 3 conditions:

print("A") if a > b else print("=") if a == b else print("B")



For Loops

https://www.w3schools.com/python/python_for_loops.asp


Print each fruit in a fruit list:

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
     print(fruit)

# Output:
apple
banana
cherry


fruits = ["apple", "banana", "cherry"]
for fruit_no, fruit in enumerate(fruits):
     print(fruit_no, fruit)

# Output:
0 apple
1 banana
2 cherry


Looping Through a String:

for x in "banana":
     print(x)


The break Statement:

fruits = ["apple", "banana", "cherry"]
for x in fruits:
     print(x)
     if x == "banana":
          break


The continue Statement: With the continue statement we can stop the current iteration of the loop, and continue with the next:

fruits = ["apple", "banana", "cherry"]
for x in fruits:
     if x == "banana":
          continue
     print(x)


The range() Function: The range() function returns a sequence of numbers, starting from 0 by default, and increments by 1 (by default), and ends at a specified number.

for x in range(6):
     print(x)

Note that range(6) is not the values of 0 to 6, but the values 0 to 5.


The range() Function: The range() function returns a sequence of numbers, starting from 0 by default, and increments by 1 (by default), and ends at a specified number.

for x in range(2, 30, 3):
     print(x)



While Loops

https://www.w3schools.com/python/python_while_loops.asp


i = 1
while i < 6:
     print(i)
     i += 1


The break Statement:

i = 1
while i < 6:
     print(i)
     if i == 3:
          break
     i += 1


The continue Statement: With the continue statement we can stop the current iteration, and continue with the next:

i = 0
while i < 6:
     i += 1
     if i == 3:
          continue
     print(i)


The else Statement: With the else statement we can run a block of code once when the condition no longer is true:

i = 1
while i < 6:
  print(i)
  i += 1
else:
  print("i is no longer less than 6")



Input and Output

Input and Output funtions: Esta página creo que no está actualizada para python 3, pero está bien organizada: https://en.wikibooks.org/wiki/Python_Programming/Input_and_Output#input.28.29



input

name = input("What's your name? ")
print("Nice to meet you " + name + "!")
age = input("Your age? ")
print("So, you are already " + age + " years old, " + name + "!")


La función input asigna por defecto una variable de tipo str. Si queremos que la variable sea tipo int o list:

>>> population = int(input("Population of Toronto? "))
Population of Toronto? 2615069
>>> print(population, type(population))
2615069 <class 'int'>
>>> cities_canada = eval(input("Largest cities in Canada: "))
Largest cities in Canada: ["Toronto", "Montreal", "Calgara", "Ottawa"]
>>> print(cities_canada, type(cities_canada))
['Toronto', 'Montreal', 'Calgara', 'Ottawa'] <class 'list'>



Output


print

https://docs.python.org/3/tutorial/inputoutput.html

The print() function prints the specified message to the screen, or other standard output device:

print("Hello World")


The full syntax of print() is:

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)


Print more than one object:

a = 5
b = a

print('a =', a, '= b')


print() with separator and end parameters:

a = 5
print("a =", a, sep='00000', end='\n\n\n')
print("a =", a, sep='0', end='')


Print a tuple:

x = ("apple", "banana", "cherry")
print(x)



The String format() Method

Basic usage of the str.format() method looks like this:

print('{0} and {1}'.format('spam', 'eggs'))

Positional and keyword arguments can be arbitrarily combined. It is better to use keyword arguments because it is less likely to make mistake because of the position of the arguments.

print('The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred', other='Georg'))



Functions and Methods


How to define a Function

def hello():
    print("Hello")

def area(width, height):
    return width * height

def print_welcome(name):
    print("Welcome", name)

hello()
hello()

print_welcome("Fred")
w = 4
h = 5
print("width =", w, " height =", h, " area =", area(w, h))


def factorial():
        n=int(input("Entrez un entier positif: "))
        fac=1
        for i in range(n,1,-1):
                fac=fac*i
        return(fac)

print(factorial())



Some important Functions and Methods


type

type()returns the type of these objects:

a = ('apple', 'banana', 'cherry')
b = "Hello World"
c = 33

x = type(a)
y = type(b)
z = type(c)



List of Functions and Methods

https://www.w3schools.com/python/python_ref_functions.asp


What’s the difference between Python functions and methods?:

After reading this far in the article, I bet you have this question: “Why on Earth do we have both functions and methods, when they practically do the same thing?”

I remember that when I started learning Python, I had a hard time answering this question. This is still the most confusing topic for newcomers in the Python-world.

The official answer is that there is a small difference between them. Namely: a method always belongs to an object (e.g. in the dog.append(4) method .append() needed the dog object to be applicable), while a function doesn’t necessarily. To make this answer even more twisted: a method is in fact nothing else but a specific function. Got it? All methods are functions, but not all functions are methods!

https://www.w3schools.com/python/python_reference.asp Function/Method Description Example
Built-in functions

https://docs.python.org/3/library/functions.html

https://www.w3schools.com/python/python_ref_functions.asp

abs() Returns the absolute value of a numeric value abs(-4/3)
round() Returns the rounded value of a numeric value. round(-4/3)
min() Returns the smallest item of a list or of the typed-in arguments. It can even be a string. min(3,2,5)

min('c','a','b')

max()
sorted() It sorts a list into ascending order. The list can contain strings or numbers. a = [3, 2, 1]sorted(a)
sum() It sums a list. a = [3, 2, 1]sum(a)
len() Returns the number of elements in a list or the number of characters in a string. len('Hello!')
String methods

https://www.w3schools.com/python/python_ref_string.asp

a.lower() Returns the lowercase version of a string. a = 'MuG'a.lower()
a.upper()
a.strip() If the string has whitespaces at the beginning or at the end, it removes them. a = ' Mug 'a.strip()
a.replace('old', 'new') Replaces a given string with another string. Note that it’s case sensitive. a = 'muh'a.replace('h','g')
a.split('delimiter') Splits your string into a list. Your argument specifies the delimiter. a = 'Hello World'a.split(' ')
'delimiter'.join(a) It joins elements of a list into one string. You can specify the delimiter again. a = ['Hello', 'World']


' '.join(a)

List methods

https://docs.python.org/3/tutorial/datastructures.html

https://www.w3schools.com/python/python_ref_list.asp

a.append(arg) Adds an element to the end of our list. dog = ['Freddie', 9, True, 1.1, 2001, ['bone', 'little ball']]


dog.append(4)

a.remove(arg) We have to specify the element that we want to remove and Python will remove the first item with that value from the list. dog.remove(2001)
a.count(arg) Returns the number of the specified value in a list. dog.count('Freddie')
a.clear() removes all elements of the list. It will basically delete Freddie. No worries, we will get him back. dog.clear()
Dictionaries methods

https://www.w3schools.com/python/python_ref_dictionary.asp

a.keys() It returns all the keys from your dictionary.
dog_dict.values() It returns all the values from your dictionary.
dog_dict.clear() It deletes everything from your dictionary.
Tuple methods

https://www.w3schools.com/python/python_ref_tuple.asp

Set methods

https://www.w3schools.com/python/python_ref_set.asp

File methods

https://www.w3schools.com/python/python_ref_file.asp



Exceptions

while True:
     try:
         x = int(raw_input("Please enter a number: "))
         break
     except ValueError:
         print "Oops!  That was no valid number.  Try again..."



Some example codes


Factorial function using recursion

A VERY VERY NICE example of recursion is the factorial function:

Example:
4! = 4 * 3!
3! = 3 * 2!
2! = 2 * 1
Replacing the calculated values gives us the following expression
4! = 4 * 3 * 2 * 1


def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)



Python for Data Science


Manim