By: [Erick Huanca](https://www.linkedin.com/in/erick-huanca/)"
24 | ],
25 | "metadata": {
26 | "id": "IromZbIgb6I2"
27 | }
28 | },
29 | {
30 | "cell_type": "markdown",
31 | "source": [
32 | "# **Excepciones**\n",
33 | "\n",
34 | "**¿Qué son las excepciones?** \n",
35 | "\n",
36 | "Las excepciones son errores detectados por Python durante la ejecución del programa.\n",
37 | "\n"
38 | ],
39 | "metadata": {
40 | "id": "Iyjkc6pyd5dy"
41 | }
42 | },
43 | {
44 | "cell_type": "markdown",
45 | "source": [
46 | "### **Ejemplo 1: Imprimir division entre 0 (Cero).**"
47 | ],
48 | "metadata": {
49 | "id": "4835iPjrq58_"
50 | }
51 | },
52 | {
53 | "cell_type": "code",
54 | "source": [
55 | "def division(a, b):\n",
56 | " try:\n",
57 | " return a/b\n",
58 | " except ZeroDivisionError:\n",
59 | " return \"Error de division entre cero\"\n",
60 | "\n",
61 | "while True:\n",
62 | " try:\n",
63 | " val1 = (int(input(\"Introduce 1er valor: \")))\n",
64 | " val2 = (int(input(\"Introduce 2do valor: \")))\n",
65 | " break\n",
66 | " \n",
67 | " except ValueError:\n",
68 | " print(\"Los Valores no son correctos!, vuelva a intentar.\")\n",
69 | "\n",
70 | "print(\"-------------------------------\")\n",
71 | "\n",
72 | "print(\"Resultado division: \", division(val1, val2))\n",
73 | "\n",
74 | "print(\"-------------------------------\")\n",
75 | "\n",
76 | "print (\"Operacion finalizada!\")"
77 | ],
78 | "metadata": {
79 | "colab": {
80 | "base_uri": "https://localhost:8080/"
81 | },
82 | "id": "ruPR-tKqrztf",
83 | "outputId": "fc3a80d0-ee36-443c-8b07-b2036130e0e0"
84 | },
85 | "execution_count": 26,
86 | "outputs": [
87 | {
88 | "output_type": "stream",
89 | "name": "stdout",
90 | "text": [
91 | "Introduce 1er valor: 4\n",
92 | "Introduce 2do valor: 4\n",
93 | "-------------------------------\n",
94 | "Resultado division: 1.0\n",
95 | "-------------------------------\n",
96 | "Operacion finalizada!\n"
97 | ]
98 | }
99 | ]
100 | },
101 | {
102 | "cell_type": "markdown",
103 | "source": [
104 | "### **Reto 1: Imprimir las operaciones matemáticas de multiplicación, división y módulo.**"
105 | ],
106 | "metadata": {
107 | "id": "5I0TqQahr99V"
108 | }
109 | },
110 | {
111 | "cell_type": "code",
112 | "source": [
113 | "def multiplicacion(a, b):\n",
114 | " return a*b\n",
115 | " \n",
116 | "def division(a, b):\n",
117 | " try:\n",
118 | " return a/b\n",
119 | " except ZeroDivisionError:\n",
120 | " return \"Error de division entre cero\"\n",
121 | "\n",
122 | "def modulo(a, b):\n",
123 | " try:\n",
124 | " return a%b\n",
125 | " except ZeroDivisionError:\n",
126 | " return \"Error de division entre cero\"\n",
127 | "\n",
128 | "while True:\n",
129 | " try:\n",
130 | " val1 = (int(input(\"Introduce 1er valor: \")))\n",
131 | " val2 = (int(input(\"Introduce 2do valor: \")))\n",
132 | " break\n",
133 | " \n",
134 | " except ValueError:\n",
135 | " print(\"Los Valores no son correctos!, vuelva a intentar.\")\n",
136 | "\n",
137 | "print(\"-------------------------------\")\n",
138 | "print(\"Resultado multiplicacion: \",multiplicacion(val1, val2))\n",
139 | "print(\"Resultado division: \", division(val1, val2))\n",
140 | "print(\"Resultado modulo: \", modulo(val1, val2))\n",
141 | "print(\"-------------------------------\")\n",
142 | "\n",
143 | "print (\"Operacion finalizada!\")"
144 | ],
145 | "metadata": {
146 | "colab": {
147 | "base_uri": "https://localhost:8080/"
148 | },
149 | "id": "gOSJmOixe0Rx",
150 | "outputId": "6e91f465-6a6a-4de2-9bf8-496ab6390535"
151 | },
152 | "execution_count": 33,
153 | "outputs": [
154 | {
155 | "output_type": "stream",
156 | "name": "stdout",
157 | "text": [
158 | "Introduce 1er valor: 8\n",
159 | "Introduce 2do valor: 0\n",
160 | "-------------------------------\n",
161 | "Resultado multiplicacion: 0\n",
162 | "Resultado division: Error de division entre cero\n",
163 | "Resultado modulo: Error de division entre cero\n",
164 | "-------------------------------\n",
165 | "Operacion finalizada!\n"
166 | ]
167 | }
168 | ]
169 | },
170 | {
171 | "cell_type": "markdown",
172 | "source": [
173 | "### **Ejemplo 2: Imprimir la division entre 0 (cero) usando \"else, finally y raise\"** "
174 | ],
175 | "metadata": {
176 | "id": "YibrKfdkfLVB"
177 | }
178 | },
179 | {
180 | "cell_type": "code",
181 | "source": [
182 | "def division(a, b):\n",
183 | " try:\n",
184 | " c = a/b\n",
185 | " if c < 0:\n",
186 | " raise ValueError (\"Lo sentimos, los valores introducidos no pueden ser menores que 0!\")\n",
187 | "\n",
188 | " except ZeroDivisionError:\n",
189 | " return \"Error de division entre cero\"\n",
190 | "\n",
191 | " except ValueError as ve:\n",
192 | " print(ve)\n",
193 | "\n",
194 | " else:\n",
195 | " return c\n",
196 | " finally:\n",
197 | " print(\"Termino la funsion division!\")\n",
198 | "\n",
199 | "while True:\n",
200 | " try:\n",
201 | " val1 = (int(input(\"Introduce 1er valor: \")))\n",
202 | " val2 = (int(input(\"Introduce 2do valor: \")))\n",
203 | " break\n",
204 | " \n",
205 | " except ValueError:\n",
206 | " print(\"Los Valores no son correctos!, vuelva a intentar.\")\n",
207 | "\n",
208 | "print(\"-------------------------------\")\n",
209 | "print(\"Resultado division: \", division(val1, val2))\n",
210 | "print(\"-------------------------------\")\n",
211 | "\n",
212 | "print (\"Operacion finalizada!\")"
213 | ],
214 | "metadata": {
215 | "colab": {
216 | "base_uri": "https://localhost:8080/"
217 | },
218 | "id": "zGV2zo_LfPDB",
219 | "outputId": "5cbcf6c9-f9d0-4d72-d76d-f04ee95e32ba"
220 | },
221 | "execution_count": 32,
222 | "outputs": [
223 | {
224 | "output_type": "stream",
225 | "name": "stdout",
226 | "text": [
227 | "Introduce 1er valor: 8\n",
228 | "Introduce 2do valor: -2\n",
229 | "-------------------------------\n",
230 | "Lo sentimos, los valores introducidos no pueden ser menores que 0!\n",
231 | "Termino la funsion division!\n",
232 | "Resultado division: None\n",
233 | "-------------------------------\n",
234 | "Operacion finalizada!\n"
235 | ]
236 | }
237 | ]
238 | },
239 | {
240 | "cell_type": "markdown",
241 | "source": [
242 | "### **Reto 2: Crear una función que calcule el índice de masa corporal (IMC) que mide el contenido de grasa corporal en relación a la estatura y el peso. La función debe recibir como parametro de entrada la altura y el peso y hacer el cálculo\"** "
243 | ],
244 | "metadata": {
245 | "id": "Jynk0w5ilFOi"
246 | }
247 | },
248 | {
249 | "cell_type": "code",
250 | "source": [
251 | "def imc(altura, peso):\n",
252 | " try:\n",
253 | " bmi = peso/altura**2\n",
254 | " if peso>500 or altura>220:\n",
255 | " raise ValueError (\"Valores fuera de rango\")\n",
256 | " except ZeroDivisionError:\n",
257 | " print(\"altura debe ser diferente de cero\")\n",
258 | " except TypeError:\n",
259 | " print('Altura y peso solo acepta valores numéricos')\n",
260 | " except ValueError as ve:\n",
261 | " print(ve)\n",
262 | " else:\n",
263 | " return bmi\n",
264 | "def evaluacion(mci):\n",
265 | " if mci < 18.5 :\n",
266 | " print('La persona está baja de peso')\n",
267 | " elif mci >= 25:\n",
268 | " print('La persona presenta sobrepeso')\n",
269 | " elif mci >=18.5 and mci <25:\n",
270 | " print('La persona esta con peso normal')\n",
271 | " else:\n",
272 | " print('No hay suficiente información')\n",
273 | "\n",
274 | "def main():\n",
275 | " try:\n",
276 | " peso = float(input('Introduce el peso de la persona (kgs.): '))\n",
277 | " altura = float(input('Introduce la altura de la persona (mts.): '))\n",
278 | " except TypeError:\n",
279 | " print('Introducir valores numerico')\n",
280 | " except ValueError:\n",
281 | " print('Introducir valores numéricos') \n",
282 | " \n",
283 | " try:\n",
284 | " valorIMC = imc(altura,peso)\n",
285 | " print(\"El IMC de la persona es: \", round(valorIMC))\n",
286 | " evaluacion(valorIMC)\n",
287 | " except UnboundLocalError:\n",
288 | " pass \n",
289 | " except TypeError:\n",
290 | " pass\n",
291 | "\n",
292 | "main()"
293 | ],
294 | "metadata": {
295 | "colab": {
296 | "base_uri": "https://localhost:8080/"
297 | },
298 | "id": "OD7hAXSm04Yj",
299 | "outputId": "2446fdc0-2c21-4cc9-ce56-07ca50d3861b"
300 | },
301 | "execution_count": 19,
302 | "outputs": [
303 | {
304 | "output_type": "stream",
305 | "name": "stdout",
306 | "text": [
307 | "Introduce el peso de la persona (kgs.): -60\n",
308 | "Introduce la altura de la persona (mts.): -1.60\n",
309 | "El IMC de la persona es: -23\n",
310 | "La persona está baja de peso\n"
311 | ]
312 | }
313 | ]
314 | }
315 | ]
316 | }
--------------------------------------------------------------------------------
/Worshop Python # 7: Ficheros/Pipfile:
--------------------------------------------------------------------------------
1 | [[source]]
2 | url = "https://pypi.org/simple"
3 | verify_ssl = true
4 | name = "pypi"
5 |
6 | [packages]
7 | click = "*"
8 | coloredlogs = "*"
9 | verboselogs = "*"
10 | jupyterlab = "*"
11 |
12 | [dev-packages]
13 |
14 | [requires]
15 | python_version = "3.9"
16 |
--------------------------------------------------------------------------------
/Worshop Python # 7: Ficheros/Pipfile.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_meta": {
3 | "hash": {
4 | "sha256": "874a9e455d24b4f48960b06a57a17f9b62b01bc0265fbb6976c3ae82e8cc91eb"
5 | },
6 | "pipfile-spec": 6,
7 | "requires": {
8 | "python_version": "3.9"
9 | },
10 | "sources": [
11 | {
12 | "name": "pypi",
13 | "url": "https://pypi.org/simple",
14 | "verify_ssl": true
15 | }
16 | ]
17 | },
18 | "default": {
19 | "anyio": {
20 | "hashes": [
21 | "sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421",
22 | "sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3"
23 | ],
24 | "markers": "python_full_version >= '3.6.2'",
25 | "version": "==3.6.2"
26 | },
27 | "argon2-cffi": {
28 | "hashes": [
29 | "sha256:8c976986f2c5c0e5000919e6de187906cfd81fb1c72bf9d88c01177e77da7f80",
30 | "sha256:d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b"
31 | ],
32 | "markers": "python_version >= '3.6'",
33 | "version": "==21.3.0"
34 | },
35 | "argon2-cffi-bindings": {
36 | "hashes": [
37 | "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670",
38 | "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f",
39 | "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583",
40 | "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194",
41 | "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c",
42 | "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a",
43 | "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082",
44 | "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5",
45 | "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f",
46 | "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7",
47 | "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d",
48 | "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f",
49 | "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae",
50 | "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3",
51 | "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86",
52 | "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367",
53 | "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d",
54 | "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93",
55 | "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb",
56 | "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e",
57 | "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"
58 | ],
59 | "markers": "python_version >= '3.6'",
60 | "version": "==21.2.0"
61 | },
62 | "asttokens": {
63 | "hashes": [
64 | "sha256:1b28ed85e254b724439afc783d4bee767f780b936c3fe8b3275332f42cf5f561",
65 | "sha256:4aa76401a151c8cc572d906aad7aea2a841780834a19d780f4321c0fe1b54635"
66 | ],
67 | "version": "==2.1.0"
68 | },
69 | "attrs": {
70 | "hashes": [
71 | "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6",
72 | "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"
73 | ],
74 | "markers": "python_version >= '3.5'",
75 | "version": "==22.1.0"
76 | },
77 | "babel": {
78 | "hashes": [
79 | "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe",
80 | "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6"
81 | ],
82 | "markers": "python_version >= '3.6'",
83 | "version": "==2.11.0"
84 | },
85 | "backcall": {
86 | "hashes": [
87 | "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e",
88 | "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"
89 | ],
90 | "version": "==0.2.0"
91 | },
92 | "beautifulsoup4": {
93 | "hashes": [
94 | "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30",
95 | "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"
96 | ],
97 | "markers": "python_version >= '3.6'",
98 | "version": "==4.11.1"
99 | },
100 | "bleach": {
101 | "hashes": [
102 | "sha256:085f7f33c15bd408dd9b17a4ad77c577db66d76203e5984b1bd59baeee948b2a",
103 | "sha256:0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c"
104 | ],
105 | "markers": "python_version >= '3.7'",
106 | "version": "==5.0.1"
107 | },
108 | "certifi": {
109 | "hashes": [
110 | "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14",
111 | "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"
112 | ],
113 | "markers": "python_version >= '3.6'",
114 | "version": "==2022.9.24"
115 | },
116 | "cffi": {
117 | "hashes": [
118 | "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5",
119 | "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef",
120 | "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104",
121 | "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426",
122 | "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405",
123 | "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375",
124 | "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a",
125 | "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e",
126 | "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc",
127 | "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf",
128 | "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185",
129 | "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497",
130 | "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3",
131 | "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35",
132 | "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c",
133 | "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83",
134 | "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21",
135 | "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca",
136 | "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984",
137 | "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac",
138 | "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd",
139 | "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee",
140 | "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a",
141 | "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2",
142 | "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192",
143 | "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7",
144 | "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585",
145 | "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f",
146 | "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e",
147 | "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27",
148 | "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b",
149 | "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e",
150 | "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e",
151 | "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d",
152 | "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c",
153 | "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415",
154 | "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82",
155 | "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02",
156 | "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314",
157 | "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325",
158 | "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c",
159 | "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3",
160 | "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914",
161 | "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045",
162 | "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d",
163 | "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9",
164 | "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5",
165 | "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2",
166 | "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c",
167 | "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3",
168 | "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2",
169 | "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8",
170 | "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d",
171 | "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d",
172 | "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9",
173 | "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162",
174 | "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76",
175 | "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4",
176 | "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e",
177 | "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9",
178 | "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6",
179 | "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b",
180 | "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01",
181 | "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"
182 | ],
183 | "version": "==1.15.1"
184 | },
185 | "charset-normalizer": {
186 | "hashes": [
187 | "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845",
188 | "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"
189 | ],
190 | "markers": "python_version >= '3.6'",
191 | "version": "==2.1.1"
192 | },
193 | "click": {
194 | "hashes": [
195 | "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e",
196 | "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"
197 | ],
198 | "index": "pypi",
199 | "version": "==8.1.3"
200 | },
201 | "coloredlogs": {
202 | "hashes": [
203 | "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934",
204 | "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0"
205 | ],
206 | "index": "pypi",
207 | "version": "==15.0.1"
208 | },
209 | "debugpy": {
210 | "hashes": [
211 | "sha256:34d2cdd3a7c87302ba5322b86e79c32c2115be396f3f09ca13306d8a04fe0f16",
212 | "sha256:3c9f985944a30cfc9ae4306ac6a27b9c31dba72ca943214dad4a0ab3840f6161",
213 | "sha256:4e255982552b0edfe3a6264438dbd62d404baa6556a81a88f9420d3ed79b06ae",
214 | "sha256:5ad571a36cec137ae6ed951d0ff75b5e092e9af6683da084753231150cbc5b25",
215 | "sha256:6efc30325b68e451118b795eff6fe8488253ca3958251d5158106d9c87581bc6",
216 | "sha256:7c302095a81be0d5c19f6529b600bac971440db3e226dce85347cc27e6a61908",
217 | "sha256:84c39940a0cac410bf6aa4db00ba174f973eef521fbe9dd058e26bcabad89c4f",
218 | "sha256:86d784b72c5411c833af1cd45b83d80c252b77c3bfdb43db17c441d772f4c734",
219 | "sha256:adcfea5ea06d55d505375995e150c06445e2b20cd12885bcae566148c076636b",
220 | "sha256:b8deaeb779699350deeed835322730a3efec170b88927debc9ba07a1a38e2585",
221 | "sha256:c4b2bd5c245eeb49824bf7e539f95fb17f9a756186e51c3e513e32999d8846f3",
222 | "sha256:c4cd6f37e3c168080d61d698390dfe2cd9e74ebf80b448069822a15dadcda57d",
223 | "sha256:cca23cb6161ac89698d629d892520327dd1be9321c0960e610bbcb807232b45d",
224 | "sha256:d5c814596a170a0a58fa6fad74947e30bfd7e192a5d2d7bd6a12156c2899e13a",
225 | "sha256:daadab4403427abd090eccb38d8901afd8b393e01fd243048fab3f1d7132abb4",
226 | "sha256:dda8652520eae3945833e061cbe2993ad94a0b545aebd62e4e6b80ee616c76b2",
227 | "sha256:e8922090514a890eec99cfb991bab872dd2e353ebb793164d5f01c362b9a40bf",
228 | "sha256:fc233a0160f3b117b20216f1169e7211b83235e3cd6749bcdd8dbb72177030c7"
229 | ],
230 | "markers": "python_version >= '3.7'",
231 | "version": "==1.6.3"
232 | },
233 | "decorator": {
234 | "hashes": [
235 | "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330",
236 | "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"
237 | ],
238 | "markers": "python_version >= '3.5'",
239 | "version": "==5.1.1"
240 | },
241 | "defusedxml": {
242 | "hashes": [
243 | "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69",
244 | "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"
245 | ],
246 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
247 | "version": "==0.7.1"
248 | },
249 | "entrypoints": {
250 | "hashes": [
251 | "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4",
252 | "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"
253 | ],
254 | "markers": "python_version >= '3.6'",
255 | "version": "==0.4"
256 | },
257 | "executing": {
258 | "hashes": [
259 | "sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc",
260 | "sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107"
261 | ],
262 | "version": "==1.2.0"
263 | },
264 | "fastjsonschema": {
265 | "hashes": [
266 | "sha256:01e366f25d9047816fe3d288cbfc3e10541daf0af2044763f3d0ade42476da18",
267 | "sha256:21f918e8d9a1a4ba9c22e09574ba72267a6762d47822db9add95f6454e51cc1c"
268 | ],
269 | "version": "==2.16.2"
270 | },
271 | "humanfriendly": {
272 | "hashes": [
273 | "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477",
274 | "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc"
275 | ],
276 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
277 | "version": "==10.0"
278 | },
279 | "idna": {
280 | "hashes": [
281 | "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4",
282 | "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
283 | ],
284 | "markers": "python_version >= '3.5'",
285 | "version": "==3.4"
286 | },
287 | "importlib-metadata": {
288 | "hashes": [
289 | "sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab",
290 | "sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43"
291 | ],
292 | "markers": "python_version < '3.10'",
293 | "version": "==5.0.0"
294 | },
295 | "ipykernel": {
296 | "hashes": [
297 | "sha256:301fdb487587c9bf277025001da97b53697aab73ae1268d9d1ba972a2c5fc801",
298 | "sha256:e195cf6d8c3dd5d41f3cf8ad831d9891f95d7d18fa6d5fb4d30a713df99b26a4"
299 | ],
300 | "markers": "python_version >= '3.8'",
301 | "version": "==6.17.0"
302 | },
303 | "ipython": {
304 | "hashes": [
305 | "sha256:7c959e3dedbf7ed81f9b9d8833df252c430610e2a4a6464ec13cd20975ce20a5",
306 | "sha256:91ef03016bcf72dd17190f863476e7c799c6126ec7e8be97719d1bc9a78a59a4"
307 | ],
308 | "markers": "python_version >= '3.8'",
309 | "version": "==8.6.0"
310 | },
311 | "ipython-genutils": {
312 | "hashes": [
313 | "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8",
314 | "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"
315 | ],
316 | "version": "==0.2.0"
317 | },
318 | "jedi": {
319 | "hashes": [
320 | "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d",
321 | "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab"
322 | ],
323 | "markers": "python_version >= '3.6'",
324 | "version": "==0.18.1"
325 | },
326 | "jinja2": {
327 | "hashes": [
328 | "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852",
329 | "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"
330 | ],
331 | "markers": "python_version >= '3.7'",
332 | "version": "==3.1.2"
333 | },
334 | "json5": {
335 | "hashes": [
336 | "sha256:993189671e7412e9cdd8be8dc61cf402e8e579b35f1d1bb20ae6b09baa78bbce",
337 | "sha256:ad9f048c5b5a4c3802524474ce40a622fae789860a86f10cc4f7e5f9cf9b46ab"
338 | ],
339 | "version": "==0.9.10"
340 | },
341 | "jsonschema": {
342 | "hashes": [
343 | "sha256:5bfcf2bca16a087ade17e02b282d34af7ccd749ef76241e7f9bd7c0cb8a9424d",
344 | "sha256:f660066c3966db7d6daeaea8a75e0b68237a48e51cf49882087757bb59916248"
345 | ],
346 | "markers": "python_version >= '3.7'",
347 | "version": "==4.17.0"
348 | },
349 | "jupyter-client": {
350 | "hashes": [
351 | "sha256:1c1d418ef32a45a1fae0b243e6f01cc9bf65fa8ddbd491a034b9ba6ac6502951",
352 | "sha256:5616db609ac720422e6a4b893d6572b8d655ff41e058367f4459a0d2c0726832"
353 | ],
354 | "markers": "python_version >= '3.7'",
355 | "version": "==7.4.4"
356 | },
357 | "jupyter-core": {
358 | "hashes": [
359 | "sha256:3815e80ec5272c0c19aad087a0d2775df2852cfca8f5a17069e99c9350cecff8",
360 | "sha256:c2909b9bc7dca75560a6c5ae78c34fd305ede31cd864da3c0d0bb2ed89aa9337"
361 | ],
362 | "markers": "python_version >= '3.7'",
363 | "version": "==4.11.2"
364 | },
365 | "jupyter-server": {
366 | "hashes": [
367 | "sha256:992531008544d77e05a16251cdfbd0bdff1b1efa14760c79b9cc776ac9214cf1",
368 | "sha256:d0adca19913a3763359be7f0b8c2ea8bfde356f4b8edd8e3149d7d0fbfaa248b"
369 | ],
370 | "markers": "python_version >= '3.7'",
371 | "version": "==1.21.0"
372 | },
373 | "jupyterlab": {
374 | "hashes": [
375 | "sha256:e02556c8ea1b386963c4b464e4618aee153c5416b07ab481425c817a033323a2",
376 | "sha256:f433059fe0e12d75ea90a81a0b6721113bb132857e3ec2197780b6fe84cbcbde"
377 | ],
378 | "index": "pypi",
379 | "version": "==3.5.0"
380 | },
381 | "jupyterlab-pygments": {
382 | "hashes": [
383 | "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f",
384 | "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"
385 | ],
386 | "markers": "python_version >= '3.7'",
387 | "version": "==0.2.2"
388 | },
389 | "jupyterlab-server": {
390 | "hashes": [
391 | "sha256:07007a3a0a30bfc6424b28b76df8d67386cc2d5f9f42886773b1b3c473cb9a3f",
392 | "sha256:7ad1a37a716f6d10e90185c636c122d55a58ef3141ae50f9d0601d3ccf54d43e"
393 | ],
394 | "markers": "python_version >= '3.7'",
395 | "version": "==2.16.2"
396 | },
397 | "markupsafe": {
398 | "hashes": [
399 | "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003",
400 | "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88",
401 | "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5",
402 | "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7",
403 | "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a",
404 | "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603",
405 | "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1",
406 | "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135",
407 | "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247",
408 | "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6",
409 | "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601",
410 | "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77",
411 | "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02",
412 | "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e",
413 | "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63",
414 | "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f",
415 | "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980",
416 | "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b",
417 | "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812",
418 | "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff",
419 | "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96",
420 | "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1",
421 | "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925",
422 | "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a",
423 | "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6",
424 | "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e",
425 | "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f",
426 | "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4",
427 | "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f",
428 | "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3",
429 | "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c",
430 | "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a",
431 | "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417",
432 | "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a",
433 | "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a",
434 | "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37",
435 | "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452",
436 | "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933",
437 | "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a",
438 | "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"
439 | ],
440 | "markers": "python_version >= '3.7'",
441 | "version": "==2.1.1"
442 | },
443 | "matplotlib-inline": {
444 | "hashes": [
445 | "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311",
446 | "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"
447 | ],
448 | "markers": "python_version >= '3.5'",
449 | "version": "==0.1.6"
450 | },
451 | "mistune": {
452 | "hashes": [
453 | "sha256:182cc5ee6f8ed1b807de6b7bb50155df7b66495412836b9a74c8fbdfc75fe36d",
454 | "sha256:9ee0a66053e2267aba772c71e06891fa8f1af6d4b01d5e84e267b4570d4d9808"
455 | ],
456 | "version": "==2.0.4"
457 | },
458 | "nbclassic": {
459 | "hashes": [
460 | "sha256:c74d8a500f8e058d46b576a41e5bc640711e1032cf7541dde5f73ea49497e283",
461 | "sha256:cbf05df5842b420d5cece0143462380ea9d308ff57c2dc0eb4d6e035b18fbfb3"
462 | ],
463 | "markers": "python_version >= '3.7'",
464 | "version": "==0.4.8"
465 | },
466 | "nbclient": {
467 | "hashes": [
468 | "sha256:434c91385cf3e53084185334d675a0d33c615108b391e260915d1aa8e86661b8",
469 | "sha256:a1d844efd6da9bc39d2209bf996dbd8e07bf0f36b796edfabaa8f8a9ab77c3aa"
470 | ],
471 | "markers": "python_version >= '3.7'",
472 | "version": "==0.7.0"
473 | },
474 | "nbconvert": {
475 | "hashes": [
476 | "sha256:66326174c190dc4f0a6cbbff96f30c632774b441fa3c7565662bb3d41992fb0f",
477 | "sha256:7ae7ccc68495b565dab153459ee7e65039970913eb115070da6e2c673cf0e9f8"
478 | ],
479 | "markers": "python_version >= '3.7'",
480 | "version": "==7.2.3"
481 | },
482 | "nbformat": {
483 | "hashes": [
484 | "sha256:1b05ec2c552c2f1adc745f4eddce1eac8ca9ffd59bb9fd859e827eaa031319f9",
485 | "sha256:1d4760c15c1a04269ef5caf375be8b98dd2f696e5eb9e603ec2bf091f9b0d3f3"
486 | ],
487 | "markers": "python_version >= '3.7'",
488 | "version": "==5.7.0"
489 | },
490 | "nest-asyncio": {
491 | "hashes": [
492 | "sha256:b9a953fb40dceaa587d109609098db21900182b16440652454a146cffb06e8b8",
493 | "sha256:d267cc1ff794403f7df692964d1d2a3fa9418ffea2a3f6859a439ff482fef290"
494 | ],
495 | "markers": "python_version >= '3.5'",
496 | "version": "==1.5.6"
497 | },
498 | "notebook": {
499 | "hashes": [
500 | "sha256:c1897e5317e225fc78b45549a6ab4b668e4c996fd03a04e938fe5e7af2bfffd0",
501 | "sha256:e04f9018ceb86e4fa841e92ea8fb214f8d23c1cedfde530cc96f92446924f0e4"
502 | ],
503 | "markers": "python_version >= '3.7'",
504 | "version": "==6.5.2"
505 | },
506 | "notebook-shim": {
507 | "hashes": [
508 | "sha256:090e0baf9a5582ff59b607af523ca2db68ff216da0c69956b62cab2ef4fc9c3f",
509 | "sha256:9c6c30f74c4fbea6fce55c1be58e7fd0409b1c681b075dcedceb005db5026949"
510 | ],
511 | "markers": "python_version >= '3.7'",
512 | "version": "==0.2.2"
513 | },
514 | "packaging": {
515 | "hashes": [
516 | "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb",
517 | "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"
518 | ],
519 | "markers": "python_version >= '3.6'",
520 | "version": "==21.3"
521 | },
522 | "pandocfilters": {
523 | "hashes": [
524 | "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38",
525 | "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"
526 | ],
527 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
528 | "version": "==1.5.0"
529 | },
530 | "parso": {
531 | "hashes": [
532 | "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0",
533 | "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"
534 | ],
535 | "markers": "python_version >= '3.6'",
536 | "version": "==0.8.3"
537 | },
538 | "pexpect": {
539 | "hashes": [
540 | "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937",
541 | "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"
542 | ],
543 | "markers": "sys_platform != 'win32'",
544 | "version": "==4.8.0"
545 | },
546 | "pickleshare": {
547 | "hashes": [
548 | "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca",
549 | "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"
550 | ],
551 | "version": "==0.7.5"
552 | },
553 | "prometheus-client": {
554 | "hashes": [
555 | "sha256:be26aa452490cfcf6da953f9436e95a9f2b4d578ca80094b4458930e5f584ab1",
556 | "sha256:db7c05cbd13a0f79975592d112320f2605a325969b270a94b71dcabc47b931d2"
557 | ],
558 | "markers": "python_version >= '3.6'",
559 | "version": "==0.15.0"
560 | },
561 | "prompt-toolkit": {
562 | "hashes": [
563 | "sha256:24becda58d49ceac4dc26232eb179ef2b21f133fecda7eed6018d341766ed76e",
564 | "sha256:e7f2129cba4ff3b3656bbdda0e74ee00d2f874a8bcdb9dd16f5fec7b3e173cae"
565 | ],
566 | "markers": "python_full_version >= '3.6.2'",
567 | "version": "==3.0.32"
568 | },
569 | "psutil": {
570 | "hashes": [
571 | "sha256:07d880053c6461c9b89cd5d4808f3b8336665fa3acdefd6777662c5ed73a851a",
572 | "sha256:12500d761ac091f2426567f19f95fd3f15a197d96befb44a5c1e3cbe6db5752c",
573 | "sha256:1b540599481c73408f6b392cdffef5b01e8ff7a2ac8caae0a91b8222e88e8f1e",
574 | "sha256:35feafe232d1aaf35d51bd42790cbccb882456f9f18cdc411532902370d660df",
575 | "sha256:3a7826e68b0cf4ce2c1ee385d64eab7d70e3133171376cac53d7c1790357ec8f",
576 | "sha256:46907fa62acaac364fff0b8a9da7b360265d217e4fdeaca0a2397a6883dffba2",
577 | "sha256:4bd4854f0c83aa84a5a40d3b5d0eb1f3c128f4146371e03baed4589fe4f3c931",
578 | "sha256:538fcf6ae856b5e12d13d7da25ad67f02113c96f5989e6ad44422cb5994ca7fc",
579 | "sha256:547ebb02031fdada635452250ff39942db8310b5c4a8102dfe9384ee5791e650",
580 | "sha256:5e8b50241dd3c2ed498507f87a6602825073c07f3b7e9560c58411c14fe1e1c9",
581 | "sha256:5fa88e3d5d0b480602553d362c4b33a63e0c40bfea7312a7bf78799e01e0810b",
582 | "sha256:68fa227c32240c52982cb931801c5707a7f96dd8927f9102d6c7771ea1ff5698",
583 | "sha256:6ced1ad823ecfa7d3ce26fe8aa4996e2e53fb49b7fed8ad81c80958501ec0619",
584 | "sha256:71b1206e7909792d16933a0d2c1c7f04ae196186c51ba8567abae1d041f06dcb",
585 | "sha256:767ef4fa33acda16703725c0473a91e1832d296c37c63896c7153ba81698f1ab",
586 | "sha256:7ccfcdfea4fc4b0a02ca2c31de7fcd186beb9cff8207800e14ab66f79c773af6",
587 | "sha256:7e4939ff75149b67aef77980409f156f0082fa36accc475d45c705bb00c6c16a",
588 | "sha256:828c9dc9478b34ab96be75c81942d8df0c2bb49edbb481f597314d92b6441d89",
589 | "sha256:8a4e07611997acf178ad13b842377e3d8e9d0a5bac43ece9bfc22a96735d9a4f",
590 | "sha256:941a6c2c591da455d760121b44097781bc970be40e0e43081b9139da485ad5b7",
591 | "sha256:9a4af6ed1094f867834f5f07acd1250605a0874169a5fcadbcec864aec2496a6",
592 | "sha256:9ec296f565191f89c48f33d9544d8d82b0d2af7dd7d2d4e6319f27a818f8d1cc",
593 | "sha256:9ec95df684583b5596c82bb380c53a603bb051cf019d5c849c47e117c5064395",
594 | "sha256:a04a1836894c8279e5e0a0127c0db8e198ca133d28be8a2a72b4db16f6cf99c1",
595 | "sha256:a3d81165b8474087bb90ec4f333a638ccfd1d69d34a9b4a1a7eaac06648f9fbe",
596 | "sha256:b4a247cd3feaae39bb6085fcebf35b3b8ecd9b022db796d89c8f05067ca28e71",
597 | "sha256:ba38cf9984d5462b506e239cf4bc24e84ead4b1d71a3be35e66dad0d13ded7c1",
598 | "sha256:beb57d8a1ca0ae0eb3d08ccaceb77e1a6d93606f0e1754f0d60a6ebd5c288837",
599 | "sha256:d266cd05bd4a95ca1c2b9b5aac50d249cf7c94a542f47e0b22928ddf8b80d1ef",
600 | "sha256:d8c3cc6bb76492133474e130a12351a325336c01c96a24aae731abf5a47fe088",
601 | "sha256:db8e62016add2235cc87fb7ea000ede9e4ca0aa1f221b40cef049d02d5d2593d",
602 | "sha256:e7507f6c7b0262d3e7b0eeda15045bf5881f4ada70473b87bc7b7c93b992a7d7",
603 | "sha256:ed15edb14f52925869250b1375f0ff58ca5c4fa8adefe4883cfb0737d32f5c02",
604 | "sha256:f57d63a2b5beaf797b87024d018772439f9d3103a395627b77d17a8d72009543",
605 | "sha256:fa5e32c7d9b60b2528108ade2929b115167fe98d59f89555574715054f50fa31",
606 | "sha256:fe79b4ad4836e3da6c4650cb85a663b3a51aef22e1a829c384e18fae87e5e727"
607 | ],
608 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
609 | "version": "==5.9.3"
610 | },
611 | "ptyprocess": {
612 | "hashes": [
613 | "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35",
614 | "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"
615 | ],
616 | "version": "==0.7.0"
617 | },
618 | "pure-eval": {
619 | "hashes": [
620 | "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350",
621 | "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"
622 | ],
623 | "version": "==0.2.2"
624 | },
625 | "pycparser": {
626 | "hashes": [
627 | "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9",
628 | "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"
629 | ],
630 | "version": "==2.21"
631 | },
632 | "pygments": {
633 | "hashes": [
634 | "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1",
635 | "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"
636 | ],
637 | "markers": "python_version >= '3.6'",
638 | "version": "==2.13.0"
639 | },
640 | "pyparsing": {
641 | "hashes": [
642 | "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb",
643 | "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"
644 | ],
645 | "markers": "python_full_version >= '3.6.8'",
646 | "version": "==3.0.9"
647 | },
648 | "pyrsistent": {
649 | "hashes": [
650 | "sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed",
651 | "sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb",
652 | "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a",
653 | "sha256:21455e2b16000440e896ab99e8304617151981ed40c29e9507ef1c2e4314ee95",
654 | "sha256:2aede922a488861de0ad00c7630a6e2d57e8023e4be72d9d7147a9fcd2d30712",
655 | "sha256:3ba4134a3ff0fc7ad225b6b457d1309f4698108fb6b35532d015dca8f5abed73",
656 | "sha256:456cb30ca8bff00596519f2c53e42c245c09e1a4543945703acd4312949bfd41",
657 | "sha256:71d332b0320642b3261e9fee47ab9e65872c2bd90260e5d225dabeed93cbd42b",
658 | "sha256:879b4c2f4d41585c42df4d7654ddffff1239dc4065bc88b745f0341828b83e78",
659 | "sha256:9cd3e9978d12b5d99cbdc727a3022da0430ad007dacf33d0bf554b96427f33ab",
660 | "sha256:a178209e2df710e3f142cbd05313ba0c5ebed0a55d78d9945ac7a4e09d923308",
661 | "sha256:b39725209e06759217d1ac5fcdb510e98670af9e37223985f330b611f62e7425",
662 | "sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2",
663 | "sha256:bfd880614c6237243ff53a0539f1cb26987a6dc8ac6e66e0c5a40617296a045e",
664 | "sha256:c43bec251bbd10e3cb58ced80609c5c1eb238da9ca78b964aea410fb820d00d6",
665 | "sha256:d690b18ac4b3e3cab73b0b7aa7dbe65978a172ff94970ff98d82f2031f8971c2",
666 | "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a",
667 | "sha256:dec3eac7549869365fe263831f576c8457f6c833937c68542d08fde73457d291",
668 | "sha256:e371b844cec09d8dc424d940e54bba8f67a03ebea20ff7b7b0d56f526c71d584",
669 | "sha256:e5d8f84d81e3729c3b506657dddfe46e8ba9c330bf1858ee33108f8bb2adb38a",
670 | "sha256:ea6b79a02a28550c98b6ca9c35b9f492beaa54d7c5c9e9949555893c8a9234d0",
671 | "sha256:f1258f4e6c42ad0b20f9cfcc3ada5bd6b83374516cd01c0960e3cb75fdca6770"
672 | ],
673 | "markers": "python_version >= '3.7'",
674 | "version": "==0.19.2"
675 | },
676 | "python-dateutil": {
677 | "hashes": [
678 | "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86",
679 | "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"
680 | ],
681 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
682 | "version": "==2.8.2"
683 | },
684 | "pytz": {
685 | "hashes": [
686 | "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427",
687 | "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"
688 | ],
689 | "version": "==2022.6"
690 | },
691 | "pyzmq": {
692 | "hashes": [
693 | "sha256:0108358dab8c6b27ff6b985c2af4b12665c1bc659648284153ee501000f5c107",
694 | "sha256:07bec1a1b22dacf718f2c0e71b49600bb6a31a88f06527dfd0b5aababe3fa3f7",
695 | "sha256:0e8f482c44ccb5884bf3f638f29bea0f8dc68c97e38b2061769c4cb697f6140d",
696 | "sha256:0ec91f1bad66f3ee8c6deb65fa1fe418e8ad803efedd69c35f3b5502f43bd1dc",
697 | "sha256:0f14cffd32e9c4c73da66db97853a6aeceaac34acdc0fae9e5bbc9370281864c",
698 | "sha256:15975747462ec49fdc863af906bab87c43b2491403ab37a6d88410635786b0f4",
699 | "sha256:1724117bae69e091309ffb8255412c4651d3f6355560d9af312d547f6c5bc8b8",
700 | "sha256:1a7c280185c4da99e0cc06c63bdf91f5b0b71deb70d8717f0ab870a43e376db8",
701 | "sha256:1b7928bb7580736ffac5baf814097be342ba08d3cfdfb48e52773ec959572287",
702 | "sha256:2032d9cb994ce3b4cba2b8dfae08c7e25bc14ba484c770d4d3be33c27de8c45b",
703 | "sha256:20e7eeb1166087db636c06cae04a1ef59298627f56fb17da10528ab52a14c87f",
704 | "sha256:216f5d7dbb67166759e59b0479bca82b8acf9bed6015b526b8eb10143fb08e77",
705 | "sha256:28b119ba97129d3001673a697b7cce47fe6de1f7255d104c2f01108a5179a066",
706 | "sha256:3104f4b084ad5d9c0cb87445cc8cfd96bba710bef4a66c2674910127044df209",
707 | "sha256:3e6192dbcefaaa52ed81be88525a54a445f4b4fe2fffcae7fe40ebb58bd06bfd",
708 | "sha256:42d4f97b9795a7aafa152a36fe2ad44549b83a743fd3e77011136def512e6c2a",
709 | "sha256:44e706bac34e9f50779cb8c39f10b53a4d15aebb97235643d3112ac20bd577b4",
710 | "sha256:47b11a729d61a47df56346283a4a800fa379ae6a85870d5a2e1e4956c828eedc",
711 | "sha256:4854f9edc5208f63f0841c0c667260ae8d6846cfa233c479e29fdc85d42ebd58",
712 | "sha256:48f721f070726cd2a6e44f3c33f8ee4b24188e4b816e6dd8ba542c8c3bb5b246",
713 | "sha256:52afb0ac962963fff30cf1be775bc51ae083ef4c1e354266ab20e5382057dd62",
714 | "sha256:54d8b9c5e288362ec8595c1d98666d36f2070fd0c2f76e2b3c60fbad9bd76227",
715 | "sha256:5bd3d7dfd9cd058eb68d9a905dec854f86649f64d4ddf21f3ec289341386c44b",
716 | "sha256:613010b5d17906c4367609e6f52e9a2595e35d5cc27d36ff3f1b6fa6e954d944",
717 | "sha256:624321120f7e60336be8ec74a172ae7fba5c3ed5bf787cc85f7e9986c9e0ebc2",
718 | "sha256:65c94410b5a8355cfcf12fd600a313efee46ce96a09e911ea92cf2acf6708804",
719 | "sha256:6640f83df0ae4ae1104d4c62b77e9ef39be85ebe53f636388707d532bee2b7b8",
720 | "sha256:687700f8371643916a1d2c61f3fdaa630407dd205c38afff936545d7b7466066",
721 | "sha256:77c2713faf25a953c69cf0f723d1b7dd83827b0834e6c41e3fb3bbc6765914a1",
722 | "sha256:78068e8678ca023594e4a0ab558905c1033b2d3e806a0ad9e3094e231e115a33",
723 | "sha256:7a23ccc1083c260fa9685c93e3b170baba45aeed4b524deb3f426b0c40c11639",
724 | "sha256:7abddb2bd5489d30ffeb4b93a428130886c171b4d355ccd226e83254fcb6b9ef",
725 | "sha256:80093b595921eed1a2cead546a683b9e2ae7f4a4592bb2ab22f70d30174f003a",
726 | "sha256:8242543c522d84d033fe79be04cb559b80d7eb98ad81b137ff7e0a9020f00ace",
727 | "sha256:838812c65ed5f7c2bd11f7b098d2e5d01685a3f6d1f82849423b570bae698c00",
728 | "sha256:83ea1a398f192957cb986d9206ce229efe0ee75e3c6635baff53ddf39bd718d5",
729 | "sha256:8421aa8c9b45ea608c205db9e1c0c855c7e54d0e9c2c2f337ce024f6843cab3b",
730 | "sha256:858375573c9225cc8e5b49bfac846a77b696b8d5e815711b8d4ba3141e6e8879",
731 | "sha256:86de64468cad9c6d269f32a6390e210ca5ada568c7a55de8e681ca3b897bb340",
732 | "sha256:87f7ac99b15270db8d53f28c3c7b968612993a90a5cf359da354efe96f5372b4",
733 | "sha256:8bad8210ad4df68c44ff3685cca3cda448ee46e20d13edcff8909eba6ec01ca4",
734 | "sha256:8bb4af15f305056e95ca1bd086239b9ebc6ad55e9f49076d27d80027f72752f6",
735 | "sha256:8c78bfe20d4c890cb5580a3b9290f700c570e167d4cdcc55feec07030297a5e3",
736 | "sha256:8f3f3154fde2b1ff3aa7b4f9326347ebc89c8ef425ca1db8f665175e6d3bd42f",
737 | "sha256:94010bd61bc168c103a5b3b0f56ed3b616688192db7cd5b1d626e49f28ff51b3",
738 | "sha256:941fab0073f0a54dc33d1a0460cb04e0d85893cb0c5e1476c785000f8b359409",
739 | "sha256:9dca7c3956b03b7663fac4d150f5e6d4f6f38b2462c1e9afd83bcf7019f17913",
740 | "sha256:a180dbd5ea5d47c2d3b716d5c19cc3fb162d1c8db93b21a1295d69585bfddac1",
741 | "sha256:a2712aee7b3834ace51738c15d9ee152cc5a98dc7d57dd93300461b792ab7b43",
742 | "sha256:a435ef8a3bd95c8a2d316d6e0ff70d0db524f6037411652803e118871d703333",
743 | "sha256:abb756147314430bee5d10919b8493c0ccb109ddb7f5dfd2fcd7441266a25b75",
744 | "sha256:abe6eb10122f0d746a0d510c2039ae8edb27bc9af29f6d1b05a66cc2401353ff",
745 | "sha256:acbd0a6d61cc954b9f535daaa9ec26b0a60a0d4353c5f7c1438ebc88a359a47e",
746 | "sha256:ae08ac90aa8fa14caafc7a6251bd218bf6dac518b7bff09caaa5e781119ba3f2",
747 | "sha256:ae61446166983c663cee42c852ed63899e43e484abf080089f771df4b9d272ef",
748 | "sha256:afe1f3bc486d0ce40abb0a0c9adb39aed3bbac36ebdc596487b0cceba55c21c1",
749 | "sha256:b946da90dc2799bcafa682692c1d2139b2a96ec3c24fa9fc6f5b0da782675330",
750 | "sha256:b947e264f0e77d30dcbccbb00f49f900b204b922eb0c3a9f0afd61aaa1cedc3d",
751 | "sha256:bb5635c851eef3a7a54becde6da99485eecf7d068bd885ac8e6d173c4ecd68b0",
752 | "sha256:bcbebd369493d68162cddb74a9c1fcebd139dfbb7ddb23d8f8e43e6c87bac3a6",
753 | "sha256:c31805d2c8ade9b11feca4674eee2b9cce1fec3e8ddb7bbdd961a09dc76a80ea",
754 | "sha256:c8840f064b1fb377cffd3efeaad2b190c14d4c8da02316dae07571252d20b31f",
755 | "sha256:ccb94342d13e3bf3ffa6e62f95b5e3f0bc6bfa94558cb37f4b3d09d6feb536ff",
756 | "sha256:d66689e840e75221b0b290b0befa86f059fb35e1ee6443bce51516d4d61b6b99",
757 | "sha256:dabf1a05318d95b1537fd61d9330ef4313ea1216eea128a17615038859da3b3b",
758 | "sha256:db03704b3506455d86ec72c3358a779e9b1d07b61220dfb43702b7b668edcd0d",
759 | "sha256:de4217b9eb8b541cf2b7fde4401ce9d9a411cc0af85d410f9d6f4333f43640be",
760 | "sha256:df0841f94928f8af9c7a1f0aaaffba1fb74607af023a152f59379c01c53aee58",
761 | "sha256:dfb992dbcd88d8254471760879d48fb20836d91baa90f181c957122f9592b3dc",
762 | "sha256:e7e66b4e403c2836ac74f26c4b65d8ac0ca1eef41dfcac2d013b7482befaad83",
763 | "sha256:e8012bce6836d3f20a6c9599f81dfa945f433dab4dbd0c4917a6fb1f998ab33d",
764 | "sha256:f01de4ec083daebf210531e2cca3bdb1608dbbbe00a9723e261d92087a1f6ebc",
765 | "sha256:f0d945a85b70da97ae86113faf9f1b9294efe66bd4a5d6f82f2676d567338b66",
766 | "sha256:fa0ae3275ef706c0309556061185dd0e4c4cd3b7d6f67ae617e4e677c7a41e2e"
767 | ],
768 | "markers": "python_version >= '3.6'",
769 | "version": "==24.0.1"
770 | },
771 | "requests": {
772 | "hashes": [
773 | "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983",
774 | "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"
775 | ],
776 | "markers": "python_version >= '3.7' and python_version < '4'",
777 | "version": "==2.28.1"
778 | },
779 | "send2trash": {
780 | "hashes": [
781 | "sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d",
782 | "sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08"
783 | ],
784 | "version": "==1.8.0"
785 | },
786 | "six": {
787 | "hashes": [
788 | "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
789 | "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
790 | ],
791 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
792 | "version": "==1.16.0"
793 | },
794 | "sniffio": {
795 | "hashes": [
796 | "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101",
797 | "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"
798 | ],
799 | "markers": "python_version >= '3.7'",
800 | "version": "==1.3.0"
801 | },
802 | "soupsieve": {
803 | "hashes": [
804 | "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759",
805 | "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"
806 | ],
807 | "markers": "python_version >= '3.6'",
808 | "version": "==2.3.2.post1"
809 | },
810 | "stack-data": {
811 | "hashes": [
812 | "sha256:8e515439f818efaa251036af72d89e4026e2b03993f3453c000b200fb4f2d6aa",
813 | "sha256:b92d206ef355a367d14316b786ab41cb99eb453a21f2cb216a4204625ff7bc07"
814 | ],
815 | "version": "==0.6.0"
816 | },
817 | "terminado": {
818 | "hashes": [
819 | "sha256:520feaa3aeab8ad64a69ca779be54be9234edb2d0d6567e76c93c2c9a4e6e43f",
820 | "sha256:bf6fe52accd06d0661d7611cc73202121ec6ee51e46d8185d489ac074ca457c2"
821 | ],
822 | "markers": "python_version >= '3.7'",
823 | "version": "==0.17.0"
824 | },
825 | "tinycss2": {
826 | "hashes": [
827 | "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847",
828 | "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"
829 | ],
830 | "markers": "python_version >= '3.7'",
831 | "version": "==1.2.1"
832 | },
833 | "tomli": {
834 | "hashes": [
835 | "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
836 | "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
837 | ],
838 | "markers": "python_version >= '3.7'",
839 | "version": "==2.0.1"
840 | },
841 | "tornado": {
842 | "hashes": [
843 | "sha256:1d54d13ab8414ed44de07efecb97d4ef7c39f7438cf5e976ccd356bebb1b5fca",
844 | "sha256:20f638fd8cc85f3cbae3c732326e96addff0a15e22d80f049e00121651e82e72",
845 | "sha256:5c87076709343557ef8032934ce5f637dbb552efa7b21d08e89ae7619ed0eb23",
846 | "sha256:5f8c52d219d4995388119af7ccaa0bcec289535747620116a58d830e7c25d8a8",
847 | "sha256:6fdfabffd8dfcb6cf887428849d30cf19a3ea34c2c248461e1f7d718ad30b66b",
848 | "sha256:87dcafae3e884462f90c90ecc200defe5e580a7fbbb4365eda7c7c1eb809ebc9",
849 | "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13",
850 | "sha256:b8150f721c101abdef99073bf66d3903e292d851bee51910839831caba341a75",
851 | "sha256:ba09ef14ca9893954244fd872798b4ccb2367c165946ce2dd7376aebdde8e3ac",
852 | "sha256:d3a2f5999215a3a06a4fc218026cd84c61b8b2b40ac5296a6db1f1451ef04c1e",
853 | "sha256:e5f923aa6a47e133d1cf87d60700889d7eae68988704e20c75fb2d65677a8e4b"
854 | ],
855 | "markers": "python_version >= '3.7'",
856 | "version": "==6.2"
857 | },
858 | "traitlets": {
859 | "hashes": [
860 | "sha256:1201b2c9f76097195989cdf7f65db9897593b0dfd69e4ac96016661bb6f0d30f",
861 | "sha256:b122f9ff2f2f6c1709dab289a05555be011c87828e911c0cf4074b85cb780a79"
862 | ],
863 | "markers": "python_version >= '3.7'",
864 | "version": "==5.5.0"
865 | },
866 | "urllib3": {
867 | "hashes": [
868 | "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e",
869 | "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"
870 | ],
871 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'",
872 | "version": "==1.26.12"
873 | },
874 | "verboselogs": {
875 | "hashes": [
876 | "sha256:d63f23bf568295b95d3530c6864a0b580cec70e7ff974177dead1e4ffbc6ff49",
877 | "sha256:e33ddedcdfdafcb3a174701150430b11b46ceb64c2a9a26198c76a156568e427"
878 | ],
879 | "index": "pypi",
880 | "version": "==1.7"
881 | },
882 | "wcwidth": {
883 | "hashes": [
884 | "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784",
885 | "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"
886 | ],
887 | "version": "==0.2.5"
888 | },
889 | "webencodings": {
890 | "hashes": [
891 | "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78",
892 | "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"
893 | ],
894 | "version": "==0.5.1"
895 | },
896 | "websocket-client": {
897 | "hashes": [
898 | "sha256:d6b06432f184438d99ac1f456eaf22fe1ade524c3dd16e661142dc54e9cba574",
899 | "sha256:d6e8f90ca8e2dd4e8027c4561adeb9456b54044312dba655e7cae652ceb9ae59"
900 | ],
901 | "markers": "python_version >= '3.7'",
902 | "version": "==1.4.2"
903 | },
904 | "zipp": {
905 | "hashes": [
906 | "sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1",
907 | "sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8"
908 | ],
909 | "markers": "python_version >= '3.7'",
910 | "version": "==3.10.0"
911 | }
912 | },
913 | "develop": {}
914 | }
915 |
--------------------------------------------------------------------------------
/Worshop Python # 7: Ficheros/files.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Manejo de archivos"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "## import de librerias"
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 1,
20 | "metadata": {},
21 | "outputs": [],
22 | "source": [
23 | "import io\n",
24 | "import os\n",
25 | "import struct\n",
26 | "import time"
27 | ]
28 | },
29 | {
30 | "cell_type": "markdown",
31 | "metadata": {},
32 | "source": [
33 | "### Clase para el tratamiento de datos"
34 | ]
35 | },
36 | {
37 | "cell_type": "code",
38 | "execution_count": 2,
39 | "metadata": {},
40 | "outputs": [],
41 | "source": [
42 | "file_read: str = \"iris_df.csv\"\n",
43 | "file_bk: str = \"iris_bk.csv\"\n",
44 | "file_created: str = \"iris_created.csv\"\n",
45 | "iris_binary: str = \"iris_binary.bin\"\n",
46 | "iris_bk_test: str = \"iris_bk_test.csv\"\n",
47 | "\n",
48 | "os.remove(file_created)\n",
49 | "\n",
50 | "class IrisClass:\n",
51 | " def __init__(\n",
52 | " self,\n",
53 | " sepal_length: str,\n",
54 | " sepal_width: str,\n",
55 | " petal_length: str,\n",
56 | " petal_width: str,\n",
57 | " class_type: str\n",
58 | " ) -> None:\n",
59 | " self.sepal_length = float(sepal_length)\n",
60 | " self.sepal_width = float(sepal_width)\n",
61 | " self.petal_length = float(petal_length)\n",
62 | " self.petal_width = float(petal_width)\n",
63 | " self.class_type = class_type.replace(\"\\n\", \"\")\n",
64 | "\n",
65 | " def transform_class_type(self) -> str:\n",
66 | " mapper = {\n",
67 | " \"Iris-setosa\": 1,\n",
68 | " \"Iris-versicolor\": 2,\n",
69 | " \"Iris-virginica\": 3,\n",
70 | " }\n",
71 | " n_class_type = mapper[self.class_type]\n",
72 | "\n",
73 | " return (\n",
74 | " f'{self.sepal_length},'\n",
75 | " f'{self.sepal_width},'\n",
76 | " f'{self.petal_length},'\n",
77 | " f'{self.petal_width},'\n",
78 | " f'{n_class_type}'\n",
79 | " )\n",
80 | "\n",
81 | " def return_list_numbers(self) -> list:\n",
82 | " mapper = {\n",
83 | " \"Iris-setosa\": 1,\n",
84 | " \"Iris-versicolor\": 2,\n",
85 | " \"Iris-virginica\": 3,\n",
86 | " }\n",
87 | " n_class_type = mapper[self.class_type]\n",
88 | "\n",
89 | " return [\n",
90 | " self.sepal_length,\n",
91 | " self.sepal_width,\n",
92 | " self.petal_length,\n",
93 | " self.petal_width,\n",
94 | " n_class_type,\n",
95 | " ]\n",
96 | "\n",
97 | " def __str__(self) -> str:\n",
98 | " return (\n",
99 | " f'Class Flower: {self.class_type}\\n'\n",
100 | " f'Sepal Size: [{self.sepal_length}, {self.sepal_width}]\\n'\n",
101 | " f'Petal Size: [{self.petal_length}, {self.petal_width}]\\n'\n",
102 | " )\n",
103 | "\n",
104 | " def __repr__(self) -> str:\n",
105 | " return (\n",
106 | " f'Class Flower: {self.class_type}\\n'\n",
107 | " f'Sepal Length: {self.sepal_length}\\n'\n",
108 | " f'Sepal Width: {self.sepal_width}\\n'\n",
109 | " f'Petal Length: {self.petal_length}\\n'\n",
110 | " f'Petal Width: {self.petal_width}\\n'\n",
111 | " )"
112 | ]
113 | },
114 | {
115 | "cell_type": "markdown",
116 | "metadata": {},
117 | "source": [
118 | "## Funciones para abrir archivos\n",
119 | "\n",
120 | " Existen dos maneras de abrir los archivos:\n",
121 | "
\n",
122 | " - open y close de forma tradicional
\n",
123 | " - open usando contexto, en este no se usa close el mismo contexto lo aplica
\n",
124 | "
\n",
125 | ""
126 | ]
127 | },
128 | {
129 | "cell_type": "markdown",
130 | "metadata": {},
131 | "source": [
132 | "### Forma tradicional"
133 | ]
134 | },
135 | {
136 | "cell_type": "code",
137 | "execution_count": 3,
138 | "metadata": {},
139 | "outputs": [
140 | {
141 | "name": "stdout",
142 | "output_type": "stream",
143 | "text": [
144 | "5.1,3.5,1.4,0.2,Iris-setosa\n",
145 | "4.9,3.0,1.4,0.2,Iris-setosa\n",
146 | "4.7,3.2,1.3,0.2,Iris-setosa\n",
147 | "4.6,3.1,1.5,0.2,Iris-setosa\n",
148 | "5.0,3.6,1.4,0.2,Iris-setosa\n"
149 | ]
150 | }
151 | ],
152 | "source": [
153 | "f = open(file_read, \"r\", encoding=\"utf-8\")\n",
154 | "lines = 5\n",
155 | "count = 0\n",
156 | "\n",
157 | "for line in f:\n",
158 | " count += 1\n",
159 | " print(line.replace(\"\\n\", \"\"))\n",
160 | "\n",
161 | " if count == lines:\n",
162 | " break\n",
163 | "\n",
164 | "f.close()"
165 | ]
166 | },
167 | {
168 | "cell_type": "markdown",
169 | "metadata": {},
170 | "source": [
171 | "### Usando open como contexto"
172 | ]
173 | },
174 | {
175 | "cell_type": "code",
176 | "execution_count": 4,
177 | "metadata": {},
178 | "outputs": [
179 | {
180 | "name": "stdout",
181 | "output_type": "stream",
182 | "text": [
183 | "5.1,3.5,1.4,0.2,Iris-setosa\n",
184 | "4.9,3.0,1.4,0.2,Iris-setosa\n",
185 | "4.7,3.2,1.3,0.2,Iris-setosa\n",
186 | "4.6,3.1,1.5,0.2,Iris-setosa\n",
187 | "5.0,3.6,1.4,0.2,Iris-setosa\n"
188 | ]
189 | }
190 | ],
191 | "source": [
192 | "with open(file_read, \"r\", encoding=\"utf-8\") as f:\n",
193 | " lines = 5\n",
194 | " count = 0\n",
195 | "\n",
196 | " for line in f:\n",
197 | " count += 1\n",
198 | " print(line.replace(\"\\n\", \"\"))\n",
199 | "\n",
200 | " if count == lines:\n",
201 | " break"
202 | ]
203 | },
204 | {
205 | "cell_type": "markdown",
206 | "metadata": {},
207 | "source": [
208 | "## Leyendo un archivo\n",
209 | "\n",
210 | " Se pueden leer los archivos de dos formas:\n",
211 | "
\n",
212 | " - usando `readlines` para leer el archivo completo
\n",
213 | " - usando el `objeto File` como iterador para leer linea por linea
\n",
214 | "
\n",
215 | ""
216 | ]
217 | },
218 | {
219 | "cell_type": "markdown",
220 | "metadata": {},
221 | "source": [
222 | "#### Todas las lineas"
223 | ]
224 | },
225 | {
226 | "cell_type": "code",
227 | "execution_count": 5,
228 | "metadata": {},
229 | "outputs": [
230 | {
231 | "name": "stdout",
232 | "output_type": "stream",
233 | "text": [
234 | "Muestra de lineas: ['5.1,3.5,1.4,0.2,Iris-setosa\\n', '4.9,3.0,1.4,0.2,Iris-setosa\\n', '4.7,3.2,1.3,0.2,Iris-setosa\\n', '4.6,3.1,1.5,0.2,Iris-setosa\\n', '5.0,3.6,1.4,0.2,Iris-setosa\\n']\n",
235 | "Numero de lineas en el archivo 151\n"
236 | ]
237 | }
238 | ],
239 | "source": [
240 | "with open(file_read, \"r\", encoding=\"utf-8\") as f:\n",
241 | " all_lines = f.readlines()\n",
242 | " print(\"Muestra de lineas: \", all_lines[:5])\n",
243 | " print(\"Numero de lineas en el archivo\", len(all_lines))"
244 | ]
245 | },
246 | {
247 | "cell_type": "markdown",
248 | "metadata": {},
249 | "source": [
250 | "### Linea por linea"
251 | ]
252 | },
253 | {
254 | "cell_type": "code",
255 | "execution_count": 6,
256 | "metadata": {},
257 | "outputs": [
258 | {
259 | "name": "stdout",
260 | "output_type": "stream",
261 | "text": [
262 | "['5.1,3.5,1.4,0.2,Iris-setosa\\n', '4.9,3.0,1.4,0.2,Iris-setosa\\n', '4.7,3.2,1.3,0.2,Iris-setosa\\n', '4.6,3.1,1.5,0.2,Iris-setosa\\n', '5.0,3.6,1.4,0.2,Iris-setosa\\n']\n",
263 | "151\n",
264 | "********************************************************************************\n",
265 | "['5.1,3.5,1.4,0.2,Iris-setosa\\n', '4.9,3.0,1.4,0.2,Iris-setosa\\n', '4.7,3.2,1.3,0.2,Iris-setosa\\n', '4.6,3.1,1.5,0.2,Iris-setosa\\n', '5.0,3.6,1.4,0.2,Iris-setosa\\n', '5.4,3.9,1.7,0.4,Iris-setosa\\n']\n"
266 | ]
267 | }
268 | ],
269 | "source": [
270 | "num_read_lines = 5\n",
271 | "\n",
272 | "with open(file_read, \"r\", encoding=\"utf-8\") as f:\n",
273 | " # Leyendo todo el archivo usando el iterador\n",
274 | " other_lines = []\n",
275 | " all_lines = [line for line in f]\n",
276 | " print(all_lines[:5])\n",
277 | " print(len(all_lines))\n",
278 | " print(\"*\" * 80)\n",
279 | " # este metodo sirve para regresar el apuntador del archivo al principio\n",
280 | " f.seek(0)\n",
281 | "\n",
282 | " # leyendo solo 5 lineas del archivo\n",
283 | " for i, line in enumerate(f):\n",
284 | " other_lines.append(line)\n",
285 | "\n",
286 | " if i == num_read_lines:\n",
287 | " break\n",
288 | "\n",
289 | " print(other_lines)"
290 | ]
291 | },
292 | {
293 | "cell_type": "markdown",
294 | "metadata": {},
295 | "source": [
296 | "## Escribiendo un archivo\n",
297 | "\n",
298 | " Para escribir un archivo podemos hacer uso de estos 3 modos:\n",
299 | "
\n",
300 | " - `w` - sirve para crear el archivo, pero si existe lo borra
\n",
301 | " - `a` - sirve para agregar nuevos elementos al archivo
\n",
302 | " - `x` - sirve solo para crear el archivo, falla si el archivo existe
\n",
303 | "
\n",
304 | "\n",
305 | "\n",
306 | "\n",
307 | " De igual manera para agregar texto al archivo se usa:\n",
308 | "
\n",
309 | " - `write` - se usa para escribir solo una linea en el archivo
\n",
310 | " - `writelines` - se usa para escribir multiples lineas (list) en el archivo
\n",
311 | "
\n",
312 | ""
313 | ]
314 | },
315 | {
316 | "cell_type": "markdown",
317 | "metadata": {},
318 | "source": [
319 | "### Leyendo el archivo para reescrirlo"
320 | ]
321 | },
322 | {
323 | "cell_type": "code",
324 | "execution_count": 7,
325 | "metadata": {},
326 | "outputs": [
327 | {
328 | "name": "stdout",
329 | "output_type": "stream",
330 | "text": [
331 | "['5.1,3.5,1.4,0.2,Iris-setosa\\n', '4.9,3.0,1.4,0.2,Iris-setosa\\n', '4.7,3.2,1.3,0.2,Iris-setosa\\n', '4.6,3.1,1.5,0.2,Iris-setosa\\n', '5.0,3.6,1.4,0.2,Iris-setosa\\n']\n",
332 | "********************************************************************************\n",
333 | "[['5.1', '3.5', '1.4', '0.2', 'Iris-setosa\\n'], ['4.9', '3.0', '1.4', '0.2', 'Iris-setosa\\n'], ['4.7', '3.2', '1.3', '0.2', 'Iris-setosa\\n'], ['4.6', '3.1', '1.5', '0.2', 'Iris-setosa\\n'], ['5.0', '3.6', '1.4', '0.2', 'Iris-setosa\\n']]\n",
334 | "5\n",
335 | "Class Flower: Iris-setosa\n",
336 | "Sepal Size: [5.1, 3.5]\n",
337 | "Petal Size: [1.4, 0.2]\n",
338 | "\n"
339 | ]
340 | }
341 | ],
342 | "source": [
343 | "with open(file_read, \"r\", encoding=\"utf-8\") as f:\n",
344 | " all_lines = f.readlines()\n",
345 | " print(all_lines[:5])\n",
346 | "\n",
347 | "print(\"*\" * 80)\n",
348 | "clean_lines = [line.split(\",\") for line in all_lines]\n",
349 | "print(clean_lines[:5])\n",
350 | "print(len(clean_lines[0]))\n",
351 | "# Creando clase para parseo\n",
352 | "iris_class = [\n",
353 | " IrisClass(line[0], line[1], line[2], line[3], line[4])\n",
354 | " for line in clean_lines\n",
355 | " if len(line) == 5\n",
356 | "]\n",
357 | "print(iris_class[0])"
358 | ]
359 | },
360 | {
361 | "cell_type": "markdown",
362 | "metadata": {},
363 | "source": [
364 | "### Reescribiendo el archivo (cambiando el valor del tipo de Iris a numerico)"
365 | ]
366 | },
367 | {
368 | "cell_type": "markdown",
369 | "metadata": {},
370 | "source": [
371 | "#### Usando `write`"
372 | ]
373 | },
374 | {
375 | "cell_type": "code",
376 | "execution_count": 8,
377 | "metadata": {},
378 | "outputs": [
379 | {
380 | "name": "stdout",
381 | "output_type": "stream",
382 | "text": [
383 | "Is not possible read file `not readable`\n"
384 | ]
385 | }
386 | ],
387 | "source": [
388 | "with open(file_bk, \"w\", encoding=\"utf-8\") as f:\n",
389 | " try:\n",
390 | " f.readlines()\n",
391 | " except io.UnsupportedOperation as uo:\n",
392 | " print(\"Is not possible read file `%s`\" % str(uo))\n",
393 | "\n",
394 | " for iris in iris_class:\n",
395 | " f.write(iris.transform_class_type() + \"\\n\")"
396 | ]
397 | },
398 | {
399 | "cell_type": "markdown",
400 | "metadata": {},
401 | "source": [
402 | "#### Usando `writelines`"
403 | ]
404 | },
405 | {
406 | "cell_type": "code",
407 | "execution_count": 9,
408 | "metadata": {},
409 | "outputs": [],
410 | "source": [
411 | "with open(file_bk, \"w\", encoding=\"utf-8\") as f:\n",
412 | " all_lines_w = [iris.transform_class_type() + \"\\n\" for iris in iris_class]\n",
413 | " f.writelines(all_lines_w)"
414 | ]
415 | },
416 | {
417 | "cell_type": "markdown",
418 | "metadata": {},
419 | "source": [
420 | "#### Usando `a` para agregar nuevas lineas"
421 | ]
422 | },
423 | {
424 | "cell_type": "markdown",
425 | "metadata": {},
426 | "source": [
427 | "##### Usando `write`"
428 | ]
429 | },
430 | {
431 | "cell_type": "code",
432 | "execution_count": 10,
433 | "metadata": {},
434 | "outputs": [
435 | {
436 | "name": "stdout",
437 | "output_type": "stream",
438 | "text": [
439 | "Is not possible read file `not readable`\n"
440 | ]
441 | }
442 | ],
443 | "source": [
444 | "with open(file_bk, \"a\", encoding=\"utf-8\") as f:\n",
445 | " try:\n",
446 | " f.readlines()\n",
447 | " except io.UnsupportedOperation as uo:\n",
448 | " print(\"Is not possible read file `%s`\" % str(uo))\n",
449 | "\n",
450 | " new_lines = [\n",
451 | " iris.transform_class_type() + \"\\n\" for iris in iris_class\n",
452 | " ][:5]\n",
453 | "\n",
454 | " for line in new_lines:\n",
455 | " f.write(line)"
456 | ]
457 | },
458 | {
459 | "cell_type": "markdown",
460 | "metadata": {},
461 | "source": [
462 | "#### Usando `writelines`"
463 | ]
464 | },
465 | {
466 | "cell_type": "code",
467 | "execution_count": 11,
468 | "metadata": {},
469 | "outputs": [],
470 | "source": [
471 | "with open(file_bk, \"a\", encoding=\"utf-8\") as f:\n",
472 | " new_lines = [\n",
473 | " iris.transform_class_type() + \"\\n\" for iris in iris_class\n",
474 | " ][:5]\n",
475 | "\n",
476 | " f.writelines(new_lines)"
477 | ]
478 | },
479 | {
480 | "cell_type": "markdown",
481 | "metadata": {},
482 | "source": [
483 | "#### Usando `x`"
484 | ]
485 | },
486 | {
487 | "cell_type": "code",
488 | "execution_count": 12,
489 | "metadata": {},
490 | "outputs": [],
491 | "source": [
492 | "with open(file_created, \"x\", encoding=\"utf-8\") as f:\n",
493 | " new_lines = [\n",
494 | " iris.transform_class_type() + \"\\n\" for iris in iris_class\n",
495 | " ][:5]\n",
496 | "\n",
497 | " f.writelines(new_lines)\n",
498 | "\n",
499 | " for line in new_lines:\n",
500 | " f.write(line)"
501 | ]
502 | },
503 | {
504 | "cell_type": "code",
505 | "execution_count": 13,
506 | "metadata": {},
507 | "outputs": [
508 | {
509 | "name": "stdout",
510 | "output_type": "stream",
511 | "text": [
512 | "[Errno 17] File exists: 'iris_created.csv'\n"
513 | ]
514 | }
515 | ],
516 | "source": [
517 | "try:\n",
518 | " with open(file_created, \"x\", encoding=\"utf-8\") as f:\n",
519 | " new_lines = [\n",
520 | " iris.transform_class_type() + \"\\n\" for iris in iris_class\n",
521 | " ][:5]\n",
522 | "\n",
523 | " f.writelines(new_lines)\n",
524 | "except FileExistsError as fee:\n",
525 | " print(fee)"
526 | ]
527 | },
528 | {
529 | "cell_type": "markdown",
530 | "metadata": {},
531 | "source": [
532 | "### Creando y leyendo un archivo binario\n",
533 | "\n",
534 | "\n",
535 | " Para este ejemplo se usa el mismo dataset, debido a que se usan numeros de punto flotante\n",
536 | " se debe de hacer un empaquetado con la libreria `struct` nativa de python.\n",
537 | "
\n",
538 | "\n",
539 | " Para la parte de leer se tiene que hacer el proceso inverso, en este caso por ser de\n",
540 | " tipo flotante se debe declarar un buffer de 4 bytes:\n",
541 | " https://docs.python.org/3/library/struct.html#format-characters\n",
542 | "
"
543 | ]
544 | },
545 | {
546 | "cell_type": "code",
547 | "execution_count": 14,
548 | "metadata": {},
549 | "outputs": [],
550 | "source": [
551 | "with open(iris_binary, \"wb\") as f:\n",
552 | " new_lines = [\n",
553 | " struct.pack(\n",
554 | " '%sf' % len(iris.return_list_numbers()),\n",
555 | " *iris.return_list_numbers(),\n",
556 | " )\n",
557 | " for iris in iris_class\n",
558 | " ]\n",
559 | "\n",
560 | " f.writelines(new_lines)"
561 | ]
562 | },
563 | {
564 | "cell_type": "code",
565 | "execution_count": 15,
566 | "metadata": {},
567 | "outputs": [
568 | {
569 | "name": "stdout",
570 | "output_type": "stream",
571 | "text": [
572 | "[[5.099999904632568, 3.5, 1.399999976158142, 0.20000000298023224, 1.0], [4.900000095367432, 3.0, 1.399999976158142, 0.20000000298023224, 1.0], [4.699999809265137, 3.200000047683716, 1.2999999523162842, 0.20000000298023224, 1.0], [4.599999904632568, 3.0999999046325684, 1.5, 0.20000000298023224, 1.0], [5.0, 3.5999999046325684, 1.399999976158142, 0.20000000298023224, 1.0]]\n"
573 | ]
574 | }
575 | ],
576 | "source": [
577 | "with open(iris_binary, \"rb\") as f:\n",
578 | " array_complete = []\n",
579 | " simple_array = []\n",
580 | "\n",
581 | " while (buff := f.read(4)):\n",
582 | " simple_array.append(struct.unpack(\"f\", buff)[0])\n",
583 | "\n",
584 | " if len(simple_array) == 5:\n",
585 | " array_complete.append(simple_array)\n",
586 | " simple_array = []\n",
587 | "\n",
588 | "print(array_complete[:5])"
589 | ]
590 | },
591 | {
592 | "cell_type": "markdown",
593 | "metadata": {},
594 | "source": [
595 | "#### usando `+`"
596 | ]
597 | },
598 | {
599 | "cell_type": "markdown",
600 | "metadata": {},
601 | "source": [
602 | "#### Escribiendo el archivo"
603 | ]
604 | },
605 | {
606 | "cell_type": "code",
607 | "execution_count": 16,
608 | "metadata": {},
609 | "outputs": [
610 | {
611 | "name": "stdout",
612 | "output_type": "stream",
613 | "text": [
614 | "********************************************************************************\n",
615 | "[]\n",
616 | "********************************************************************************\n",
617 | "********************************************************************************\n",
618 | "['5.1,3.5,1.4,0.2,1\\n', '4.9,3.0,1.4,0.2,1\\n', '4.7,3.2,1.3,0.2,1\\n', '4.6,3.1,1.5,0.2,1\\n', '5.0,3.6,1.4,0.2,1\\n']\n",
619 | "********************************************************************************\n"
620 | ]
621 | }
622 | ],
623 | "source": [
624 | "with open(iris_bk_test, \"w+\") as f:\n",
625 | " lines = f.readlines()\n",
626 | " print(\"*\" * 80)\n",
627 | " print(lines)\n",
628 | " print(\"*\" * 80)\n",
629 | " new_lines = [\n",
630 | " iris.transform_class_type() + \"\\n\" for iris in iris_class\n",
631 | " ]\n",
632 | " time.sleep(20)\n",
633 | " f.writelines(new_lines)\n",
634 | " f.seek(0)\n",
635 | " lines = f.readlines()\n",
636 | " print(\"*\" * 80)\n",
637 | " print(lines[:5])\n",
638 | " print(\"*\" * 80)"
639 | ]
640 | },
641 | {
642 | "cell_type": "markdown",
643 | "metadata": {},
644 | "source": [
645 | "#### Leyendo el archivo"
646 | ]
647 | },
648 | {
649 | "cell_type": "code",
650 | "execution_count": 17,
651 | "metadata": {},
652 | "outputs": [
653 | {
654 | "name": "stdout",
655 | "output_type": "stream",
656 | "text": [
657 | "['5.1,3.5,1.4,0.2,1\\n', '4.9,3.0,1.4,0.2,1\\n', '4.7,3.2,1.3,0.2,1\\n', '4.6,3.1,1.5,0.2,1\\n', '5.0,3.6,1.4,0.2,1\\n']\n"
658 | ]
659 | }
660 | ],
661 | "source": [
662 | "with open(iris_bk_test, \"r+\") as f:\n",
663 | " lines = f.readlines()\n",
664 | " print(lines[:5])\n",
665 | " f.writelines(lines[:5])"
666 | ]
667 | }
668 | ],
669 | "metadata": {
670 | "kernelspec": {
671 | "display_name": "Python 3 (ipykernel)",
672 | "language": "python",
673 | "name": "python3"
674 | },
675 | "language_info": {
676 | "codemirror_mode": {
677 | "name": "ipython",
678 | "version": 3
679 | },
680 | "file_extension": ".py",
681 | "mimetype": "text/x-python",
682 | "name": "python",
683 | "nbconvert_exporter": "python",
684 | "pygments_lexer": "ipython3",
685 | "version": "3.9.13"
686 | },
687 | "vscode": {
688 | "interpreter": {
689 | "hash": "4ae1d9573f36c5ea85e81284a590ce02170bd3f6f3d77e6fc9900e8410b6db09"
690 | }
691 | }
692 | },
693 | "nbformat": 4,
694 | "nbformat_minor": 4
695 | }
696 |
--------------------------------------------------------------------------------
/Worshop Python # 7: Ficheros/iris_df.csv:
--------------------------------------------------------------------------------
1 | 5.1,3.5,1.4,0.2,Iris-setosa
2 | 4.9,3.0,1.4,0.2,Iris-setosa
3 | 4.7,3.2,1.3,0.2,Iris-setosa
4 | 4.6,3.1,1.5,0.2,Iris-setosa
5 | 5.0,3.6,1.4,0.2,Iris-setosa
6 | 5.4,3.9,1.7,0.4,Iris-setosa
7 | 4.6,3.4,1.4,0.3,Iris-setosa
8 | 5.0,3.4,1.5,0.2,Iris-setosa
9 | 4.4,2.9,1.4,0.2,Iris-setosa
10 | 4.9,3.1,1.5,0.1,Iris-setosa
11 | 5.4,3.7,1.5,0.2,Iris-setosa
12 | 4.8,3.4,1.6,0.2,Iris-setosa
13 | 4.8,3.0,1.4,0.1,Iris-setosa
14 | 4.3,3.0,1.1,0.1,Iris-setosa
15 | 5.8,4.0,1.2,0.2,Iris-setosa
16 | 5.7,4.4,1.5,0.4,Iris-setosa
17 | 5.4,3.9,1.3,0.4,Iris-setosa
18 | 5.1,3.5,1.4,0.3,Iris-setosa
19 | 5.7,3.8,1.7,0.3,Iris-setosa
20 | 5.1,3.8,1.5,0.3,Iris-setosa
21 | 5.4,3.4,1.7,0.2,Iris-setosa
22 | 5.1,3.7,1.5,0.4,Iris-setosa
23 | 4.6,3.6,1.0,0.2,Iris-setosa
24 | 5.1,3.3,1.7,0.5,Iris-setosa
25 | 4.8,3.4,1.9,0.2,Iris-setosa
26 | 5.0,3.0,1.6,0.2,Iris-setosa
27 | 5.0,3.4,1.6,0.4,Iris-setosa
28 | 5.2,3.5,1.5,0.2,Iris-setosa
29 | 5.2,3.4,1.4,0.2,Iris-setosa
30 | 4.7,3.2,1.6,0.2,Iris-setosa
31 | 4.8,3.1,1.6,0.2,Iris-setosa
32 | 5.4,3.4,1.5,0.4,Iris-setosa
33 | 5.2,4.1,1.5,0.1,Iris-setosa
34 | 5.5,4.2,1.4,0.2,Iris-setosa
35 | 4.9,3.1,1.5,0.1,Iris-setosa
36 | 5.0,3.2,1.2,0.2,Iris-setosa
37 | 5.5,3.5,1.3,0.2,Iris-setosa
38 | 4.9,3.1,1.5,0.1,Iris-setosa
39 | 4.4,3.0,1.3,0.2,Iris-setosa
40 | 5.1,3.4,1.5,0.2,Iris-setosa
41 | 5.0,3.5,1.3,0.3,Iris-setosa
42 | 4.5,2.3,1.3,0.3,Iris-setosa
43 | 4.4,3.2,1.3,0.2,Iris-setosa
44 | 5.0,3.5,1.6,0.6,Iris-setosa
45 | 5.1,3.8,1.9,0.4,Iris-setosa
46 | 4.8,3.0,1.4,0.3,Iris-setosa
47 | 5.1,3.8,1.6,0.2,Iris-setosa
48 | 4.6,3.2,1.4,0.2,Iris-setosa
49 | 5.3,3.7,1.5,0.2,Iris-setosa
50 | 5.0,3.3,1.4,0.2,Iris-setosa
51 | 7.0,3.2,4.7,1.4,Iris-versicolor
52 | 6.4,3.2,4.5,1.5,Iris-versicolor
53 | 6.9,3.1,4.9,1.5,Iris-versicolor
54 | 5.5,2.3,4.0,1.3,Iris-versicolor
55 | 6.5,2.8,4.6,1.5,Iris-versicolor
56 | 5.7,2.8,4.5,1.3,Iris-versicolor
57 | 6.3,3.3,4.7,1.6,Iris-versicolor
58 | 4.9,2.4,3.3,1.0,Iris-versicolor
59 | 6.6,2.9,4.6,1.3,Iris-versicolor
60 | 5.2,2.7,3.9,1.4,Iris-versicolor
61 | 5.0,2.0,3.5,1.0,Iris-versicolor
62 | 5.9,3.0,4.2,1.5,Iris-versicolor
63 | 6.0,2.2,4.0,1.0,Iris-versicolor
64 | 6.1,2.9,4.7,1.4,Iris-versicolor
65 | 5.6,2.9,3.6,1.3,Iris-versicolor
66 | 6.7,3.1,4.4,1.4,Iris-versicolor
67 | 5.6,3.0,4.5,1.5,Iris-versicolor
68 | 5.8,2.7,4.1,1.0,Iris-versicolor
69 | 6.2,2.2,4.5,1.5,Iris-versicolor
70 | 5.6,2.5,3.9,1.1,Iris-versicolor
71 | 5.9,3.2,4.8,1.8,Iris-versicolor
72 | 6.1,2.8,4.0,1.3,Iris-versicolor
73 | 6.3,2.5,4.9,1.5,Iris-versicolor
74 | 6.1,2.8,4.7,1.2,Iris-versicolor
75 | 6.4,2.9,4.3,1.3,Iris-versicolor
76 | 6.6,3.0,4.4,1.4,Iris-versicolor
77 | 6.8,2.8,4.8,1.4,Iris-versicolor
78 | 6.7,3.0,5.0,1.7,Iris-versicolor
79 | 6.0,2.9,4.5,1.5,Iris-versicolor
80 | 5.7,2.6,3.5,1.0,Iris-versicolor
81 | 5.5,2.4,3.8,1.1,Iris-versicolor
82 | 5.5,2.4,3.7,1.0,Iris-versicolor
83 | 5.8,2.7,3.9,1.2,Iris-versicolor
84 | 6.0,2.7,5.1,1.6,Iris-versicolor
85 | 5.4,3.0,4.5,1.5,Iris-versicolor
86 | 6.0,3.4,4.5,1.6,Iris-versicolor
87 | 6.7,3.1,4.7,1.5,Iris-versicolor
88 | 6.3,2.3,4.4,1.3,Iris-versicolor
89 | 5.6,3.0,4.1,1.3,Iris-versicolor
90 | 5.5,2.5,4.0,1.3,Iris-versicolor
91 | 5.5,2.6,4.4,1.2,Iris-versicolor
92 | 6.1,3.0,4.6,1.4,Iris-versicolor
93 | 5.8,2.6,4.0,1.2,Iris-versicolor
94 | 5.0,2.3,3.3,1.0,Iris-versicolor
95 | 5.6,2.7,4.2,1.3,Iris-versicolor
96 | 5.7,3.0,4.2,1.2,Iris-versicolor
97 | 5.7,2.9,4.2,1.3,Iris-versicolor
98 | 6.2,2.9,4.3,1.3,Iris-versicolor
99 | 5.1,2.5,3.0,1.1,Iris-versicolor
100 | 5.7,2.8,4.1,1.3,Iris-versicolor
101 | 6.3,3.3,6.0,2.5,Iris-virginica
102 | 5.8,2.7,5.1,1.9,Iris-virginica
103 | 7.1,3.0,5.9,2.1,Iris-virginica
104 | 6.3,2.9,5.6,1.8,Iris-virginica
105 | 6.5,3.0,5.8,2.2,Iris-virginica
106 | 7.6,3.0,6.6,2.1,Iris-virginica
107 | 4.9,2.5,4.5,1.7,Iris-virginica
108 | 7.3,2.9,6.3,1.8,Iris-virginica
109 | 6.7,2.5,5.8,1.8,Iris-virginica
110 | 7.2,3.6,6.1,2.5,Iris-virginica
111 | 6.5,3.2,5.1,2.0,Iris-virginica
112 | 6.4,2.7,5.3,1.9,Iris-virginica
113 | 6.8,3.0,5.5,2.1,Iris-virginica
114 | 5.7,2.5,5.0,2.0,Iris-virginica
115 | 5.8,2.8,5.1,2.4,Iris-virginica
116 | 6.4,3.2,5.3,2.3,Iris-virginica
117 | 6.5,3.0,5.5,1.8,Iris-virginica
118 | 7.7,3.8,6.7,2.2,Iris-virginica
119 | 7.7,2.6,6.9,2.3,Iris-virginica
120 | 6.0,2.2,5.0,1.5,Iris-virginica
121 | 6.9,3.2,5.7,2.3,Iris-virginica
122 | 5.6,2.8,4.9,2.0,Iris-virginica
123 | 7.7,2.8,6.7,2.0,Iris-virginica
124 | 6.3,2.7,4.9,1.8,Iris-virginica
125 | 6.7,3.3,5.7,2.1,Iris-virginica
126 | 7.2,3.2,6.0,1.8,Iris-virginica
127 | 6.2,2.8,4.8,1.8,Iris-virginica
128 | 6.1,3.0,4.9,1.8,Iris-virginica
129 | 6.4,2.8,5.6,2.1,Iris-virginica
130 | 7.2,3.0,5.8,1.6,Iris-virginica
131 | 7.4,2.8,6.1,1.9,Iris-virginica
132 | 7.9,3.8,6.4,2.0,Iris-virginica
133 | 6.4,2.8,5.6,2.2,Iris-virginica
134 | 6.3,2.8,5.1,1.5,Iris-virginica
135 | 6.1,2.6,5.6,1.4,Iris-virginica
136 | 7.7,3.0,6.1,2.3,Iris-virginica
137 | 6.3,3.4,5.6,2.4,Iris-virginica
138 | 6.4,3.1,5.5,1.8,Iris-virginica
139 | 6.0,3.0,4.8,1.8,Iris-virginica
140 | 6.9,3.1,5.4,2.1,Iris-virginica
141 | 6.7,3.1,5.6,2.4,Iris-virginica
142 | 6.9,3.1,5.1,2.3,Iris-virginica
143 | 5.8,2.7,5.1,1.9,Iris-virginica
144 | 6.8,3.2,5.9,2.3,Iris-virginica
145 | 6.7,3.3,5.7,2.5,Iris-virginica
146 | 6.7,3.0,5.2,2.3,Iris-virginica
147 | 6.3,2.5,5.0,1.9,Iris-virginica
148 | 6.5,3.0,5.2,2.0,Iris-virginica
149 | 6.2,3.4,5.4,2.3,Iris-virginica
150 | 5.9,3.0,5.1,1.8,Iris-virginica
151 |
152 |
--------------------------------------------------------------------------------
/Worshop Python # 8: Numpy/Ejercicio_python.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "provenance": []
7 | },
8 | "kernelspec": {
9 | "name": "python3",
10 | "display_name": "Python 3"
11 | },
12 | "language_info": {
13 | "name": "python"
14 | }
15 | },
16 | "cells": [
17 | {
18 | "cell_type": "markdown",
19 | "source": [
20 | "# **Puntos por goles en campeonato**\n",
21 | "\n",
22 | "\n"
23 | ],
24 | "metadata": {
25 | "id": "58YITPpzw389"
26 | }
27 | },
28 | {
29 | "cell_type": "markdown",
30 | "source": [
31 | "Cada equipo juega contra todos los demás equipos y los goles anotados en cada encuentro han sido almacenados en una matriz nxn como se indica en la tabla ejemplo:\n"
32 | ],
33 | "metadata": {
34 | "id": "XAMhUNpvxDat"
35 | }
36 | },
37 | {
38 | "cell_type": "markdown",
39 | "source": [
40 | ""
41 | ],
42 | "metadata": {
43 | "id": "tkiWaTplxIEc"
44 | }
45 | },
46 | {
47 | "cell_type": "markdown",
48 | "source": [
49 | "El equipo 1 marco 3 goles al equipo 2,1 gol al equipo 3, etc.\n",
50 | "\n",
51 | "El equipo 2 marco 1 gol al equipo 1,3 goles al equipo 3, etc.\n",
52 | "\n",
53 | "Lea la matriz y determine cuantos puntos tiene cada equipo. Los puntos asignados son: empate 1, triunfo 3 , derrota 0.\n",
54 | "\n",
55 | "Se adjunta la matriz en python para el ejercicio en forma de un arreglo de 5×5:"
56 | ],
57 | "metadata": {
58 | "id": "Jy-xFnBjxqwN"
59 | }
60 | },
61 | {
62 | "cell_type": "code",
63 | "source": [
64 | "import numpy as np"
65 | ],
66 | "metadata": {
67 | "id": "CeU8VYcox_Se"
68 | },
69 | "execution_count": null,
70 | "outputs": []
71 | },
72 | {
73 | "cell_type": "code",
74 | "source": [
75 | "goles = np.array(\n",
76 | " [[0, 3, 1, 2, 1],\n",
77 | " [1, 0, 3, 2, 3],\n",
78 | " [0, 2, 0, 1, 1],\n",
79 | " [1, 0, 2, 0, 1],\n",
80 | " [3, 4, 1, 2, 0]] )\n",
81 | "#indices son los equipos "
82 | ],
83 | "metadata": {
84 | "id": "pyAOlWiYyFhO"
85 | },
86 | "execution_count": null,
87 | "outputs": []
88 | },
89 | {
90 | "cell_type": "code",
91 | "source": [
92 | "tamano = np.shape(goles)#devuelve una tupla con los elementos por eje en este caso los equipos\n",
93 | "n = tamano[0]#tamano en la filas \n",
94 | "m = tamano[1]#tamano en las columnas \n",
95 | "triunfos = np.zeros(shape=(n,m),dtype=int)#se crea un array de ceros del mismo tamano \n",
96 | "ttriunfos = np.zeros(n,dtype=int)#se crea un arreglo de una dimension de la cantidad de equipos "
97 | ],
98 | "metadata": {
99 | "id": "7lbFuZM8ycVe"
100 | },
101 | "execution_count": null,
102 | "outputs": []
103 | },
104 | {
105 | "cell_type": "code",
106 | "source": [
107 | "#calculamos los triunfos\n",
108 | "i = 0\n",
109 | "while not(i>=n):#mientras i no sea igual o mayor al tamano de las filas \n",
110 | " j = 0\n",
111 | " while not(j>=m):#mientras que j no sea igual al tamano de las columnas \n",
112 | " if (goles[i,j] > goles[j,i]):#estamos comparando los partidos y llenando nuestra matriz de 0\n",
113 | " triunfos[i,j] = 1\n",
114 | " triunfos[j,i] = 0\n",
115 | " j = j + 1\n",
116 | " i = i + 1"
117 | ],
118 | "metadata": {
119 | "id": "ixs263ASylM_"
120 | },
121 | "execution_count": null,
122 | "outputs": []
123 | },
124 | {
125 | "cell_type": "code",
126 | "source": [
127 | "#calculamos total de triunfos \n",
128 | "i = 0\n",
129 | "while not(i>=n):#mientras i no sea igual o mayor al tamano de las filas \n",
130 | " j = 0\n",
131 | " while not(j>=m):#mientras que j no sea igual al tamano de las columnas \n",
132 | " ttriunfos[i] = ttriunfos[i] + triunfos[i,j]#calcula el total de triunfos por equipo\n",
133 | " j = j + 1\n",
134 | " i = i + 1"
135 | ],
136 | "metadata": {
137 | "id": "9ldPkXTAy_gf"
138 | },
139 | "execution_count": null,
140 | "outputs": []
141 | },
142 | {
143 | "cell_type": "code",
144 | "source": [
145 | "#calculamos empates\n",
146 | "empates = np.zeros(shape=(n,m),dtype=int)#creamos una matriz de ceros donde llenarermos los empates\n",
147 | "tempates = np.zeros(n,dtype=int)#calculamos un arreglo de una dimension con la cantidad de equipos \n",
148 | "i = 0\n",
149 | "while not(i>=n):#mientras i no sea igual o mayor al tamano de las filas \n",
150 | " j = 0\n",
151 | " while not(j>=m):#mientras que j no sea igual al tamano de las columnas \n",
152 | " if (goles[i,j] == goles[j,i]) and (i!=j):#verificamos en la matriz de goles si en un partido jugado tienen el mismo resultado\n",
153 | " empates[i,j] = 1#llenan la matriz de empates\n",
154 | " empates[j,i] = 1\n",
155 | " j = j + 1\n",
156 | " i = i + 1"
157 | ],
158 | "metadata": {
159 | "id": "52PKXqcYzC72"
160 | },
161 | "execution_count": null,
162 | "outputs": []
163 | },
164 | {
165 | "cell_type": "code",
166 | "source": [
167 | "#calculamos total de empates\n",
168 | "i = 0\n",
169 | "while not(i>=n):\n",
170 | " j = 0\n",
171 | " while not(j>=m):\n",
172 | " tempates[i] = tempates[i] + empates[i,j]#calculan el total de empates por equipo \n",
173 | " j = j + 1\n",
174 | " i = i + 1\n"
175 | ],
176 | "metadata": {
177 | "id": "MruEjtb7zMLV"
178 | },
179 | "execution_count": null,
180 | "outputs": []
181 | },
182 | {
183 | "cell_type": "code",
184 | "source": [
185 | "#calculamos las derrotas\n",
186 | "#como van a tener 4 partidos colocamos la cantidad de equipos menos 1 que seria la cantidad de partidos jugados\n",
187 | "#le restamos los trienfos y empates obtenidos y obtenemos el total de derrotas \n",
188 | "derrotas = (n-1)*np.ones(n,dtype=int)\n",
189 | "derrotas = derrotas - ttriunfos - tempates"
190 | ],
191 | "metadata": {
192 | "id": "wI-5MVTrzSV9"
193 | },
194 | "execution_count": null,
195 | "outputs": []
196 | },
197 | {
198 | "cell_type": "code",
199 | "source": [
200 | "#calculamos puntos totales\n",
201 | "puntos_triunfos = ttriunfos*3\n",
202 | "puntos_empates = tempates*1\n",
203 | "puntos = puntos_triunfos+puntos_empates \n"
204 | ],
205 | "metadata": {
206 | "id": "VGBKE_b5zZdG"
207 | },
208 | "execution_count": null,
209 | "outputs": []
210 | },
211 | {
212 | "cell_type": "code",
213 | "source": [
214 | "print(triunfos)\n",
215 | "print(' triunfos por equipo: ')\n",
216 | "print(ttriunfos)\n",
217 | "print(' empates por equipo:')\n",
218 | "print(tempates)\n",
219 | "print(' derrotas por equipo:')\n",
220 | "print(derrotas)\n",
221 | "print('puntos por equipo:')\n",
222 | "print(puntos)"
223 | ],
224 | "metadata": {
225 | "colab": {
226 | "base_uri": "https://localhost:8080/"
227 | },
228 | "id": "L5EEix2hzc4I",
229 | "outputId": "8b968d02-8517-43aa-99a6-0bed90402a6f"
230 | },
231 | "execution_count": null,
232 | "outputs": [
233 | {
234 | "output_type": "stream",
235 | "name": "stdout",
236 | "text": [
237 | "[[0 1 1 1 0]\n",
238 | " [0 0 1 1 0]\n",
239 | " [0 0 0 0 0]\n",
240 | " [0 0 1 0 0]\n",
241 | " [1 1 0 1 0]]\n",
242 | " triunfos por equipo: \n",
243 | "[3 2 0 1 3]\n",
244 | " empates por equipo:\n",
245 | "[0 0 1 0 1]\n",
246 | " derrotas por equipo:\n",
247 | "[1 2 3 3 0]\n",
248 | "puntos por equipo:\n",
249 | "[ 9 6 1 3 10]\n"
250 | ]
251 | }
252 | ]
253 | },
254 | {
255 | "cell_type": "markdown",
256 | "source": [
257 | "# **crear una funcion que dada un array de una dimension ,hacer un resumen estadistico de las edades ,verificar que el array sea de una dimension caso contrario entregar error.**"
258 | ],
259 | "metadata": {
260 | "id": "lvPD-vOYfcu0"
261 | }
262 | },
263 | {
264 | "cell_type": "code",
265 | "source": [
266 | "def get_array_info(input_array):\n",
267 | " if input_array.ndim > 1:\n",
268 | " print(\"ERROR, EL ARRAY NO DEBE TENER MAS DE UNA DIMENSION \")\n",
269 | " else :\n",
270 | " print(f\"cantidad de elementos del array {input_array.shape[0]}\")\n",
271 | " print(f\"tipo de dato de los elementos del array {input_array.dtype}\")\n",
272 | " print(f\"Valor minimo: {input_array.min()}\")\n",
273 | " print(f\"Valor maximo: {input_array.max()}\")\n",
274 | " print(f\"valor promedio : {input_array.mean()}\")\n",
275 | " print(f\"suma de los valores : {input_array.sum()}\")\n"
276 | ],
277 | "metadata": {
278 | "id": "186B9nsufnRt"
279 | },
280 | "execution_count": null,
281 | "outputs": []
282 | },
283 | {
284 | "cell_type": "code",
285 | "source": [
286 | "new_array= np.array([16,25,19,58,22])\n",
287 | "get_array_info(new_array)"
288 | ],
289 | "metadata": {
290 | "id": "DX-nzh4Nfy1q"
291 | },
292 | "execution_count": null,
293 | "outputs": []
294 | },
295 | {
296 | "cell_type": "markdown",
297 | "source": [
298 | "# **dado un array de dos dimensiones, el valor total de las filas o valor total de las columnas**"
299 | ],
300 | "metadata": {
301 | "id": "pFufHWlef2bb"
302 | }
303 | },
304 | {
305 | "cell_type": "code",
306 | "source": [
307 | "def array_sum(input_array):\n",
308 | " if input_array.ndim != 2:\n",
309 | " print(\"ERROR: El Array debe tener 2 Dimensiones.\")\n",
310 | " else:\n",
311 | " # Variables para almacenar los índices:\n",
312 | " row_index = 0\n",
313 | " col_index = 0\n",
314 | " # Arrays con las sumas de las filas y las columnas:\n",
315 | " row_sum = input_array.sum(axis=1)\n",
316 | " col_sum = input_array.sum(axis=0)\n",
317 | " # Itero el array de suma de filas, para imprimir los valores:\n",
318 | " \n",
319 | " for value in row_sum:\n",
320 | " print(f\"Total Fila {row_index}: {value}\")\n",
321 | " row_index += 1\n",
322 | " # Itero el array de suma de columnas, para imprimir los valores:\n",
323 | " for value in col_sum:\n",
324 | " print(f\"Total Columna {col_index}: {value}\")\n",
325 | " col_index += 1"
326 | ],
327 | "metadata": {
328 | "id": "Sc-dLasVgTFK"
329 | },
330 | "execution_count": null,
331 | "outputs": []
332 | },
333 | {
334 | "cell_type": "code",
335 | "source": [
336 | "my_array_2D = np.array([[1, 2, 3],\n",
337 | " [4, 5, 6],\n",
338 | " [7, 8, 9]])\n",
339 | "array_sum(my_array_2D)"
340 | ],
341 | "metadata": {
342 | "id": "-Eg3JoosgVAJ"
343 | },
344 | "execution_count": null,
345 | "outputs": []
346 | },
347 | {
348 | "cell_type": "code",
349 | "source": [
350 | "# np.all()\n",
351 | "# Retorna True si todos los elementos del arreglo cumplen con la condición.\n",
352 | "# np.any()\n",
353 | "# Retorna True si almenos uno de los elementos del arreglo cumple con la condición.\n",
354 | "# np.where()\n",
355 | "# Retorna un arreglo con los índices de los elementos que cumplen con la condición."
356 | ],
357 | "metadata": {
358 | "id": "Aduw1xaDgVFq"
359 | },
360 | "execution_count": null,
361 | "outputs": []
362 | },
363 | {
364 | "cell_type": "code",
365 | "source": [
366 | "# new_array=np.array([[12,56,15,45,56],[20,506,25,45,65]])\n",
367 | "# print(new_array)\n",
368 | "# print(np.all(new_array==12))\n",
369 | "# print(np.any(new_array<20))\n",
370 | "# fila,columna=np.where(new_array>50)\n",
371 | "# print(fila,columna)\n",
372 | "# dic_posiciones={}\n",
373 | "# contador=0\n",
374 | "# new_data=list(zip(fila,columna))\n",
375 | "# for values in new_data:\n",
376 | "# dic_posiciones[f\"posicion {contador}\"]=new_array[values]\n",
377 | "# contador+=1\n",
378 | "# print(dic_posiciones)\n",
379 | "# def metricaPais(ddatos,dpaises):\n",
380 | "# d_PromediosMetricasPais = {}\n",
381 | "# for pais, ciudades in dpaises.items():\n",
382 | "\n",
383 | "# \t\tfor datos,valores in ddatos.items():\t\t\t\t\t\t\n",
384 | "# \t\t\tif datos[0] in ciudades :\n",
385 | "# \t\t\t\td_PromediosMetricasPais[(pais,datos[1])]+=valores "
386 | ],
387 | "metadata": {
388 | "id": "Onyfv6s1gcnr"
389 | },
390 | "execution_count": null,
391 | "outputs": []
392 | },
393 | {
394 | "cell_type": "markdown",
395 | "source": [
396 | "# **Ejericios diapositivas**"
397 | ],
398 | "metadata": {
399 | "id": "FzU5kQwWuSz8"
400 | }
401 | },
402 | {
403 | "cell_type": "code",
404 | "source": [
405 | "import numpy as np \n",
406 | "lista = [1,2,3,4,5,6,7,8,9]\n",
407 | "a = np.array(lista, float)\n",
408 | "b = np.array(lista, int)\n",
409 | "c = a.reshape(3,3)\n",
410 | "tam = c.size\n",
411 | "filas = c.shape[0]\n",
412 | "cols = c.shape[1]\n",
413 | "rank = c.ndim \n",
414 | "tipo = type(c)\n"
415 | ],
416 | "metadata": {
417 | "id": "B67VP82Jubpb"
418 | },
419 | "execution_count": null,
420 | "outputs": []
421 | },
422 | {
423 | "cell_type": "code",
424 | "source": [
425 | "print(tam )\n",
426 | "print(filas )\n",
427 | "print(cols )\n",
428 | "print(rank )\n",
429 | "print(tipo )\n"
430 | ],
431 | "metadata": {
432 | "id": "Cy64lo6FvBEB"
433 | },
434 | "execution_count": null,
435 | "outputs": []
436 | },
437 | {
438 | "cell_type": "code",
439 | "source": [
440 | "m = 2\n",
441 | "n = 3\n",
442 | "solo_unos = np.ones((m,n))\n",
443 | "matriz_nula = np.zeros((m,n), dtype=int)\n",
444 | "pasos = np.arange(5)\n",
445 | "nuevo = np.arange(0,10,2)\n",
446 | "nuevo_2 = np.arange(0,10,.2)\n",
447 | "nuevo_2.size\n"
448 | ],
449 | "metadata": {
450 | "id": "YxSfYZp-vUpl"
451 | },
452 | "execution_count": null,
453 | "outputs": []
454 | },
455 | {
456 | "cell_type": "code",
457 | "source": [
458 | "print(nuevo)\n",
459 | "print(nuevo_2)"
460 | ],
461 | "metadata": {
462 | "id": "YdMLOBWFvuqL"
463 | },
464 | "execution_count": null,
465 | "outputs": []
466 | },
467 | {
468 | "cell_type": "code",
469 | "source": [
470 | "#matrices\n",
471 | "np_2d=np.array([[ 1.73, 1.68, 1.71, 1.89, 1.79],[ 65.4 , 59.2 , 63.6 , 88.4 , 68.7 ]])\n"
472 | ],
473 | "metadata": {
474 | "id": "vU8_zFH4wGXz"
475 | },
476 | "execution_count": null,
477 | "outputs": []
478 | },
479 | {
480 | "cell_type": "code",
481 | "source": [
482 | "np_2d[1,:]"
483 | ],
484 | "metadata": {
485 | "colab": {
486 | "base_uri": "https://localhost:8080/"
487 | },
488 | "id": "5748g0EOwW7k",
489 | "outputId": "a58792bc-b9f5-426b-dfb2-b02003f4de07"
490 | },
491 | "execution_count": null,
492 | "outputs": [
493 | {
494 | "output_type": "execute_result",
495 | "data": {
496 | "text/plain": [
497 | "array([65.4, 59.2, 63.6, 88.4, 68.7])"
498 | ]
499 | },
500 | "metadata": {},
501 | "execution_count": 15
502 | }
503 | ]
504 | },
505 | {
506 | "cell_type": "code",
507 | "source": [
508 | "np_2d[:,3]"
509 | ],
510 | "metadata": {
511 | "colab": {
512 | "base_uri": "https://localhost:8080/"
513 | },
514 | "id": "yQzRor_NwnD0",
515 | "outputId": "9fa44b3e-21df-4cef-9578-08db05397878"
516 | },
517 | "execution_count": null,
518 | "outputs": [
519 | {
520 | "output_type": "execute_result",
521 | "data": {
522 | "text/plain": [
523 | "array([ 1.89, 88.4 ])"
524 | ]
525 | },
526 | "metadata": {},
527 | "execution_count": 16
528 | }
529 | ]
530 | },
531 | {
532 | "cell_type": "code",
533 | "source": [
534 | "np_2d[:,1:4]"
535 | ],
536 | "metadata": {
537 | "colab": {
538 | "base_uri": "https://localhost:8080/"
539 | },
540 | "id": "ge-Ows0Qw4Cz",
541 | "outputId": "f5ecc951-8659-4dd4-cb62-e5e699133306"
542 | },
543 | "execution_count": null,
544 | "outputs": [
545 | {
546 | "output_type": "execute_result",
547 | "data": {
548 | "text/plain": [
549 | "array([[ 1.68, 1.71, 1.89],\n",
550 | " [59.2 , 63.6 , 88.4 ]])"
551 | ]
552 | },
553 | "metadata": {},
554 | "execution_count": 17
555 | }
556 | ]
557 | },
558 | {
559 | "cell_type": "code",
560 | "source": [
561 | "np_2d>3"
562 | ],
563 | "metadata": {
564 | "id": "5CGOBOVAxc6t",
565 | "outputId": "279b5dce-9c36-46fc-c87f-5bfff1569610",
566 | "colab": {
567 | "base_uri": "https://localhost:8080/"
568 | }
569 | },
570 | "execution_count": null,
571 | "outputs": [
572 | {
573 | "output_type": "execute_result",
574 | "data": {
575 | "text/plain": [
576 | "array([[False, False, False, False, False],\n",
577 | " [ True, True, True, True, True]])"
578 | ]
579 | },
580 | "metadata": {},
581 | "execution_count": 18
582 | }
583 | ]
584 | }
585 | ]
586 | }
--------------------------------------------------------------------------------
/Worshop Python # 8: Numpy/README.md:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Worshop Python # 9: Pandas/README.md:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Worshop Python # 9: Pandas/pokemon.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DataEngineering-LATAM/Python-StudyClub/05f8903a245506c08eb62fc120e8cffe5129be46/Worshop Python # 9: Pandas/pokemon.zip
--------------------------------------------------------------------------------