Difference between revisions of "Python"
Adelo Vieira (talk | contribs) (→Python en eclipse) |
Adelo Vieira (talk | contribs) (→Data types) |
||
(123 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | |||
− | + | <br /> | |
+ | https://www.python.org/ | ||
− | https:// | + | https://docs.python.org/3/ |
− | |||
− | + | <br /> | |
+ | ==Online Python Interpreters== | ||
+ | These ones supports many languages: | ||
− | + | *https://repl.it/ | |
+ | *https://www.onlinegdb.com | ||
− | |||
− | + | <br /> | |
+ | ==Installation== | ||
− | == | + | <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 | ||
+ | |||
+ | 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 /> | |
− | + | ===[[Python_for_Data_Science#Anaconda|Installing Anaconda]]=== | |
− | |||
− | |||
− | === | + | <br /> |
+ | ===Display the installed version=== | ||
Para ver la versión por defecto: | Para ver la versión por defecto: | ||
python --version | python --version | ||
Line 45: | Line 54: | ||
>>> | >>> | ||
− | === | + | |
+ | <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 55: | 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. | To change python version system-wide we can use '''update-alternatives''' command. | ||
Line 62: | Line 77: | ||
update-alternatives: error: no alternatives for 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 | + | 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: | Debemos entonces contruir la tabla de alternativas de la siguiente forma: | ||
Line 72: | Line 87: | ||
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 | + | 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 | |
− | |||
− | https:// | ||
− | |||
− | |||
− | + | <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> | ||
− | |||
− | === | + | <br /> |
− | + | ====Crear un proyecto en Sublime Text==== | |
− | + | #Abrimos una nueva ventana: File > New Window | |
− | + | #Add folder to project | |
− | + | #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. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | <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 | ||
7 | 7 | ||
− | |||
− | |||
− | |||
>>> 9.5 + 2 | >>> 9.5 + 2 | ||
Line 238: | Line 221: | ||
5.1899999999999995 | 5.1899999999999995 | ||
− | |||
− | |||
− | + | <br /> | |
− | + | ===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> | </syntaxhighlight> | ||
− | + | '''Activar el virtualenv:''' | |
− | + | <syntaxhighlight lang="shell"> | |
− | <syntaxhighlight lang=" | + | source myenv/bin/activate |
− | |||
− | |||
− | |||
− | |||
</syntaxhighlight> | </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=" | + | <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> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | <syntaxhighlight lang=" | + | '''Para salir del virtualenv:''' |
− | + | <syntaxhighlight lang="shell"> | |
− | + | (myproject_env)$ deactivate | |
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | + | <br /> | |
− | + | ==Keep a python script running on a remote server== | |
− | |||
− | + | <br /> | |
+ | ===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 | |
− | |||
− | |||
− | |||
− | + | <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''' | ||
+ | | | ||
+ | | | ||
+ | |} | ||
− | |||
− | |||
− | + | '''Getting the Data Type:''' You can get the data type of any object by using the type() function: | |
− | + | print(type(x)) | |
− | + | {| class="wikitable" | |
− | + | |+Source: https://www.w3schools.com/python/python_datatypes.asp | |
− | </ | + | ! colspan="2" | |
+ | !Type/Class | ||
+ | !Description | ||
+ | !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 | ||
− | |||
− | |||
− | |||
− | |||
− | + | '''Nice way to create a list:'''<syntaxhighlight lang="python3"> | |
+ | lista = [x**2 for x in range(12) if x%3 == 0] | ||
+ | print(lista) | ||
+ | # Output: | ||
+ | [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> | |
− | |||
− | + | 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: | |
− | + | <code>x = array([3, 6, 9, 12])</code> | |
− | + | <code>divided_x = x/2</code> # This would return an error if using List | |
− | + | <code>print(divided_x)</code> | |
− | ''' | + | [1.5 3. 4.5 6. ] |
+ | | | ||
+ | | | ||
+ | |[[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 /> | ||
− | |||
− | + | <br /> | |
− | + | ==Operators== | |
− | + | {{#lst:Java|operators}} | |
− | |||
− | + | <br /> | |
+ | ==Control flow statements== | ||
− | |||
− | |||
− | |||
+ | <br /> | ||
+ | ===If statements=== | ||
+ | https://www.w3schools.com/python/python_conditions.asp | ||
− | |||
− | |||
− | |||
− | |||
− | + | <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> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | '''Short Hand If:''' | |
− | + | <syntaxhighlight lang="python"> | |
− | + | if a > b: print("a is greater than b") | |
+ | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | + | '''One line if else statement, with 3 conditions:''' | |
+ | <syntaxhighlight lang="python"> | ||
+ | print("A") if a > b else print("=") if a == b else print("B") | ||
+ | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | + | <br /> | |
− | + | ===For Loops=== | |
+ | https://www.w3schools.com/python/python_for_loops.asp | ||
− | |||
− | |||
− | + | '''Print each fruit in a fruit list:''' | |
− | + | <syntaxhighlight lang="python"> | |
− | + | fruits = ["apple", "banana", "cherry"] | |
− | + | for fruit in fruits: | |
+ | print(fruit) | ||
+ | # Output: | ||
+ | apple | ||
+ | banana | ||
+ | cherry | ||
+ | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | + | <syntaxhighlight lang="python"> | |
− | + | fruits = ["apple", "banana", "cherry"] | |
− | + | for fruit_no, fruit in enumerate(fruits): | |
+ | print(fruit_no, fruit) | ||
− | + | # Output: | |
+ | 0 apple | ||
+ | 1 banana | ||
+ | 2 cherry | ||
+ | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | + | '''Looping Through a String:''' | |
+ | <syntaxhighlight lang="python"> | ||
+ | for x in "banana": | ||
+ | print(x) | ||
+ | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | + | '''The break Statement:''' | |
− | + | <syntaxhighlight lang="python"> | |
− | + | fruits = ["apple", "banana", "cherry"] | |
− | + | for x in fruits: | |
− | + | print(x) | |
− | + | if x == "banana": | |
− | + | break | |
− | + | </syntaxhighlight> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | '''The continue Statement:''' With the continue statement we can stop the current iteration of the loop, and continue with the next: | |
+ | <syntaxhighlight lang="python"> | ||
+ | fruits = ["apple", "banana", "cherry"] | ||
+ | for x in fruits: | ||
+ | if x == "banana": | ||
+ | continue | ||
+ | print(x) | ||
+ | </syntaxhighlight> | ||
− | |||
− | + | '''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. | ||
+ | <syntaxhighlight lang="python"> | ||
+ | for x in range(6): | ||
+ | print(x) | ||
+ | </syntaxhighlight> | ||
+ | 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. | ||
+ | <syntaxhighlight lang="python"> | ||
+ | for x in range(2, 30, 3): | ||
+ | print(x) | ||
+ | </syntaxhighlight> | ||
− | |||
− | + | <br /> | |
− | + | ===While Loops=== | |
− | + | https://www.w3schools.com/python/python_while_loops.asp | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | <syntaxhighlight lang="python"> | ||
+ | i = 1 | ||
+ | while i < 6: | ||
+ | print(i) | ||
+ | i += 1 | ||
+ | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | '''The break Statement:''' | |
− | + | <syntaxhighlight lang="python"> | |
− | + | i = 1 | |
+ | while i < 6: | ||
+ | print(i) | ||
+ | if i == 3: | ||
+ | break | ||
+ | i += 1 | ||
+ | </syntaxhighlight> | ||
− | + | '''The continue Statement:''' With the continue statement we can stop the current iteration, and continue with the next: | |
− | + | <syntaxhighlight lang="python"> | |
− | + | i = 0 | |
− | + | while i < 6: | |
− | + | i += 1 | |
− | + | if i == 3: | |
+ | continue | ||
+ | print(i) | ||
+ | </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"> | |
+ | i = 1 | ||
+ | while i < 6: | ||
+ | print(i) | ||
+ | i += 1 | ||
+ | else: | ||
+ | print("i is no longer less than 6") | ||
+ | </syntaxhighlight> | ||
− | |||
− | |||
− | + | <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"> | ||
+ | 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 + "!") | ||
+ | </syntaxhighlight> | ||
− | |||
− | + | La función input asigna por defecto una variable de tipo '''str'''. Si queremos que la variable sea tipo '''int''' o '''list''': | |
− | + | <syntaxhighlight lang="python"> | |
+ | >>> population = int(input("Population of Toronto? ")) | ||
+ | Population of Toronto? 2615069 | ||
+ | >>> print(population, type(population)) | ||
+ | 2615069 <class 'int'> | ||
+ | </syntaxhighlight> | ||
− | + | <syntaxhighlight lang="python"> | |
+ | >>> 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'> | ||
+ | </syntaxhighlight> | ||
− | |||
− | + | <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> | ||
− | + | </blockquote> | |
− | |||
− | + | <br /> | |
− | + | ==Functions and Methods== | |
− | |||
− | + | <br /> | |
+ | ===How to define a Function=== | ||
− | + | <source lang="python"> | |
+ | 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)) | ||
+ | </source> | ||
− | |||
− | |||
+ | <source lang="python"> | ||
+ | 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()) | |
+ | </source> | ||
− | |||
− | + | <br /> | |
+ | ===Some important Functions and Methods=== | ||
− | |||
− | + | <br /> | |
+ | ====type==== | ||
+ | <blockquote> | ||
+ | '''''type()'''''returns the type of these objects: | ||
+ | <syntaxhighlight lang="python"> | ||
+ | a = ('apple', 'banana', 'cherry') | ||
+ | b = "Hello World" | ||
+ | c = 33 | ||
− | + | x = type(a) | |
− | + | y = type(b) | |
+ | z = type(c) | ||
+ | </syntaxhighlight> | ||
− | + | </blockquote> | |
− | |||
− | |||
− | |||
− | |||
− | + | <br /> | |
− | |||
− | + | ====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?”''''' | |
− | |||
− | This | + | 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 <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 | ||
+ | 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> | ||
− | + | <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> | ||
− | |||
− | + | <code>' '.join(a)</code> | |
+ | |- | ||
+ | | rowspan="4" |<h5 style="text-align:left">List methods</h5> | ||
+ | https://docs.python.org/3/tutorial/datastructures.html | ||
+ | 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> | ||
− | |||
− | + | <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> | ||
− | + | https://www.w3schools.com/python/python_ref_dictionary.asp | |
+ | |'''<code>a.keys()</code>''' | ||
+ | |It returns all the keys from your dictionary. | ||
+ | | | ||
+ | |- | ||
+ | |'''<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> | ||
− | + | https://www.w3schools.com/python/python_ref_tuple.asp | |
− | + | | | |
− | + | | | |
− | + | | | |
+ | |- | ||
+ | |<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 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |} | ||
− | |||
− | |||
− | + | <br /> | |
− | + | ==Exceptions== | |
− | + | <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> | ||
− | |||
− | |||
− | + | <br /> | |
− | |||
− | + | ==Some example codes== | |
− | |||
− | + | <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> | ||
− | |||
− | |||
− | + | <syntaxhighlight lang="python3"> | |
− | + | def factorial(n): | |
− | + | if n == 1: | |
− | + | return 1 | |
− | + | else: | |
− | + | return n * factorial(n-1) | |
− | + | </syntaxhighlight> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | <br /> | |
+ | ==[[Python for Data Science]]== | ||
− | |||
− | + | <br /> | |
− | + | ==[[Manim]]== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | <br /> |
Latest revision as of 14:47, 11 September 2024
Contents
- 1 Online Python Interpreters
- 2 Installation
- 3 IDE for Python
- 4 Using Python
- 5 pip and virtualenv
- 6 Keep a python script running on a remote server
- 7 Data types
- 8 Operators
- 9 Control flow statements
- 10 Input and Output
- 11 Functions and Methods
- 12 Exceptions
- 13 Some example codes
- 14 Python for Data Science
- 15 Manim
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://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
- Abrimos una nueva ventana: File > New Window
- Add folder to project
- 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://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
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))
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
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:
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:
[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 | 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
|
||||||
// | 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
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 |
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)
| |
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 |
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']
| |
List methods |
a.append(arg)
|
Adds an element to the end of our list. | dog = ['Freddie', 9, True, 1.1, 2001, ['bone', 'little ball']]
|
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 |
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 |
|||
Set methods |
|||
File methods |
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