PageSourceSearch

https://cursopython.netlify.app/02-tipos-de-datos-y-variables/

html cursopython.netlify.app collected 2026-10-03 10:37:13 UTC 52,050 bytes, 1,019 lines download raw bytes

1
2<!doctype html>
3<html lang="es" class="no-js">
4  <head>
5    
6      <meta charset="utf-8">
7<!-- This site is hosted on Netlify. Anyone can build and deploy a site
8     like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=9b2b6b0e-4862-4874-a15a-bc28c3a98e3b
9     Netlify hosting facts for this site: static/SSR served via Netlify Edge. -->
10      <meta name="viewport" content="width=device-width,initial-scale=1">
11      
12        <meta name="description" content="Guía online para aprender Python de cero a experto.">
13      
14      
15        <meta name="author" content="Jon Vadillo">
16      
17      
18        <link rel="canonical" href="https://cursopython.netlify.app/02-Tipos-de-datos-y-Variables/">
19      
20      <link rel="icon" href="../images/favicon.svg">
21      <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.0b4">
22    
23    
24      
25        <title>Tipos de datos y variables - Aprende Python de cero a experto</title>
26      
27    
28    
29      <link rel="stylesheet" href="../assets/stylesheets/main.91872f81.min.css">
30      
31        
32        <link rel="stylesheet" href="../assets/stylesheets/palette.2505c338.min.css">
33        
34      
35      
36
37    
38    
39    
40      
41        
42        
43        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
44        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
45        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
46      
47    
48    
49    
49<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
49
50    
51      
52
53    
54    
55    
56  </head>
57  
58  
59    
60    
61      
62    
63    
64    <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="teal" data-md-color-accent="amber">
65  
66    
67    
68      
68<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
68
69    
70    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
71    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
72    <label class="md-overlay" for="__drawer"></label>
73    <div data-md-component="skip">
74      
75        
76        <a href="#variables-y-tipos-de-datos" class="md-skip">
77          Saltar a contenido
78        </a>
79      
80    </div>
81    <div data-md-component="announce">
82      
83    </div>
84    
85    
86      
87
88<header class="md-header" data-md-component="header">
89  <nav class="md-header__inner md-grid" aria-label="Cabecera">
90    <a href=".." title="Aprende Python de cero a experto" class="md-header__button md-logo" aria-label="Aprende Python de cero a experto" data-md-component="logo">
91      
92  <img src="../images/logo1.svg" alt="logo">
93
94    </a>
95    <label class="md-header__button md-icon" for="__drawer">
96      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
97    </label>
98    <div class="md-header__title" data-md-component="header-title">
99      <div class="md-header__ellipsis">
100        <div class="md-header__topic">
101          <span class="md-ellipsis">
102            Aprende Python de cero a experto
103          </span>
104        </div>
105        <div class="md-header__topic" data-md-component="header-topic">
106          <span class="md-ellipsis">
107            
108              Tipos de datos y variables
109            
110          </span>
111        </div>
112      </div>
113    </div>
114    
115      <form class="md-header__option" data-md-component="palette">
116        
117          
118          <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="teal" data-md-color-accent="amber"  aria-label="Switch to system preference"  type="radio" name="__palette" id="__palette_1">
119          
120            <label class="md-header__button md-icon" title="Switch to system preference" for="__palette_2" hidden>
121              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3 3.19.09m3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95 2.06.05m-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31Z"/></svg>
122            </label>
123          
124        
125          
126          <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="teal" data-md-color-accent="amber"  aria-label="Switch to dark mode"  type="radio" name="__palette" id="__palette_2">
127          
128            <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
129              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5c-.84 0-1.65.15-2.39.42L12 2M3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29L3.34 7m.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14L3.36 17M20.65 7l-1.77 3.79a7.023 7.023 0 0 0-2.38-4.15l4.15.36m-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29L20.64 17M12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44L12 22Z"/></svg>
130            </label>
131          
132        
133      </form>
134    
135    
136    
137      <label class="md-header__button md-icon" for="__search">
138        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
139      </label>
140      <div class="md-search" data-md-component="search" role="dialog">
141  <label class="md-search__overlay" for="__search"></label>
142  <div class="md-search__inner" role="search">
143    <form class="md-search__form" name="search">
144      <input type="text" class="md-search__input" name="query" aria-label="Búsqueda" placeholder="Búsqueda" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
145      <label class="md-search__icon md-icon" for="__search">
146        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
146<path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
147        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
148      </label>
149      <nav class="md-search__options" aria-label="Search">
150        
151        <button type="reset" class="md-search__icon md-icon" title="Limpiar" aria-label="Limpiar" tabindex="-1">
152          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
153        </button>
154      </nav>
155      
156    </form>
157    <div class="md-search__output">
158      <div class="md-search__scrollwrap" data-md-scrollfix>
159        <div class="md-search-result" data-md-component="search-result">
160          <div class="md-search-result__meta">
161            Inicializando búsqueda
162          </div>
163          <ol class="md-search-result__list"></ol>
164        </div>
165      </div>
166    </div>
167  </div>
168</div>
169    
170    
171      <div class="md-header__source">
172        <a href="https://github.com/jvadillo/aprende-python-web" title="Ir al repositorio" class="md-source" data-md-component="source">
173  <div class="md-source__icon md-icon">
174    
175    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
176  </div>
177  <div class="md-source__repository">
178    jvadillo/aprende-python-web
179  </div>
180</a>
181      </div>
182    
183  </nav>
184  
185</header>
186    
187    <div class="md-container" data-md-component="container">
188      
189      
190        
191          
192        
193      
194      <main class="md-main" data-md-component="main">
195        <div class="md-main__inner md-grid">
196          
197            
198              
199              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
200                <div class="md-sidebar__scrollwrap">
201                  <div class="md-sidebar__inner">
202                    
203
204
205<nav class="md-nav md-nav--primary" aria-label="Navegación" data-md-level="0">
206  <label class="md-nav__title" for="__drawer">
207    <a href=".." title="Aprende Python de cero a experto" class="md-nav__button md-logo" aria-label="Aprende Python de cero a experto" data-md-component="logo">
208      
209  <img src="../images/logo1.svg" alt="logo">
210
211    </a>
212    Aprende Python de cero a experto
213  </label>
214  
215    <div class="md-nav__source">
216      <a href="https://github.com/jvadillo/aprende-python-web" title="Ir al repositorio" class="md-source" data-md-component="source">
217  <div class="md-source__icon md-icon">
218    
219    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
220  </div>
221  <div class="md-source__repository">
222    jvadillo/aprende-python-web
223  </div>
224</a>
225    </div>
226  
227  <ul class="md-nav__list" data-md-scrollfix>
228    
229      
230      
231      
232
233  
234  
235  
236    <li class="md-nav__item">
237      <a href=".." class="md-nav__link">
238        Principal
239      </a>
240    </li>
241  
242
243    
244      
245      
246      
247
248  
249  
250  
251    <li class="md-nav__item">
252      <a href="../01-introduccion/" class="md-nav__link">
253        Introducción
254      </a>
255    </li>
256  
257
258    
259      
260      
261      
262
263  
264  
265    
266  
267  
268    <li class="md-nav__item md-nav__item--active">
269      
270      <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
271      
272      
273        
274      
275      
276        <label class="md-nav__link md-nav__link--active" for="__toc">
277          Tipos de datos y variables
278          <span class="md-nav__icon md-icon"></span>
279        </label>
280      
281      <a href="./" class="md-nav__link md-nav__link--active">
282        Tipos de datos y variables
283      </a>
284      
285        
286
287<nav class="md-nav md-nav--secondary" aria-label="Tabla de contenidos">
288  
289  
290  
291    
292  
293  
294    <label class="md-nav__title" for="__toc">
295      <span class="md-nav__icon md-icon"></span>
296      Tabla de contenidos
297    </label>
298    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
299      
300        <li class="md-nav__item">
301  <a href="#resumen-de-tipos-de-variables" class="md-nav__link">
302    Resumen de tipos de variables
303  </a>
304  
305</li>
306      
307        <li class="md-nav__item">
308  <a href="#lectura-de-datos-en-python" class="md-nav__link">
309    Lectura de datos en Python
310  </a>
311  
312</li>
313      
314        <li class="md-nav__item">
315  <a href="#cadenas-de-texto-string" class="md-nav__link">
316    Cadenas de texto (string)
317  </a>
318  
319    <nav class="md-nav" aria-label="Cadenas de texto (string)">
320      <ul class="md-nav__list">
321        
322          <li class="md-nav__item">
323  <a href="#concatenacion-de-strings" class="md-nav__link">
324    Concatenación de strings
325  </a>
326  
327</li>
328        
329          <li class="md-nav__item">
330  <a href="#cadenas-f-f-strings" class="md-nav__link">
331    Cadenas 'f' (f-strings)
332  </a>
333  
334</li>
335        
336          <li class="md-nav__item">
337  <a href="#conversion-de-tipos" class="md-nav__link">
338    Conversión de tipos
339  </a>
340  
341</li>
342        
343          <li class="md-nav__item">
344  <a href="#metodos-en-cadenas-de-texto-string" class="md-nav__link">
345    Métodos en cadenas de texto (string)
346  </a>
347  
348</li>
349        
350      </ul>
351    </nav>
352  
353</li>
354      
355        <li class="md-nav__item">
356  <a href="#coding-time" class="md-nav__link">
357    Coding time!
358  </a>
359  
360    <nav class="md-nav" aria-label="Coding time!">
361      <ul class="md-nav__list">
362        
363          <li class="md-nav__item">
364  <a href="#ejercicio-1" class="md-nav__link">
365    Ejercicio 1
366  </a>
367  
368</li>
369        
370          <li class="md-nav__item">
371  <a href="#ejercicio-2" class="md-nav__link">
372    Ejercicio 2
373  </a>
374  
375</li>
376        
377          <li class="md-nav__item">
378  <a href="#ejercicio-3" class="md-nav__link">
379    Ejercicio 3
380  </a>
381  
382</li>
383        
384          <li class="md-nav__item">
385  <a href="#ejercicio-4" class="md-nav__link">
386    Ejercicio 4
387  </a>
388  
389</li>
390        
391          <li class="md-nav__item">
392  <a href="#ejercicio-5" class="md-nav__link">
393    Ejercicio 5
394  </a>
395  
396</li>
397        
398      </ul>
399    </nav>
400  
401</li>
402      
403    </ul>
404  
405</nav>
406      
407    </li>
408  
409
410    
411      
412      
413      
414
415  
416  
417  
418    <li class="md-nav__item">
419      <a href="../03-Operadores-y-expresiones/" class="md-nav__link">
420        Operadores y expresiones
421      </a>
422    </li>
423  
424
425    
426      
427      
428      
429
430  
431  
432  
433    <li class="md-nav__item">
434      <a href="../04-Estructuras-de-control/" class="md-nav__link">
435        Estructuras de control
436      </a>
437    </li>
438  
439
440    
441      
442      
443      
444
445  
446  
447  
448    <li class="md-nav__item">
449      <a href="../05-Listas-y-Tuplas/" class="md-nav__link">
450        Listas y tuplas
451      </a>
452    </li>
453  
454
455    
456      
457      
458      
459
460  
461  
462  
463    <li class="md-nav__item">
464      <a href="../06-Diccionarios/" class="md-nav__link">
465        Diccionarios
466      </a>
467    </li>
468  
469
470    
471      
472      
473      
474
475  
476  
477  
478    <li class="md-nav__item">
479      <a href="../07-Funciones/" class="md-nav__link">
480        Funciones
481      </a>
482    </li>
483  
484
485    
486      
487      
488      
489
490  
491  
492  
493    <li class="md-nav__item">
494      <a href="../08-Excepciones/" class="md-nav__link">
495        Excepciones
496      </a>
497    </li>
498  
499
500    
501      
502      
503      
504
505  
506  
507  
508    <li class="md-nav__item">
509      <a href="../09-Clases-y-Objetos/" class="md-nav__link">
510        Clases y objetos
511      </a>
512    </li>
513  
514
515    
516      
517      
518      
519
520  
521  
522  
523    <li class="md-nav__item">
524      <a href="../10-Herencia/" class="md-nav__link">
525        Herencia
526      </a>
527    </li>
528  
529
530    
531      
532      
533      
534
535  
536  
537  
538    <li class="md-nav__item">
539      <a href="../11-Modulos-y-Paquetes/" class="md-nav__link">
540        Módulos y Paquetes
541      </a>
542    </li>
543  
544
545    
546  </ul>
547</nav>
548                  </div>
549                </div>
550              </div>
551            
552            
553              
554              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
555                <div class="md-sidebar__scrollwrap">
556                  <div class="md-sidebar__inner">
557                    
558
559<nav class="md-nav md-nav--secondary" aria-label="Tabla de contenidos">
560  
561  
562  
563    
564  
565  
566    <label class="md-nav__title" for="__toc">
567      <span class="md-nav__icon md-icon"></span>
568      Tabla de contenidos
569    </label>
570    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
571      
572        <li class="md-nav__item">
573  <a href="#resumen-de-tipos-de-variables" class="md-nav__link">
574    Resumen de tipos de variables
575  </a>
576  
577</li>
578      
579        <li class="md-nav__item">
580  <a href="#lectura-de-datos-en-python" class="md-nav__link">
581    Lectura de datos en Python
582  </a>
583  
584</li>
585      
586        <li class="md-nav__item">
587  <a href="#cadenas-de-texto-string" class="md-nav__link">
588    Cadenas de texto (string)
589  </a>
590  
591    <nav class="md-nav" aria-label="Cadenas de texto (string)">
592      <ul class="md-nav__list">
593        
594          <li class="md-nav__item">
595  <a href="#concatenacion-de-strings" class="md-nav__link">
596    Concatenación de strings
597  </a>
598  
599</li>
600        
601          <li class="md-nav__item">
602  <a href="#cadenas-f-f-strings" class="md-nav__link">
603    Cadenas 'f' (f-strings)
604  </a>
605  
606</li>
607        
608          <li class="md-nav__item">
609  <a href="#conversion-de-tipos" class="md-nav__link">
610    Conversión de tipos
611  </a>
612  
613</li>
614        
615          <li class="md-nav__item">
616  <a href="#metodos-en-cadenas-de-texto-string" class="md-nav__link">
617    Métodos en cadenas de texto (string)
618  </a>
619  
620</li>
621        
622      </ul>
623    </nav>
624  
625</li>
626      
627        <li class="md-nav__item">
628  <a href="#coding-time" class="md-nav__link">
629    Coding time!
630  </a>
631  
632    <nav class="md-nav" aria-label="Coding time!">
633      <ul class="md-nav__list">
634        
635          <li class="md-nav__item">
636  <a href="#ejercicio-1" class="md-nav__link">
637    Ejercicio 1
638  </a>
639  
640</li>
641        
642          <li class="md-nav__item">
643  <a href="#ejercicio-2" class="md-nav__link">
644    Ejercicio 2
645  </a>
646  
647</li>
648        
649          <li class="md-nav__item">
650  <a href="#ejercicio-3" class="md-nav__link">
651    Ejercicio 3
652  </a>
653  
654</li>
655        
656          <li class="md-nav__item">
657  <a href="#ejercicio-4" class="md-nav__link">
658    Ejercicio 4
659  </a>
660  
661</li>
662        
663          <li class="md-nav__item">
664  <a href="#ejercicio-5" class="md-nav__link">
665    Ejercicio 5
666  </a>
667  
668</li>
669        
670      </ul>
671    </nav>
672  
673</li>
674      
675    </ul>
676  
677</nav>
678                  </div>
679                </div>
680              </div>
681            
682          
683          
684            <div class="md-content" data-md-component="content">
685              <article class="md-content__inner md-typeset">
686                
687                  
688
689
690<h1 id="variables-y-tipos-de-datos">Variables y Tipos de datos</h1>
691<p>Las variables permiten <strong>almacenar datos del programa</strong>. Estas serán de un tipo u otro en función de la información que se guarde en ellas.</p>
692<p><div class="highlight"><pre><span></span><code><span class="n">nombre</span> <span class="o">=</span> <span class="s1">&#39;Amaia&#39;</span> <span class="c1"># cadena de texto</span>
693<span class="n">edad</span> <span class="o">=</span> <span class="mi">30</span> <span class="c1"># número entero</span>
694</code></pre></div>
695El nombre de una variable se conoce como <strong>identificador</strong>, y deberá cumplir las siguientes reglas:</p>
696<ul>
697<li>Comenzar con una letra o un guión bajo.</li>
698<li>El resto del nombre estará formado por letras, números o guiones bajos.</li>
699<li>Los nombres de las variables son <em>case sensitive</em>, es decir, no es lo mismo que una variable se llame <code>resultado</code> que <code>RESULTADO</code>.</li>
700<li>Existen una serie de palabras reservadas que no se pueden utilizar (def, global, return, if, for, ...).</li>
701</ul>
702<p>Algunas de las recomendaciones respecto a los nombres de las variables están recogidas en la <a href="https://www.python.org/dev/peps/pep-0008/">Guía oficial de Estilos PEP8 de Python</a>. Entre las más habituales encontramos las siguientes:</p>
703<ul>
704<li>Utilizar nombres descriptivos, en minúsculas y separados por guiones bajos si fuese necesario: <code>resultado</code>, <code>mi_variable</code>, <code>valor_anterior</code>,...</li>
705<li>Escribir las constantes en mayúsculas: <code>MI_CONSTANTE</code>, <code>NUMERO_PI</code>, ...</li>
706<li>Antes y después del signo <code>=</code>, debe haber uno (y solo un) espacio en blanco.</li>
707</ul>
708<p><strong>Nota</strong>: No olvides que lo que la guía plantea son recomendaciones y no obligaciones. Por ejemplo, mientras PEP8 recomienda tabular el código con 4 espacioes en blanco, la guía particular de los desarrolladores de Google habla de 2 espacios en lugar de 4.</p>
709<h2 id="resumen-de-tipos-de-variables">Resumen de tipos de variables</h2>
710<div class="highlight"><pre><span></span><code><span class="n">edad</span> <span class="o">=</span> <span class="mi">24</span> <span class="c1"># número entero (integer)</span>
711<span class="n">precio</span> <span class="o">=</span> <span class="mf">112.9</span> <span class="c1"># número de punto flotante (float)</span>
712<span class="n">titulo</span> <span class="o">=</span> <span class="err">‘</span><span class="n">Aprende</span> <span class="n">Python</span> <span class="n">
712desde</span> <span class="n">cero</span><span class="err">’</span> <span class="c1"># cadena de texto (string)</span>
713<span class="n">test</span> <span class="o">=</span> <span class="kc">True</span> <span class="c1"># booleano</span>
714</code></pre></div>
715<h2 id="lectura-de-datos-en-python">Lectura de datos en Python</h2>
716<p>La función <code>input()</code> permite introducir datos al usuario:</p>
717<div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="n">nombre</span> <span class="o">=</span> <span class="nb">input</span><span class="p">()</span>
718<span class="n">Leire</span>
719<span class="o">&gt;&gt;&gt;</span> <span class="nb">print</span><span class="p">(</span><span class="n">nombre</span><span class="p">)</span>
720<span class="n">Leire</span>
721</code></pre></div>
722<p>Como se puede ver en el siguiente ejemplo, es posible también mostrar un mensaje al usuario, tal y como muestra el siguiente ejemplo.</p>
723<div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="n">nombre</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">&quot;Escribe tu nombre: &quot;</span><span class="p">)</span>
724<span class="n">Escribe</span> <span class="n">tu</span> <span class="n">nombre</span><span class="p">:</span> <span class="n">Leire</span>
725<span class="o">&gt;&gt;&gt;</span> <span class="nb">print</span><span class="p">(</span><span class="n">nombre</span><span class="p">)</span>
726<span class="n">Leire</span>
727 <span class="err">```</span>
728
729<span class="c1">## Números</span>
730<span class="n">Python</span> <span class="n">soporta</span> <span class="n">dos</span> <span class="n">tipos</span> <span class="n">de</span> <span class="n">números</span><span class="p">:</span> <span class="n">enteros</span> <span class="p">(</span><span class="n">integer</span><span class="p">)</span> <span class="n">y</span> <span class="n">de</span> <span class="n">punto</span> <span class="n">flotante</span> <span class="p">(</span><span class="nb">float</span><span class="p">)</span><span class="o">.</span>
731
732 <span class="err">```</span><span class="n">python</span>
733<span class="c1"># integer</span>
734<span class="n">x</span> <span class="o">=</span> <span class="mi">5</span>
735<span class="nb">print</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
736
737<span class="c1"># float</span>
738<span class="n">y</span> <span class="o">=</span> <span class="mf">5.0</span>
739<span class="nb">print</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
740
741<span class="c1"># Otra forma de declarar un float</span>
742<span class="n">z</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
743<span class="nb">print</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>
744</code></pre></div>
745<p>Si tenemos dudas del valor de una variable, podemos mostrar su tipo utilizando la función <code>type()</code>:</p>
746<div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="n">x</span> <span class="o">=</span> <span class="mf">5.5</span>
747<span class="o">&gt;&gt;&gt;</span> <span class="nb">type</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
748<span class="o">&lt;</span><span class="k">class</span> <span class="err">&#39;</span><span class="nc">float</span><span class="s1">&#39;&gt;</span>
749</code></pre></div>
750<h2 id="cadenas-de-texto-string">Cadenas de texto (string)</h2>
751<p>Las cadenas de texto o strings se definen mediante comilla simple (<code>' '</code>) o doble comilla (<code>" "</code>):</p>
752<div class="highlight"><pre><span></span><code><span class="n">mi_nombre</span> <span class="o">=</span> <span class="s1">&#39;Ane&#39;</span>
753<span class="nb">print</span><span class="p">(</span><span class="n">mi_nombre</span><span class="p">)</span>
754<span class="n">mi_nombre</span><span class="o">=</span> <span class="s2">&quot;Ane&quot;</span>
755<span class="nb">print</span><span class="p">(</span><span class="n">
755mi_nombre</span><span class="p">)</span>
756</code></pre></div>
757<p>La diferencia principal se encuentra en que las comillas dobles aportan mayor facilidad en textos que incluyan apóstrofes:</p>
758<div class="highlight"><pre><span></span><code><span class="n">mi_nombre</span> <span class="o">=</span> <span class="s1">&#39;I</span><span class="se">\&#39;</span><span class="s1">m John&#39;</span>
759<span class="nb">print</span><span class="p">(</span><span class="n">mi_nombre</span><span class="p">)</span>
760<span class="n">mi_nombre</span><span class="o">=</span> <span class="s2">&quot;I&#39;m John&quot;</span>
761<span class="nb">print</span><span class="p">(</span><span class="n">mi_nombre</span><span class="p">)</span>
762</code></pre></div>
763<p>Más información sobre strings y carácteres especiales en: <a href="https://docs.python.org/3/tutorial/introduction.html#strings"> https://docs.python.org/3/tutorial/introduction.html#strings</a></p>
764<p>Para definir strings multi-línea se utiliza la triples comillas (<code>"""</code>):</p>
765<div class="highlight"><pre><span></span><code><span class="n">frase</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot; esto es una</span>
766<span class="s2">        frase muy larga de más de</span>
767<span class="s2">        una línea ...&quot;&quot;&quot;</span>
768</code></pre></div>
769<h3 id="concatenacion-de-strings">Concatenación de strings</h3>
770<p>Es posible unir dos strings con el operador <code>+</code>:</p>
771<div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="n">primera_palabra</span> <span class="o">=</span> <span class="s1">&#39;Hola&#39;</span>
772<span class="o">&gt;&gt;&gt;</span> <span class="n">frase_completa</span> <span class="o">=</span> <span class="n">primera_palabra</span> <span class="o">+</span> <span class="s1">&#39;, mundo&#39;</span>
773<span class="o">&gt;&gt;&gt;</span> <span class="nb">print</span><span class="p">(</span><span class="n">frase_completa</span><span class="p">)</span>
774<span class="s1">&#39;Hola, mundo&#39;</span>
775
776<span class="o">&gt;&gt;&gt;</span> <span class="n">segunda_palabra</span> <span class="o">=</span> <span class="s1">&#39;mundo&#39;</span>
777<span class="o">&gt;&gt;&gt;</span> <span class="n">frase_completa</span> <span class="o">=</span> <span class="n">primera_palabra</span> <span class="o">+</span> <span class="s1">&#39;, &#39;</span> <span class="o">+</span> <span class="n">segunda_palabra</span>
778<span class="o">&gt;&gt;&gt;</span> <span class="nb">print</span><span class="p">(</span><span class="n">frase_completa</span><span class="p">)</span>
779<span class="s1">&#39;Hola, mundo&#39;</span>
780</code></pre></div>
781<p><strong>Método alternativo 1</strong>: str.join():
782El método <code>join()</code> recibe como argumento el listado (de tipo List, Tuple, String, Dictionary y Set) de strings que se desean concatenar. Se invoca sobre el separador que se utilizará para unir las cadenas (el cual a su vez es un string también):</p>
783<div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="n">strings</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;do&#39;</span><span class="p">,</span> <span class="s1">&#39;re&#39;</span><span class="p">,</span> <span class="s1">&#39;mi&#39;</span><span class="p">]</span>
784<span class="o">&gt;&gt;&gt;</span> <span class="n">separador</span> <span class="o">=</span> <span class="s1">&#39; - &#39;</span>
785<span class="o">&gt;&gt;&gt;</span> <span class="n">separador</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">strings</span><span class="p">)</span>
786<span class="s1">&#39;do - re - mi&#39;</span>
787</code></pre></div>
788<p>Para iterar un elemento detrás del otro se introducirá string vacío como separador:</p>
789<div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="n">strings</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;do&#39;</span><span class="p">,</span> <span class="s1">&#39;re&#39;</span><span class="p">,</span> <span class="s1">&#39;mi&#39;</span><span class="p">]</span>
790<span class="o">&gt;&gt;&gt;</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">strings</span><span class="p">)</span>
791<span class="s1">&#39;doremi&#39;</span>
792</code></pre></div>
793<p><strong>Método alternativo 2</strong>: <code>str.format()</code>:
794Python 3 introdujo una nueva forma para formatear strings, la cual sustituye a la anterior en la que se hace uso del operador <code>%</code>. Para ello se invoca el método <code>format()</code> de un string:</p>
795<div class="highlight"><pre><span></span><code><span class="c1"># Ordenado por defecto:</span>
796<span class="n">frase</span> <span class="o">=</span> <span class="s2">&quot;Meses: </span><span class="si">{}</span><span class="s2">, </span><span class="si">{}</span><span class="s2"> y </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s1">&#39;Enero&#39;</span><span class="p">,</span><span class="s1">&#39;Febrero&#39;</span><span class="p">,</span><span class="s1">&#39;Marzo&#39;</span><span class="p">)</span>
797<span class="nb">print</span><span class="p">(</span><span class="n">frase</span><span class="p">)</span>
798
799<span class="c1"># Especificar el orden indicando la posición:</span>
800<span class="n">frase</span> <span class="o">=</span> <span class="s2">&quot;Meses: </span><span class="si">{1}</span><span class="s2">, </span><span class="si">{0}</span><span class="s2"> y </span><span class="si">{2}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s1">&#39;Enero&#39;</span><span class="p">,</span><span class="s1">&#39;Febrero&#39;</span><span class="p">,</span><span class="s1">&#39;Marzo&#39;</span><span class="p">)</span>
801<span class="nb">print</span><span class="p">(</span><span class="n">frase</span><span class="p">)</span>
802
803<span class="c1"># Especificar el orden mediante parejas clave-valor:</span>
804<span class="n">frase</span> <span class="o">=</span> <span class="s2">&quot;Meses: </span><span class="si">{ene}</span><span class="s2">, </span><span class="si">{feb}</span><span class="s2"> y </span><span class="si">{mar}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">
804ene</span><span class="o">=</span><span class="s1">&#39;Enero&#39;</span><span class="p">,</span> <span class="n">feb</span><span class="o">=</span><span class="s1">&#39;Febrero&#39;</span><span class="p">,</span><span class="n">m</span><span class="o">=</span><span class="s1">&#39;Marzo&#39;</span><span class="p">)</span>
805<span class="nb">print</span><span class="p">(</span><span class="n">frase</span><span class="p">)</span>
806</code></pre></div>
807<h3 id="cadenas-f-f-strings">Cadenas 'f' (f-strings)</h3>
808<p>La versión 3.6 de Python trajo un gran avance a la hora de integrar variables o expreiones en cadenas de carácteres. Se introdujeron las llamadas <code>f-strings</code>, una forma más cómoda y directa para insertar variables y expresiones en cadenas. Permiten introducir cualquier variable o expresión dentro de un string incluyendo la variable entre llaves <code>{</code> y <code>}</code>.</p>
809<p>Veamos un ejemplo:</p>
810<div class="highlight"><pre><span></span><code><span class="n">nombre</span> <span class="o">=</span> <span class="s2">&quot;Nora&quot;</span>
811<span class="n">edad</span> <span class="o">=</span> <span class="mi">22</span>
812<span class="n">saludo</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Me llamo </span><span class="si">{</span><span class="n">nombre</span><span class="si">}</span><span class="s2"> y tengo </span><span class="si">{</span><span class="n">edad</span><span class="si">}</span><span class="s2"> años.&quot;</span>
813</code></pre></div>
814<p>Para indicar que se trata de un <code>f-string</code>, este deberá incluir la letra 'f' antes del comiendo de la cadena (antes de las comillas). A continuación se muestra otro ejemplo en el que se introduce una expresión:</p>
815<div class="highlight"><pre><span></span><code><span class="n">a</span> <span class="o">=</span> <span class="mi">4</span>
816<span class="n">b</span> <span class="o">=</span> <span class="mi">3</span>
817<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;La multiplicación de </span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2"> y </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2"> es igual a </span><span class="si">{</span><span class="n">a</span> <span class="o">*</span> <span class="n">b</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
818</code></pre></div>
819<h3 id="conversion-de-tipos">Conversión de tipos</h3>
820<p>A la hora de concatenar un string con otras variables como <code>integer</code> o <code>float</code> puede haber problemas:</p>
821<div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="n">edad</span> <span class="o">=</span> <span class="mi">25</span>
822<span class="o">&gt;&gt;&gt;</span> <span class="n">nota_media</span> <span class="o">=</span> <span class="mf">7.3</span>
823<span class="o">&gt;&gt;&gt;</span> <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Tengo &quot;</span> <span class="o">+</span> <span class="n">edad</span> <span class="o">+</span> <span class="s2">&quot; años y mi nota media es &quot;</span> <span class="o">+</span> <span class="n">nota_media</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span><span class="p">)</span>
824
825<span class="n">Traceback</span> <span class="p">(</span><span class="n">most</span> <span class="n">recent</span> <span class="n">call</span> <span class="n">last</span><span class="p">):</span>
826    <span class="n">File</span> <span class="s2">&quot;&lt;stdin&gt;&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mi">1</span><span class="p">,</span> <span class="ow">in</span> <span class="o">&lt;</span><span class="n">module</span><span class="o">&gt;</span>
827<span class="ne">TypeError</span><span class="p">:</span> <span class="n">can</span> <span class="n">only</span> <span class="n">concatenate</span> <span class="nb">str</span> <span class="p">(</span><span class="ow">not</span> <span class="s2">&quot;int&quot;</span><span class="p">)</span> <span class="n">to</span> <span class="nb">str</span>
828</code></pre></div>
829<p>Mediante la función <code>str()</code>
829 podemos convertir un valor a string y evitar así cualquier tipo de problema:</p>
830<div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="n">edad</span> <span class="o">=</span> <span class="mi">25</span>
831<span class="o">&gt;&gt;&gt;</span> <span class="n">nota_media</span> <span class="o">=</span> <span class="mf">7.3</span>
832<span class="o">&gt;&gt;&gt;</span> <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Tengo &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">edad</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot; años y mi nota media es &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nota_media</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span><span class="p">)</span>
833<span class="n">Tengo</span> <span class="mi">25</span> <span class="n">años</span> <span class="n">y</span> <span class="n">mi</span> <span class="n">nota</span> <span class="n">media</span> <span class="n">es</span> <span class="mf">7.3</span><span class="o">.</span>
834</code></pre></div>
835<p>De igual manera es posible convertir a otros tipos con las funciones <code>int()</code>, <code>float()</code> and <code>bool()</code>.</p>
836<h3 id="metodos-en-cadenas-de-texto-string">Métodos en cadenas de texto (string)</h3>
837<p>Es posible <strong>obtener un carácter concreto</strong> de un string utilizando los corchetes <code>[]</code> y el índice del carácter al que queremos acceder:</p>
838<div class="highlight"><pre><span></span><code><span class="n">frase</span> <span class="o">=</span> <span class="s1">&#39;Aprendiendo a programar en Python&#39;</span>
839<span class="n">frase</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># devuelve el primer caracter</span>
840<span class="n">frase</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="c1"># devuelve el segundo caracter</span>
841<span class="n">frase</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="c1"># devuelve el primer caracter empezando por el final</span>
842<span class="n">frase</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># # devuelve el segundo caracter empezando por el final</span>
843</code></pre></div>
844<p>Si queremos <strong>obtener un substring</strong>, utilizaremos la siguiente notación:</p>
845<div class="highlight"><pre><span></span><code><span class="n">frase</span> <span class="o">=</span> <span class="s1">&#39;Aprendiendo a programar en Python&#39;</span>
846<span class="n">mi_substring</span> <span class="o">=</span> <span class="n">frase</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> 
847<span class="c1"># devuelverá los caracteres desde la posición 1 hasta la 5 (no incluye el 5)</span>
848</code></pre></div>
849<p>En caso de dejar la primera variable vacía, se considera la primera posición del string. Dejando la segunda variable vacía se considera la última posición del string:</p>
850<div class="highlight"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="n">frase</span> <span class="o">=</span> <span class="s1">&#39;Aprendiendo a programar en Python&#39;</span>
851<span class="o">&gt;&gt;&gt;</span> <span class="n">mi_substring</span> <span class="o">=</span> <span class="n">frase</span><span class="p">[:</span><span class="mi">5</span><span class="p">]</span>
852<span class="o">&gt;&gt;&gt;</span> <span class="n">mi_substring</span>
853<span class="s1">&#39;Apren&#39;</span>
854<span class="o">&gt;&gt;&gt;</span> <span class="n">mi_substring</span> <span class="o">=</span> <span class="n">frase</span><span class="p">[</span><span class="mi">4</span><span class="p">:]</span>
855<span class="o">&gt;&gt;&gt;</span> <span class="n">mi_substring</span>
856<span class="s1">&#39;ndiendo a programar en Python&#39;</span>
857</code></pre></div>
858<p>Otros métodos útiles de string:</p>
859<div class="highlight"><pre><span></span><code><span class="nb">len</span><span class="p">(</span><span class="nb">str</span><span class="p">)</span> <span class="c1"># devuelve la longitud del string</span>
860<span class="nb">str</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="c1"># convierte a mayúsculas</span>
861<span class="nb">str</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="c1"># convierte a minúsculas</span>
862<span class="nb">str</span><span class="o">.</span><span class="n">title</span><span class="p">()</span> <span class="c1"># convierte a mayúsculas la primera letra de cada palabra</span>
863<span class="nb">str</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="n">substring</span> <span class="p">[,</span> <span class="n">inicio</span><span class="p">,</span> <span class="n">fin</span><span class="p">])</span> <span class="c1"># devuelve el número de veces que aparece</span>
864<span class="c1"># el substring en el string. Opcionalmente se puede indicar el inicio y fin. </span>
865<span class="nb">str</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="err">‘</span><span class="n">d</span><span class="err">’</span><span class="p">)</span> <span class="c1"># devuelve el índice de la primera aparición de &#39;d&#39;</span>
866<span class="c1"># (devolverá -1 si no lo encuentra)</span>
867<span class="n">substr</span> <span class="ow">in</span> <span class="nb">str</span> <span class="c1"># devuelve True si el string contiene el substring</span>
868<span class="nb">str</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">old</span><span class="p">,</span> <span class="n">new</span> <span class="p">[,</span> <span class="n">count</span><span class="p">])</span> <span class="c1"># reemplaza &#39;old&#39; por &#39;new&#39; un máximo de &#39;count&#39; veces.</span>
869<span class="nb">str</span><span class="o">.</span><span class="n">isnumeric</span><span class="p">()</span> <span class="c1"># devuelve True si str contiene solamente números</span>
870</code></pre></div>
871<h2 id="coding-time">Coding time!</h2>
872<h3 id="ejercicio-1">Ejercicio 1</h3>
873<p>Escribe un programa que contenga las siguientes variables:</p>
874<ul>
875<li><code>nombre</code>: tipo string y valor "Michael Jordan"</li>
876<li><code>edad</code>: tipo integer y valor 50</li>
877<li><code>media_puntos</code>: tipo float y valor 28.5</li>
878<li><code>activo</code>: False</li>
879</ul>
880<p>El programa deberá mostrar en pantalla todos los valores.</p>
881<h3 id="ejercicio-2">Ejercicio 2</h3>
882<p>Escribe un programa que solicite el nombre, DNI y edad, lo almacene en 3 variables distintas y muestre por pantalla los valores introducidos.</p>
883<h3 id="ejercicio-3">Ejercicio 3</h3>
884<p>Escribe un programa que genere un string compuesto por los primeros 3 caracteres y los últimos 3 caracteres de un string introducido por el usuario. Pista: puedes utilizar la función <code>len()</code> en la obtención de los últimos 3 caracteres.</p>
885<ul>
886<li>Ejemplo 1: 'aprendiendo'  </li>
887<li>Resultado 1: 'aprndo'  </li>
888<li>Ejemplo 2: 'escribiendo código'  </li>
889<li>Resultado 2: 'escigo' </li>
890</ul>
891<h3 id="ejercicio-4">Ejercicio 4</h3>
892<p>Escribe un programa que solicite al usuario dos números y una frase. El primer número introducido se corresponderá a la posición de inicio del substring que deberá mostrar el programa por pantalla. El segundo número indicará la longitud de dicho substring.</p>
893<ul>
894<li>Ejemplo 1: Posicion=4, Longitud=8, Frase='Desarrollar es mi nueva afición'  </li>
895<li>Resultado 1: "rrollar "  </li>
896<li>Ejemplo 2: Posicion=8, Longitud=11, Frase='Bienvenido a la clase de programación'</li>
897<li>Resultado 2: "do a la cla"</li>
898</ul>
899<h3 id="ejercicio-5">Ejercicio 5</h3>
900<p>Escribe un programa que solicite al usuario una frase. A continuación le solicitará la letra que quiere reemplazar y por qué letra deberá reemplazarse. Por último el programa mostrará el número de veces que la letra está presente en la frase y el resultado final tras reemplazarla.</p>
901<ul>
902<li>Ejemplo: 'Desarrollar es mi nuevo pasatiempos', 'a','e'</li>
903<li>Resultado: 4 apariciones. 'Deserroller es mi nueve pesetiempos'  </li>
904</ul>
905
906
907
908
909
910                
911              </article>
912            </div>
913          
914          
915        </div>
916        
917          <a href="#" class="md-top md-icon" data-md-component="top" hidden>
918            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
918<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
919            Volver al principio
920          </a>
921        
922      </main>
923      
924        <footer class="md-footer">
925  
926    
927      
928      <nav class="md-footer__inner md-grid" aria-label="Pie" >
929        
930          
931          <a href="../01-introduccion/" class="md-footer__link md-footer__link--prev" aria-label="Anterior: Introducción" rel="prev">
932            <div class="md-footer__button md-icon">
933              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
934            </div>
935            <div class="md-footer__title">
936              <div class="md-ellipsis">
937                <span class="md-footer__direction">
938                  Anterior
939                </span>
940                Introducción
941              </div>
942            </div>
943          </a>
944        
945        
946          
947          <a href="../03-Operadores-y-expresiones/" class="md-footer__link md-footer__link--next" aria-label="Siguiente: Operadores y expresiones" rel="next">
948            <div class="md-footer__title">
949              <div class="md-ellipsis">
950                <span class="md-footer__direction">
951                  Siguiente
952                </span>
953                Operadores y expresiones
954              </div>
955            </div>
956            <div class="md-footer__button md-icon">
957              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"/></svg>
958            </div>
959          </a>
960        
961      </nav>
962    
963  
964  <div class="md-footer-meta md-typeset">
965    <div class="md-footer-meta__inner md-grid">
966      <div class="md-copyright">
967  
968    <div class="md-copyright__highlight">
969      2023 Jon Vadillo - Licencia CC BY-NC-SA
970    </div>
971  
972  
973    Made with
974    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
975      Material for MkDocs
976    </a>
977  
978</div>
979      
980        <div class="md-social">
981  
982    
983    
984    <a href="https://twitter.com/jonvadillo" target="_blank" rel="noopener" title="Jon Vadillo on Twitter" class="md-social__link">
985      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
986    </a>
987  
988    
989    
990    <a href="https://github.com/jvadillo" target="_blank" rel="noopener" title="Jon Vadillo on Github" class="md-social__link">
991      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
992    </a>
993  
994</div>
995      
996    </div>
997  </div>
998</footer>
999      
1000    </div>
1001    <div class="md-dialog" data-md-component="dialog">
1002      <div class="md-dialog__inner md-typeset"></div>
1003    </div>
1004    
1005    
1005<script id="__config" type="application/json">{"base": "..", "features": ["content.code.copy", "navigation.expand", "navigation.top", "navigation.footer"], "search": "../assets/javascripts/workers/search.3de43c86.min.js", "translations": {"clipboard.copied": "Copiado al portapapeles", "clipboard.copy": "Copiar al portapapeles", "search.result.more.one": "1 m\u00e1s en esta p\u00e1gina", "search.result.more.other": "# m\u00e1s en esta p\u00e1gina", "search.result.none": "No se encontraron documentos", "search.result.one": "1 documento encontrado", "search.result.other": "# documentos encontrados", "search.result.placeholder": "Teclee para comenzar b\u00fasqueda", "search.result.term.missing": "Falta", "select.version": "Seleccionar versi\u00f3n"}}</script>
1005
1006    
1007    
1008  
1008<script async defer src="https://analytics.umami.is/script.js" data-website-id="f9c4cb35-7bda-49ee-b153-9a68d130ec4e"></script>
1008
1009  
1010      
1010<script src="../assets/javascripts/bundle.ce0331ff.min.js"></script>
1010
1011      
1012        
1012<script src="../js/extra.js"></script>
1012
1013      
1014    
1015  
1016
1017    
1018  </body>
1019</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.