{"id":1173,"date":"2017-09-28T19:12:24","date_gmt":"2017-09-28T17:12:24","guid":{"rendered":"http:\/\/bioinfo2.ugr.es\/biocomputacion\/?page_id=1173"},"modified":"2020-11-03T11:38:49","modified_gmt":"2020-11-03T09:38:49","slug":"python","status":"publish","type":"page","link":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/python\/","title":{"rendered":"Programaci\u00f3n en python"},"content":{"rendered":"<p><strong>\u00bfQu\u00e9 es python y por qu\u00e9 utilizarlo?<\/strong><\/p>\n<ul>\n<li>python es un lenguaje de programaci\u00f3n de sintaxis sencilla o al menos similar a la sintaxis del ingl\u00e9s<\/li>\n<li>actualmente es uno de los lenguajes m\u00e1s utilizados en an\u00e1lisis de datos y particularmente en Bioinform\u00e1tica<\/li>\n<li>este lenguaje se ense\u00f1a en la asignatura INFORM\u00c1TICA APLICADA A LA BIOQU\u00cdMICA del grado de Bioqu\u00edmica de la UGR por lo que los alumnos ya deben estar familiarizados con \u00e9l<\/li>\n<li>aunque la l\u00ednea de comando nos ser\u00e1 \u00fatil para muchos problemas sencillos y r\u00e1pidos, para problemas m\u00e1s complejos suele ser preferible usar un lenguaje de programaci\u00f3n. Adem\u00e1s, los scripts que generemos son &#8220;portables&#8221;, es decir, deber\u00edan funcionar tambi\u00e9n en otro sistema siempre que tenga el int\u00e9rprete de python<\/li>\n<\/ul>\n<p><span style=\"color: #ff0000;\">Contenido voluntario de repaso NO EVALUABLE:\u00a0<span style=\"color: #003300;\">Hemos preparado un &#8220;<a href=\"https:\/\/bioinfo2.ugr.es\/biocomputacion\/curso-0-python\/\">Curso 0<\/a>&#8221; en python para refrescar un poco lo aprendido en la asignatura antes mencionada. Si eres capaz de seguir los ejercicios propuestos sin problema puede que no sea necesario para ti pero est\u00e1 disponible para repasar contenido de forma voluntaria. <\/span><\/span><\/p>\n<h4><a href=\"https:\/\/bioinfo2.ugr.es\/biocomputacion\/curso-0-python\/\"><span style=\"color: #ff0000;\"><span style=\"color: #003300;\">Enlace a Curso 0<\/span><\/span><\/a><\/h4>\n<p><strong>Empezamos saludando al mundo<\/strong><\/p>\n<p>Para empezar, necesitaremos crear un fichero para el script (los scripts de python tienen la extensi\u00f3n &#8220;.py&#8221;). Este fichero podemos editarlo con cualquier editor de texto aunque recomendamos alguno que incorpore alguna funcionalidad espec\u00edfica para programar como por ejemplo <a href=\"https:\/\/notepad-plus-plus.org\/downloads\/\">Notepad++<\/a> o <a href=\"https:\/\/www.sublimetext.com\/3\">SublimeText <\/a>(hay muchos otros y pod\u00e9is usar el que quer\u00e1is).<\/p>\n<p>El primer programa suele ser un &#8220;Hola mundo&#8221; para demostrar c\u00f3mo podemos hacer que python muestre algo por pantalla. Copiad las siguientes l\u00edneas al script y ejecutadlo con\u00a0<strong><em>python3 ruta_al_script\u00a0<\/em><\/strong>(p. ej. hello.py). Recordad que salvo que teng\u00e1is instalado python en vuestro ordenador deber\u00e9is lanzar el script en el servidor de docencia.<\/p>\n<pre># las l\u00edneas con un \"#\" delante son ignoradas. Se llaman comentario\r\nprint(\"Hello, world!\\n\") <span style=\"color: #0000ff;\">## escribir en la pantalla. F\u00edjate que \\n no se escribe. Se emplea para indicar nueva l\u00ednea<\/span><\/pre>\n<p><strong>Explicaciones<\/strong><\/p>\n<ul>\n<li>con <strong><span style=\"color: #ff6600;\">#<\/span><\/strong> podemos a\u00f1adir un comentario (el interprete ignora todo que escribimos desp\u00faes del #)<\/li>\n<li>f\u00edjate en que &#8220;\\n&#8221; introduce una l\u00ednea nueva. Busca informaci\u00f3n sobre qu\u00e9 har\u00eda \\t<\/li>\n<\/ul>\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1ABvYSTGEjCUOHLeyeFacw-gEm2Kz_3cc\/view?usp=sharing\"><strong>V\u00eddeo con el ejemplo<\/strong><\/a><\/p>\n<p><strong>Leer desde la l\u00ednea de comando y guardar la informaci\u00f3n en una variable\u00a0<\/strong><\/p>\n<p>Podemos a\u00f1adir una l\u00ednea para capturar cierta informaci\u00f3n y luego utilizarla en nuestro programa.<\/p>\n<pre>print(\"What is your name?\")\r\nname = input()<span style=\"color: #0000ff;\"> # leer de la entrada por defecto (standard input), normalmente el teclado<\/span>\r\nname = name.rstrip() <span style=\"color: #0000ff;\"># eliminar el salto de l\u00ednea (si tuviera)\r\n<\/span>message = \"Your name is \" + name # con + podemos concatenar (o juntar) dos o m\u00e1s variables\r\nprint(message)<\/pre>\n<p><strong>Explicaciones<\/strong><\/p>\n<ul>\n<li>hemos almacenado una serie de caracteres en una variable de tipo string o cadena<\/li>\n<li>podemos usar el operador + para concatenar cadenas (juntarlas)<\/li>\n<\/ul>\n<h3>Tomando decisiones: estructuras de control<\/h3>\n<p>Podemos usar ciertos operadores l\u00f3gicos para introducir condiciones. Por ejemplo, en el programa que ven\u00edamos construyendo, puede ser que queramos dedicar un saludo especial si la persona que lo utiliza es el creador (o un tocayo). Podr\u00edamos utilizar\u00a0<strong><em>if\u00a0 <\/em><\/strong>(si la condici\u00f3n se cumple) y <em><strong>else<\/strong><\/em> (si no se cumple):<\/p>\n<pre>print(\"What is your name?\") \r\nname = input() \r\nname = name.rstrip() \r\nif name == \"Michael\": #condici\u00f3n\r\n    message = \"Hello, Michael! How good of you to be here!\\n\" #c\u00f3digo que solo se ejecuta si se cumple\r\nelse: \r\n    message = \"Hey, hello \" + name # c\u00f3digo que se ejecuta si NO se cumple\r\n\r\nprint(message)\r\n\r\n<\/pre>\n<p><strong>Explicaciones<\/strong><\/p>\n<ul>\n<li>Mediante el operador &#8220;==&#8221; podemos comprobar si dos strings son iguales o no (y en general cualquier variable)<\/li>\n<li>con if\/else podemos definir qu\u00e9 sucede si se da una condici\u00f3n y qu\u00e9 sucede en caso alternativo<\/li>\n<li>para m\u00e1s ejemplos (o ejemplos algo m\u00e1s complejos) pod\u00e9is consultar el <a href=\"https:\/\/bioinfo2.ugr.es\/biocomputacion\/curso-0-python\/\">Curso 0<\/a> (concretamente la lecci\u00f3n 3)<\/li>\n<\/ul>\n<h3>Ejercicios para practicar:<\/h3>\n<ul>\n<li>\u00bfc\u00f3mo modificar\u00edas el script anterior para que admitiera como &#8220;v\u00e1lido&#8221; para la condici\u00f3n un nombre en min\u00fascula? (Pista: busca <em>.<strong>lower()<\/strong> )<\/em><\/li>\n<li>\u00bfc\u00f3mo modificar\u00edas el script anterior para que admitiera como &#8220;v\u00e1lido&#8221; cualquiera de los siguientes: Michael, Cristina, Pepe, Chema?\u00a0(Pista: usar listas y el operador <strong><em>in<\/em><\/strong><em>\u00a0)<\/em><\/li>\n<li>\u00bfc\u00f3mo modificar\u00edas el script anterior para que diera el saludo &#8220;especial&#8221; a todos menos a Michael y a \u00e9l un saludo corriente?\u00a0(Pista: usa\u00a0 operador <strong><em>! <\/em><\/strong>para negaci\u00f3n <em>)<\/em><\/li>\n<\/ul>\n<p>Intenta resolver estos ejercicios solo y\/o en grupo. Puede que necesites la ayuda del <a href=\"https:\/\/bioinfo2.ugr.es\/biocomputacion\/curso-0-python\/\">Curso 0<\/a> o de <a href=\"https:\/\/www.tutorialspoint.com\/python\/index.htm\">p\u00e1ginas de tutoriales<\/a> para recordar alguna cosa. Si no es suficiente recuerda que puedes abrir un foro en el PRADO de la asignatura.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQu\u00e9 es python y por qu\u00e9 utilizarlo? python es un lenguaje de programaci\u00f3n de sintaxis sencilla o al menos similar a la sintaxis del ingl\u00e9s actualmente es uno de los lenguajes m\u00e1s utilizados en an\u00e1lisis de datos y particularmente en <a href=\"https:\/\/bioinfo2.ugr.es\/biocomputacion\/python\/\" class=\"read-more\">Read More &#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/pages\/1173"}],"collection":[{"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/comments?post=1173"}],"version-history":[{"count":5,"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/pages\/1173\/revisions"}],"predecessor-version":[{"id":2091,"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/pages\/1173\/revisions\/2091"}],"wp:attachment":[{"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/media?parent=1173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}