{"id":37403,"date":"2016-09-04T18:41:52","date_gmt":"2016-09-04T23:41:52","guid":{"rendered":"http:\/\/miketrianablog.wordpress.com\/?p=161"},"modified":"2016-09-04T18:41:52","modified_gmt":"2016-09-04T23:41:52","slug":"un-programa-foolproof","status":"publish","type":"post","link":"https:\/\/kenscourses.com\/tc101fall2016\/syndicated\/un-programa-foolproof\/","title":{"rendered":"Un programa \u201cfoolproof\u201d"},"content":{"rendered":"<p class=\"syndicated-attribution\"><em> --Originally published at <a href=\"https:\/\/miketrianablog.wordpress.com\/2016\/09\/04\/un-programa-foolproof\/\"><a href=\"https:\/\/miketrianablog.wordpress.com\">Mike&amp;#039;s Blog<\/a><\/a><\/em><br \/><\/p>\n<p>La clase pasada de Ken una compa\u00f1era y yo decidimos hacer la tarea 10 de la m\u00e1quina del tiempo de Ken. Un poco retadora la situaci\u00f3n pero pudimos hacerlo bien al final despues de muchos errores.<\/p>\n<p>En este programa mi compa\u00f1era y yo pudimos demostrar el conocimiento de muchos &#8220;Mastering Topics&#8221;. Y me gust\u00f3 mucho la experiencia del &#8220;Pair programming&#8221;, ya que nunca lo hab\u00eda experimentado como tal.<\/p>\n<p>El programa que hicimos consiste en pedirle al usuario 10 n\u00fameros, para despu\u00e9s con estos hacer una serie de operaciones y obtener su suma, promedio y desviaci\u00f3n estandar. Pero nosotros no quisimos quedarnos solo con eso, as\u00ed que decidimos hacer el programa &#8220;foolprof&#8221;. Esto consiste en que si el usuario del programa comete un error, el programa no haga un &#8220;crash&#8221; que haga que el usuario tenga que reinciar el programa, y que los datos que el usuario di\u00f3 de alta no se pierdan.<\/p>\n<p>Nuestro c\u00f3digo fue el siguiente:<\/p>\n<pre class=\"prettyprint notranslate tryit prettyprinted\"><span class=\"pun\">#create a list of floats\n\nimport math\n\nprint (\"Welcome, please enter numbers: \")\n\nthis=[]\nnumber=1\n\ndef ciclo():\n\u00a0\u00a0\u00a0 global number\n\u00a0\u00a0\u00a0 while(True):\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 try:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 a=float(input(\"Number \"+str(number)+\": \"))\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 this.append(a)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 number=number+1\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 except:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 print (\"That's not a valid input\")\n\nciclo()\nciclo()\nciclo()\nciclo()\nciclo()\nciclo()\nciclo()\nciclo()\nciclo()\nciclo()\n\nprint(this)\nsuma=0\n\nfor x in this:\n\u00a0\u00a0\u00a0 suma=suma+x\n\nprint (\"The total sum of the numbers is: \"+str(suma))\n\nprom=suma\/10\n\nprint (\"The average is: \"+str(prom))\n\nindice=0\nthat=[]\n\ndef est():\n\u00a0\u00a0\u00a0 global indice\n\u00a0\u00a0\u00a0 global prom\n\u00a0\u00a0\u00a0 element=(this[indice]-prom)**2\n\u00a0\u00a0\u00a0 that.append(element)\n\u00a0\u00a0\u00a0 indice=indice+1\n\nest()\nest()\nest()\nest()\nest()\nest()\nest()\nest()\nest()\nest()\nsumaa=0\nfor y in that:\n\u00a0\u00a0\u00a0 sumaa=sumaa+y\n\ndesviacion= math.sqrt(sumaa\/10)\n\nprint (\"The standart deviation is: \"+str(desviacion))<\/span><\/pre>\n<p>Lo primero que decidimos hacer fue empezar a pensar una manera en la cual si el usuario escribe un valor erroneo, no se <div class=\"post-limited-image\"><img src=\"https:\/\/i2.wp.com\/www.ditutor.com\/estadistica\/images\/25.gif\" alt=\"de relaci\u00f3n t\u00edpica\" height=\"53\" \/><\/div>\n<div class=\"post-limited-image\"><img class=\"alignnone size-medium wp-image-163\" src=\"https:\/\/miketrianablog.files.wordpress.com\/2016\/09\/funny-picture-programmers-problems1.jpg?w=300&#038;h=195\" alt=\"funny-picture-programmers-problems1\" width=\"300\" height=\"195\" \/><\/div>\n<div class=\"post-limited-image\"><img class=\"alignnone size-medium wp-image-164\" src=\"https:\/\/miketrianablog.files.wordpress.com\/2016\/09\/h0cudhv.jpg?w=300&#038;h=282\" alt=\"h0cudhV\" width=\"300\" height=\"282\" \/><\/div>\n<div class=\"post-limited-image\"><img class=\"alignnone size-medium wp-image-125\" src=\"https:\/\/miketrianablog.files.wordpress.com\/2016\/08\/sdklsdkvsdkn.png?w=300&#038;h=93\" alt=\"SDKLSDKVSDKN\" width=\"300\" height=\"93\" \/><\/div>\n<div class=\"post-limited-image\"><img alt=\"\" border=\"0\" src=\"http:\/\/feeds.wordpress.com\/1.0\/comments\/miketrianablog.wordpress.com\/161\/\" \/><\/div>\n<div class=\"post-limited-image\"><img alt=\"\" border=\"0\" src=\"https:\/\/pixel.wp.com\/b.gif?host=miketrianablog.wordpress.com&#038;blog=115237775&%23038;post=161&%23038;subd=miketrianablog&%23038;ref=&%23038;feed=1\" width=\"1\" height=\"1\" \/><\/div><!--more--> la informaci\u00f3n escrita por este. Entonces decidimos hacer una funci\u00f3n llamada &#8220;ciclo&#8221; la cual lo que hace es basicamente pedirle un n\u00famero al usuario y asignarselo a la variable &#8220;a&#8221;, para despues agregarlo a la lista previamente creada &#8220;this&#8221;.<\/p>\n<p>Eso es la funcionalidad b\u00e1sica del programa, pero si se hubiera quedado hasta all\u00ed si el usuario escribe un texto no v\u00e1lido el programa gritar\u00eda errores. Entonces decidimos hacer un ciclo while. Este hace que mientras el comando &#8220;break&#8221; no rompa el ciclo, este no se detiene.\u00a0 Dentro del ciclo utilizamos el valor &#8220;try&#8221;\u00a0 para lo que es la entrada del usuario, y si este &#8220;try&#8221; falla, te manda un mensaje que dice que tu entrada no es valida, y vuelve a empezar el ciclo. Como podemos observar el valor que escribi\u00f3 el usuario se guarda en la lista &#8220;this&#8221; .<\/p>\n<p>Despu\u00e9s de terminar esto, nos lleg\u00f3 el segundo reto, como poder que el texto del input cambie cada vez que se ejecuta. Me refiero a que te aparezca &#8220;number 1&#8221; y paara el segundo n\u00famero &#8220;number 2&#8221; y as\u00ed sucesivamente.<\/p>\n<p>Para poder hacer esto, creamos una variable global llamada n\u00famero, y la incluimos en el &#8220;input&#8221; del usuario, para despues sumarle 1 para el siguiente. La funci\u00f3n tiene que ser global para que las modificaciones que se le hacen (el sumarle 1) se guarde afuera de la funci\u00f3n y del ciclo. Cuando vamos a utilizar una variable global dentro de una funci\u00f3n, tenemos que decirle al programa que la busque fuera de la funci\u00f3n, por eso se le pone &#8220;global number&#8221; al iniciar la funci\u00f3n.<\/p>\n<p>Desp\u00faes de definir la funci\u00f3n la llamamos diez veces para que guarde los diez n\u00fameros. Despues de llamar la funci\u00f3n diez veces, la imprimimos para que le muestre al usuario los n\u00fameros que el escribi\u00f3. Y despues hicimos un ciclo for para la suma, para que despu\u00e9s se imprima el resultado.<\/p>\n<p>Para el promedio lo \u00fanico que hicimos fue dividir el resultado de la suma entre diez, y despu\u00e9s lo imprimimos.<\/p>\n<p><img src=\"https:\/\/i2.wp.com\/www.ditutor.com\/estadistica\/images\/25.gif\" alt=\"de relaci\u00f3n t\u00edpica\" height=\"53\" \/><\/p>\n<p>El tercer reto fu\u00e9 la desviaci\u00f3n estandar, que se nos ocurri\u00f3 hacerlo mediante que otra cosa, funciones. Para esta funci\u00f3n llamamos a dos variables globales, \u00edndice y prom. \u00cdndice lo utilizamos para localizar los numeros de la lista mediante el valga la redundancia, indice. Element es (x1-x(prom))^2, entonces se debe de repetir una vez por cada n\u00famero de la lista. Element es igual al valor x de la lista (this[indice]) menor el promedio elevado al cuadrado, despu\u00e9s este resultado lo &#8220;apendeamos&#8221; a la lista &#8220;that&#8221; que es la lista para estos valores, y le sumamos uno al indice. Tenemos que repetir esta funci\u00f3n diez veces para todos los n\u00fameros, para despu\u00e9s utilizar un ciclo for para sumar todos los valor de la lista &#8220;that&#8221;. Despu\u00e9s solo queda dividir ese resultado entre diez, y sacarle raiz para despu\u00e9s imprimirlo.<\/p>\n<p>PROBLEMAS DURANTE EL RETO<\/p>\n<p><img class=\"alignnone size-medium wp-image-163\" src=\"https:\/\/miketrianablog.files.wordpress.com\/2016\/09\/funny-picture-programmers-problems1.jpg?w=300&#038;h=195\" alt=\"funny-picture-programmers-problems1\" width=\"300\" height=\"195\" \/><\/p>\n<p>El primer problema que tuvimos obviamente fue el que se nos ocurriera como hacer las funciones para que estas sirvieran, despu\u00e9s de un rato pensando, pudimos llegar a una respuesta, que no sirvi\u00f3, para despu\u00e9s arreglarla y que si funcionara.<\/p>\n<p>Despu\u00e9s tuvimos un error en el cual el ciclo while para la lista se quedaba ciclado imprimiendo que habia un error, tras mucho pensar nos dimos cuenta que fu\u00e9 una falta de parentesis en el &#8220;input&#8221;. Despu\u00e9s cuando quisimos hacer que el texto del input cambiara conforme los n\u00fameros, este mismo error apareci\u00f3. Nos dimos cuenta que no reconoc\u00eda la variable &#8220;number&#8221; porque no la estaba buscando fuera de la funci\u00f3n. Entonces al declarar la variable como global se solucion\u00f3 el problema.<\/p>\n<p>Estos fueron nuestros tres mayores problemas, que afortunadamente pudimos resolver. Obviamente tuvimos muchos m\u00e1s problemas peque\u00f1os que fuimos solucionando conforme \u00edbamos trabajando.<\/p>\n<p>Nos quedamos los dos al final con una experiencia muy grata de aprender todo esto de la programaci\u00f3n.<\/p>\n<p><img class=\"alignnone size-medium wp-image-164\" src=\"https:\/\/miketrianablog.files.wordpress.com\/2016\/09\/h0cudhv.jpg?w=300&#038;h=282\" alt=\"h0cudhV\" width=\"300\" height=\"282\" \/><\/p>\n<p><img class=\"alignnone size-medium wp-image-125\" src=\"https:\/\/miketrianablog.files.wordpress.com\/2016\/08\/sdklsdkvsdkn.png?w=300&#038;h=93\" alt=\"SDKLSDKVSDKN\" width=\"300\" height=\"93\" \/><\/p><br \/>  <a rel=\"nofollow\" href=\"http:\/\/feeds.wordpress.com\/1.0\/gocomments\/miketrianablog.wordpress.com\/161\/\"><img alt=\"\" border=\"0\" src=\"http:\/\/feeds.wordpress.com\/1.0\/comments\/miketrianablog.wordpress.com\/161\/\" \/><\/a> <img alt=\"\" border=\"0\" src=\"https:\/\/pixel.wp.com\/b.gif?host=miketrianablog.wordpress.com&#038;blog=115237775&%23038;post=161&%23038;subd=miketrianablog&%23038;ref=&%23038;feed=1\" width=\"1\" height=\"1\" \/>","protected":false},"excerpt":{"rendered":"<p>&#8211;Originally published at Mike&amp;#039;s Blog La clase pasada de Ken una compa\u00f1era y yo decidimos hacer la tarea 10 de la m\u00e1quina del tiempo de Ken. Un poco retadora la situaci\u00f3n pero pudimos hacerlo bien al final despues de muchos errores. En este programa mi compa\u00f1era y yo pudimos demostrar el conocimiento de muchos &#8220;Mastering &hellip; <a href=\"https:\/\/kenscourses.com\/tc101fall2016\/syndicated\/un-programa-foolproof\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Un programa \u201cfoolproof\u201d<\/span><\/a><\/p>\n","protected":false},"author":15,"featured_media":37404,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,4],"tags":[177,24,62,63],"class_list":["post-37403","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blogs","category-syndicated","tag-foolprof","tag-python","tag-python-noob","tag-tc1001"],"_links":{"self":[{"href":"https:\/\/kenscourses.com\/tc101fall2016\/wp-json\/wp\/v2\/posts\/37403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kenscourses.com\/tc101fall2016\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kenscourses.com\/tc101fall2016\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kenscourses.com\/tc101fall2016\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/kenscourses.com\/tc101fall2016\/wp-json\/wp\/v2\/comments?post=37403"}],"version-history":[{"count":2,"href":"https:\/\/kenscourses.com\/tc101fall2016\/wp-json\/wp\/v2\/posts\/37403\/revisions"}],"predecessor-version":[{"id":37410,"href":"https:\/\/kenscourses.com\/tc101fall2016\/wp-json\/wp\/v2\/posts\/37403\/revisions\/37410"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kenscourses.com\/tc101fall2016\/wp-json\/wp\/v2\/media\/37404"}],"wp:attachment":[{"href":"https:\/\/kenscourses.com\/tc101fall2016\/wp-json\/wp\/v2\/media?parent=37403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kenscourses.com\/tc101fall2016\/wp-json\/wp\/v2\/categories?post=37403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kenscourses.com\/tc101fall2016\/wp-json\/wp\/v2\/tags?post=37403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}