{"id":92,"date":"2014-01-02T15:52:05","date_gmt":"2014-01-02T15:57:24","guid":{"rendered":"https:\/\/20977Python-Programming-Language-798x350.png"},"modified":"2015-07-16T19:37:51","modified_gmt":"2015-07-17T01:37:51","slug":"uso-de-switch-en-python","status":"publish","type":"post","link":"https:\/\/emanuelpaxtian.com\/blog\/uso-de-switch-en-python\/","title":{"rendered":"Uso de switch en python"},"content":{"rendered":"<p>\u00bfNo hay Switch en python?<\/p>\n<p>Esto es algo que nos ha sorprendido a todos los que alguna vez nos hemos enfrentado al Python. \u00bfPor qu\u00e9 demonios no hay un switch? \u00bfY ahora qu\u00e9 hago yo? \u00bfTengo que anidar un mont\u00f3n de if-else?<\/p>\n<p>Pues no, en Python no existe la estructura switch. Sin embargo no es necesario empezar a anidar if-else, podemos usar diccionarios.<\/p>\n<p>Un diccionario en Python es parecido a lo que en otros lenguajes se llama array asociativo y se define as\u00ed:<\/p>\n<pre class=\"brush: python\">edades = { 'Paco': 20, 'Luis': 25, 'Lucas': 30 }\r\n<\/pre>\n<p>y la forma de usarlo es:<\/p>\n<pre class=\"brush: python\">edades['Paco']\r\n<\/pre>\n<p>por ejemplo:<\/p>\n<pre class=\"brush: python\">print (\"La edad de Paco es \"+str(edades['Paco'])+\".\")\r\n<\/pre>\n<p>Que mostrar\u00e1: La edad de Paco es 20. Entonces, si quisi\u00e9ramos algo como esto (ojo, recuerda que este c\u00f3digo no funciona en Python):<\/p>\n<pre class=\"brush: python\">nombre = \"Luis\"\r\nswitch(nombre):\r\n   case 'Paco':\r\n     edad = 20\r\n     break\r\n   case 'Luis':\r\n     edad = 25\r\n     break\r\n   case 'Lucas':\r\n     edad = 30\r\n     break\r\nprint edad\r\n<\/pre>\n<p>tendr\u00edamos que hacer:<\/p>\n<pre class=\"brush: python\">edades = { 'Paco': 20, 'Luis': 25, 'Lucas': 30 }\r\nnombre = 'Luis'\r\nedad = edades[nombre]\r\nprint edad\r\n<\/pre>\n<p>Bastante sencillo \u00bfno? Pero, podr\u00edas pensar, esto est\u00e1 muy bien para seleccionar valores como en este caso pero \u00bfy si lo que quiero es llamar a una funci\u00f3n o ejecutar un bloque de c\u00f3digo? Pues tranquilo, porque se puede. Mira el siguiente ejemplo:<\/p>\n<pre class=\"brush: python\">def sumar(a, b):\r\n    return a + b\r\n \r\ndef restar(a, b):\r\n    return a - b\r\n \r\ndef multiplicar(a, b):\r\n    return a * b;\r\n \r\nnum1 = raw_input(\"Num1: \")\r\nnum2 = raw_input(\"Num2: \")\r\n \r\nprint(\"Opciones\\n1.- Sumar\\n2.- Restar\\n3.- Multiplicar\")\r\n \r\noperaciones = { '1': sumar, '2': restar, '3': multiplicar}\r\n \r\nseleccion = raw_input('Escoge una: ')\r\ntry:\r\n    resultado = operaciones[seleccion](int(num1), int(num2))\r\n    print resultado\r\nexcept:\r\n    print(\"Esa no vale\")\r\n<\/pre>\n<p>Como en este caso no sabemos la opci\u00f3n que va a elegir el usuario (podr\u00eda teclear un 4 o cualquier otra cosa) tenemos que usar try-except para evitar errores (algo similar al default de los switch-case).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfNo hay Switch en python? Esto es algo que nos ha sorprendido a todos los que alguna vez nos hemos enfrentado al Python. \u00bfPor qu\u00e9 demonios no hay un switch?&hellip;<\/p>\n","protected":false},"author":1,"featured_media":536,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-92","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python"],"_links":{"self":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/posts\/92","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/comments?post=92"}],"version-history":[{"count":0,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/posts\/92\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/media\/536"}],"wp:attachment":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/media?parent=92"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/categories?post=92"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/tags?post=92"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}