0% encontró este documento útil (0 votos)
47 vistas20 páginas

Python Curso Avanzado

nociones avanzadas

Cargado por

ruizdesottod
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
47 vistas20 páginas

Python Curso Avanzado

nociones avanzadas

Cargado por

ruizdesottod
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico.

práctico. El único libro en el que necesitas empezar a codificar


siguientes líneas.

Aprenda Python en un día y aprenda bien


Python para principiantes con proyecto práctico
El único libro que necesita para comenzar a codificar en Python inmediatamente
[Link]

Guarde este archivo de texto como myfi[Link] en su escritorio. A continuación, encienda IDLE
y escriba el código a continuación. Guarde este código como fi[Link] en su
escritorio también.

f = abierto ('[Link]', 'r')

primera línea = [Link] ()


secondline = [Link] ()
imprimir (primera línea)
imprimir (segunda línea)

[Link] ()

La primera línea del código abre el archivo. Antes de que podamos leer de cualquier archivo,
tenemos que abrirlo (al igual que necesitas abrir este libro electrónico en tu kindle
dispositivo o aplicación para leerlo). La función open () hace eso y requiere dos
parámetros:

El primer parámetro es la ruta al archivo. Si tu no salvaste


fi[Link] y myfi[Link] en la misma carpeta (escritorio en
este caso), debe reemplazar 'myfi[Link]' con la ruta real
donde almacenó el archivo de texto. Por ejemplo, si lo almacenó en una carpeta

Página 79

llamado 'PythonFiles' en su unidad C, debe escribir


'C: \\ PythonFiles \\ myfi[Link]' (con doble barra invertida \\).

El segundo parámetro es el modo. Esto especifica cómo será el archivo


usado. Los modos más utilizados son

modo 'r':
Solo para lectura.

modo 'w':
Solo para escribir.
Si el archivo especificado no existe, se creará.
Si el archivo especificado existe, se borrarán todos los datos existentes en el archivo.

modo 'a':
Para agregar.

[Link] 61/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar
Si el archivo especificado no existe, se creará.
Si el archivo especificado existe, cualquier dato escrito en el archivo se agrega automáticamente
hasta el final

modo 'r +':


Tanto para leer como para escribir.

Después de abrir el archivo, la siguiente declaración firstline =


[Link] () lee la primera línea del archivo y la asigna al
primera línea variable.

Cada vez que se llama a la función readline (), lee una nueva línea de
el archivo. En nuestro programa, readline () se llamó dos veces. De ahí la primera
se leerán dos líneas. Cuando ejecute el programa, obtendrá el resultado:

Aprenda Python en un día y aprenda bien

Página 80

Python para principiantes con proyecto práctico

Notará que se inserta un salto de línea después de cada línea. Esto es porque
la función readline () agrega los caracteres '\ n' al final de cada
línea. Si no desea la línea adicional entre cada línea de texto, puede
imprimir (primera línea, fin = ''). Esto eliminará el '\ n'
caracteres. Después de leer e imprimir las dos primeras líneas, la última oración
[Link] () cierra el archivo. Siempre debe cerrar el archivo una vez que
termine de leerlo para liberar los recursos del sistema.

[Link] 62/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar

Página 81

Uso de un bucle for para leer archivos de texto

Además de utilizar el método readline () anterior para leer un archivo de texto,


también puede usar un bucle for. De hecho, el bucle for es más elegante y
forma eficiente de leer archivos de texto. El siguiente programa muestra cómo es esto
hecho.

f = abierto ('[Link]', 'r')


para la línea en f:
imprimir (línea, fin = '')
[Link] ()

El bucle for recorre el archivo de texto línea por línea. Cuando lo ejecutas
usted obtendrá
Aprenda Python en un día y aprenda bien Python para
Principiantes con proyecto práctico El único libro que necesita
para comenzar a codificar en Python inmediatamente
[Link]

Página 82
[Link] 63/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar

Escribir en un archivo de texto

Ahora que hemos aprendido a abrir y leer un archivo, intentemos escribir en él.
Para hacer eso, usaremos el modo 'a' (agregar). También puede utilizar la 'w'
modo, pero borrará todo el contenido anterior en el archivo si el archivo ya
existe. Intente ejecutar el siguiente programa.

f = open ('myfi[Link]', 'a')


[Link] ('\ nEsta oración se agregará.')
[Link] ('\ n¡Python es divertido!')
[Link] ()

Aquí usamos la función write () para agregar las dos oraciones 'This
se agregará una oración. y "¡Python es divertido!" al
archivo, cada uno comenzando en una nueva línea ya que usamos los caracteres de escape
'\norte'. Usted obtendrá
Aprenda Python en un día y aprenda bien Python para
Principiantes con proyecto práctico El único libro que necesita
para comenzar a codificar en Python inmediatamente
[Link] Esta oración
se adjuntará.
¡Python es divertido!

Página 83

Abrir y leer archivos de texto por tamaño de búfer

A veces, es posible que deseemos leer un archivo por tamaño de búfer para que nuestro programa
no utiliza demasiados recursos de memoria. Para hacer eso, podemos usar el
función read () (en lugar de la función readline ()) que nos permite
para especificar el tamaño de búfer que queremos. Prueba el siguiente programa:
inputFile = open ('myfi[Link]', 'r') outputFile = abierto
('myoutputfi[Link]', 'w')
[Link] 64/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar
msg = [Link] (10)
while len (msg):
[Link] (msg) msg = [Link] (10)
[Link] () [Link] ()
Primero, abrimos dos archivos, [Link] y [Link]
archivos para lectura y escritura respectivamente.

A continuación, usamos la declaración msg = [Link] (10) y un


while bucle para recorrer el archivo 10 bytes a la vez. El valor 10 en
el paréntesis le dice a la función read () que solo lea 10 bytes. los
while condición while len (msg): comprueba la longitud de la variable
msg. Siempre que la longitud no sea cero, el bucle se ejecutará.

Dentro del ciclo while, la declaración [Link] (msg) escribe


el mensaje al archivo de salida. Después de escribir el mensaje, la declaración
msg = [Link] (10) lee los siguientes 10 bytes y mantiene
hacerlo hasta que se lea todo el archivo. Cuando eso sucede, el programa
cierra ambos archivos.

Cuando ejecute el programa, aparecerá un nuevo archivo myoutputfi[Link]


creado. Cuando abras el archivo, notarás que tiene el mismo contenido.
como su archivo de entrada myfi[Link]. Para demostrar que solo se leen 10 bytes en un
tiempo, puede cambiar la línea [Link] (msg) en el
programa para [Link] (msg + '\ n'). Ahora ejecuta el programa
otra vez. myoutputfi[Link] ahora contiene líneas con un máximo de 10

Página 84

caracteres. Aquí hay un segmento de lo que obtendrá.

Aprende Pyth
en uno
Día y le
arn It Wel

[Link] 65/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar

Página 85

Abrir, leer y escribir archivos binarios

Los archivos binarios hacen referencia a cualquier archivo que no contenga texto, como imágenes o videos.
archivos. Para trabajar con archivos binarios, simplemente usamos el modo 'rb' o 'wb'. Copiar
un archivo jpeg en su escritorio y renómbrelo [Link]. Ahora edite el
programa anterior cambiando las dos primeras líneas

inputFile = open ('myfi[Link]', 'r')


outputFile = open ('myoutputfi[Link]', 'w')

inputFile = open ('[Link]', 'rb')


outputFile = open ('[Link]', 'wb')

Asegúrese de cambiar también la declaración [Link] (msg +


'\ n') de nuevo a [Link] (msg).

Ejecute el nuevo programa. Debería tener un archivo de imagen adicional llamado


[Link] en su escritorio. Cuando abre el archivo de imagen,
debería verse exactamente como [Link].

[Link] 66/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar

Página 86

Eliminación y cambio de nombre de archivos

Otras dos funciones útiles que debemos aprender al trabajar con archivos son
las funciones remove () y rename (). Estas funciones están disponibles en
el módulo del sistema operativo y deben importarse antes de que podamos usarlos.

La función remove () elimina un archivo. La sintaxis es


eliminar (nombre de archivo). Por ejemplo, para eliminar myfi[Link], escribimos
eliminar ('myfi[Link]').

La función rename () cambia el nombre de un archivo. La sintaxis es renombrar (antiguo


nombre, nuevo nombre). Para cambiar el nombre de oldfi[Link] a newfi[Link],
escriba rename ('archivo [Link]', 'archivo [Link]').

Página 87

[Link] 67/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar

Proyecto: Matemáticas y BODMAS


¡Felicidades! Ahora hemos cubierto suficientes fundamentos de Python
(y programación en general) para comenzar a codificar nuestro primer programa completo. En esto
capítulo, vamos a codificar un programa que prueba nuestra comprensión de
la regla BODMAS de cálculo aritmético. Si no está seguro de qué
BODMAS es, puedes visitar este sitio
[Link]

Nuestro programa establecerá aleatoriamente una pregunta aritmética para que la respondamos. Si
obtenemos la respuesta incorrecta, el programa mostrará la respuesta correcta
y preguntar si queremos probar una nueva pregunta. Si lo hacemos correctamente, el programa
nos felicitará y nos preguntará si queremos una nueva pregunta. además, el
El programa realizará un seguimiento de nuestros puntajes y guardará los puntajes en un
Archivo de texto. Después de cada pregunta, podemos teclear “-1” para terminar el programa.

He dividido el programa en pequeños ejercicios para que pueda probar


codificando el programa usted mismo. Pruebe los ejercicios antes de consultar el
respuestas. Las respuestas se proporcionan en el Apéndice E o puede ir a
[Link] para descargar los archivos de Python. yo
Le recomendamos encarecidamente que descargue el código fuente como el
el formateo en el Apéndice E puede resultar en la distorsión de algunas sangrías
lo que dificulta la lectura del código.

Recuerde, aprender la sintaxis de Python es fácil pero aburrido. Problema


resolver es donde reside la diversión. Si encuentra dificultades al hacer
estos ejercicios, esfuércese más. Aquí es donde la recompensa es mayor.

Listo? ¡Vamonos!

Página 88

Parte 1: [Link]

Escribiremos dos archivos para nuestros programas. El primer archivo es


[Link] y el segundo es [Link]. La parte 1
céntrese en escribir el código para [Link].

Para empezar, primero creemos el archivo [Link]. Bien ser


definiendo tres funciones en este archivo.

Ejercicio 1: Importación de módulos


Necesitamos importar dos módulos para [Link]: el

[Link] 68/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar
módulo aleatorio y el módulo del sistema operativo.

Usaremos la función randint () del módulo aleatorio. los


La función randint () genera un número entero aleatorio dentro del rango
proporcionados por nosotros. Lo usaremos para generar números para nuestras preguntas.
luego.

Desde el módulo del sistema operativo, usaremos remove () y rename ()


funciones.

Intente importar estos dos módulos.

Ejercicio 2: Obtener la puntuación del usuario


Aquí definiremos nuestra primera función. Llamémoslo getUserPoint (). Esta
La función acepta un parámetro, userName. Luego abre el archivo
'[Link]' en modo 'r'.

[Link] se parece a esto:


Ann, 100
Benny, 102 años
Carol, 214

Página 89

Darren, 129

Cada línea registra la información de un usuario. El primer valor es el usuario


nombre de usuario y el segundo es la puntuación del usuario.

A continuación, la función lee el archivo línea por línea usando un bucle for. Cada línea es
luego dividir usando la función split () (consulte el Apéndice A para
ejemplo sobre el uso de la función split ()).

Guardemos los resultados de la función split () en el contenido de la lista.

A continuación, la función comprueba si alguna de las líneas tiene el mismo nombre de usuario que
el valor que se pasa como parámetro. Si lo hay, la función
cierra el archivo y devuelve la puntuación junto a ese nombre de usuario. Si no lo hay
la función cierra el archivo y devuelve la cadena '-1'.

¿Claro hasta ahora? Intente codificar la función.

¿Hecho?

Ahora tenemos que hacer algunas modificaciones a nuestro código. Al abrir


nuestro archivo anteriormente, usamos el modo 'r'. Esto ayuda a prevenir cualquier
cambios accidentales en el archivo. Sin embargo, al abrir un archivo en modo 'r',

[Link] 69/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar
se produce un IOError si el archivo aún no existe. Por lo tanto, cuando corremos
el programa por primera vez, terminaremos con un error ya que el archivo
[Link] no existe previamente. Para evitar este error,
puede hacer cualquiera de las siguientes:
En lugar de abrir el archivo en modo 'r', podemos abrirlo en modo 'w'. Cuando
abriendo en modo 'w', se creará un nuevo archivo si el archivo no existe
previamente. El riesgo de este método es que podamos escribir accidentalmente al
archivo, lo que da como resultado que se borre todo el contenido anterior. Sin embargo, desde
nuestro programa es un programa pequeño, podemos revisar nuestro código cuidadosamente
para evitar cualquier escritura accidental.

Página 90

El segundo método es usar una declaración try, except para manejar el


IOError. Para hacer eso, necesitamos poner todos nuestros códigos anteriores en el intento
block, luego use excepto IOError: para manejar el error 'Archivo no encontrado'.
En el bloque excepto, informaremos a los usuarios que el archivo no se encuentra y luego
proceda a crear el archivo. Usaremos la función open () con el modo 'w' para
crearlo. La diferencia aquí es que usamos el modo 'w' solo cuando el archivo está
extraviado. Dado que el archivo no existe inicialmente, no hay riesgo de que se borre
cualquier contenido anterior. Después de crear el archivo, cierre el archivo y devuelva el
cadena “-1”.

Puede elegir cualquiera de los métodos anteriores para completar este ejercicio.
La respuesta proporcionada utiliza el segundo método. Una vez que haya terminado, vamos
continúe con el ejercicio 3.

Ejercicio 3: actualización de la puntuación del usuario


En este ejercicio, definiremos otra función llamada
updateUserPoints (), que toma tres parámetros: newUser,
userName y puntuación.

newUser puede ser Verdadero o Falso. Si newUser es True, la función


abrirá el archivo [Link] en modo anexar y agregará el
nombre de usuario del usuario y puntuación en el archivo cuando sale del juego.

si newUser es False, la función actualizará la puntuación del usuario en el archivo.


Sin embargo, no hay ninguna función en Python (o la mayoría de los lenguajes de programación
para el caso) que nos permite actualizar un archivo de texto. Solo podemos escribir o
agregarlo, pero no actualizarlo.

Por lo tanto, necesitamos crear un archivo temporal. Esta es una


práctica en programación. Llamemos a este archivo [Link] y lo abrimos
en modo 'w'. Ahora, necesitaremos recorrer [Link] y copiar
los datos línea por línea a [Link]. Sin embargo, antes de copiar,
compruebe si el nombre de usuario en esa línea es el mismo que el proporcionado como
El parámetro. Si es el mismo, cambiaremos la puntuación a la nueva puntuación.

[Link] 70/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar

Página 91

antes de escribirlo en el archivo temporal.

Por ejemplo, si los parámetros proporcionados a la función son falsos,


'Benny' y '158' (es decir, updateUserPoints (False, 'Benny',
'158')), la siguiente tabla muestra la diferencia entre el original
[Link] y el nuevo [Link].

[Link]

Ann, 100
Benny, 102 años
Carol, 214
Darren, 129

[Link]

Ann, 100
Benny, 158
Carol, 214
Darren, 129

Una vez que terminemos de escribir en [Link], cerraremos ambos archivos y


eliminar [Link]. Finalmente, cambiaremos el nombre de [Link] a
[Link].

¿Claro? Intenta codificarlo ...

Ejercicio 4: Generación de preguntas


Ahora llegamos a la parte más importante del programa, generando
las preguntas matemáticas. Listo?

Para generar las preguntas, primero declaremos tres variables: dos listas y
un diccionario.

Página 92

Denominaremos las dos listas operandList y operatorList.

operandList debe almacenar cinco números, con 0 como sus valores iniciales.

[Link] 71/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar
operatorList debe almacenar cuatro cadenas, con "" como valores iniciales.

El diccionario consta de 4 pares, con números enteros del 1 al 4 como diccionario.


claves y “+”, “-”, “ ”, “ *” como datos. Llamemos a este operatorDict.

[Ejercicio 4.1: Actualización de operandList con números aleatorios]

Primero necesitamos reemplazar los valores iniciales de nuestra lista de operandos con
números aleatorios generados por la función randint ().

El randint () toma dos parámetros, inicio y final, y devuelve un


entero aleatorio N tal que start <= N <= end.

Por ejemplo, si se llama a randint (1, 9), devolverá aleatoriamente un número entero
de los números 1, 2, 3, 4, 5, 6, 7, 8, 9.

Para actualizar nuestra variable operandList con números aleatorios, podemos hacer
éste uno por uno ya que operandList solo tiene cinco miembros. Podemos
escribir
operandList [0] = randint (1, 9) operandList [1] =
randint (1, 9) operandList [2] = randint (1, 9)
operandList [3] = randint (1, 9) operandList [4] =
randint (1, 9)
Cada vez que se llama a randint (1, 9), devolverá aleatoriamente un número entero de
los números 1, 2, 3, 4, 5, 6, 7, 8, 9.

Sin embargo, esta no es la forma más elegante de actualizar nuestra operandList.


Imagínese lo engorroso que será si operandList tiene 1000 miembros.

Página 93

La mejor alternativa es usar un bucle for.

Intente usar un bucle for para realizar la misma tarea.

¿Hecho? ¡Excelente!

[Ejercicio 4.2: Actualización de operatorList con símbolos matemáticos]

Ahora que tenemos los números con los que operar, necesitamos
generar los símbolos matemáticos (+, - , *) para nuestras preguntas. Que hacer
eso, usaremos la función randint () y el operatorDict
diccionario.

randint () generará la clave del diccionario, que luego se mapeará


al operador correcto utilizando el diccionario operatorDict. Por ejemplo,

[Link] 72/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar
para asignar el símbolo a operatorList [0], escribimos
operatorList [0] = operatorDict [randint (1,
4)]

Al igual que en el ejercicio 4.1, debe utilizar un bucle for para completar esta tarea.
Sin embargo, hay un problema que hace que este ejercicio sea más difícil que
Ejercicio 4.1.

¿Recuerda que en Python, ** representa exponente (es decir, 2 ** 3 = 2 ^ 3)?

El problema es que cuando tenemos dos operadores exponentes consecutivos en


Python, como 2 ** 3 ** 2, Python lo interpreta como 2 ** (3 ** 2) en lugar de
(2 ** 3) ** 2. En el primer caso, la respuesta es 2 elevado a 9 (es decir, 2 9 )
que es 512. En el segundo caso, la respuesta es 8 elevado a 2 (es decir,
8 2 ) que es 64. Por lo tanto, cuando presentamos una pregunta como 2 ** 3 ** 2, el usuario
obtendrá la respuesta incorrecta si la interpreta como (2 ** 3) ** 2.

Página 94

Para evitar este problema, vamos a modificar nuestro código para que no
obtener dos signos ** consecutivos. En otras palabras, operatorList = ['+',
'+', '-', '**'] está bien, pero operatorList = ['+', '-', '**',
'**'] no es.

Este ejercicio es el más difícil de todos los ejercicios. Intenta pensar


una solución para prevenir dos signos ** consecutivos. Una vez que haya terminado,
puede continuar con el ejercicio 4.3.

Sugerencia: si está atascado, puede considerar usar una instrucción if dentro del
en bucle.

[Ejercicio 4.3: Generación de una expresión matemática]

Ahora que tenemos nuestros operadores y operandos, vamos a intentar


generar la expresión matemática como una cadena. Esta expresión usuarios
los cinco números de nuestra lista de operandos y los cuatro números matemáticos
símbolos de nuestra operatorList para formar una pregunta.

Tenemos que declarar otra variable llamada questionString y


asigne la expresión matemática a questionString. Ejemplos de
questionString incluye
6 - 2 * 3 - 2 ** 1
4+5-2*6+1
8-0*2+5-8

Intente generar esta expresión usted mismo.

[Link] 73/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar

Sugerencia: puede usar un bucle for para concatenar las subcadenas individuales
de operandList y operatorList para obtener la matemática
expresión.

[Ejercicio 4.4: Evaluación del resultado]

Página 95

Ahora deberíamos tener una expresión matemática como una cadena, asignada a
la variable questionString. Para evaluar el resultado de esta expresión,
vamos a utilizar una función incorporada brillante que viene con Python,
eval ().

eval () interpreta una cadena como un código y ejecuta el código. por


Por ejemplo, si escribimos eval (“1 + 2 + 4”), obtendremos el número 7.

Por lo tanto, para evaluar el resultado de nuestra expresión matemática, pasamos


questionString a la función eval () y asigne el resultado a una nueva
variable denominada resultado.

Este ejercicio es bastante sencillo y se puede completar en un solo paso.

[Ejercicio 4.5: Interacción con el usuario]

Finalmente, vamos a interactuar con nuestro usuario. En este ejercicio, estaremos


haciendo algunas cosas:
Paso 1: Mostrar la pregunta al usuario Paso 2: Solicitar al usuario
una respuesta Paso 3: Evaluar la respuesta, mostrando el
mensaje y devolviendo la puntuación del usuario.

Para el paso 1, necesitamos usar una función incorporada para manipular cadenas. Como
mencionado anteriormente, en Python, el símbolo ** significa exponente. Es decir,
2 ** 3 = 8. Sin embargo, para la mayoría de los usuarios, ** no tiene ningún significado. Por lo tanto, si mostramos
una pregunta como 2 ** 3 + 8 -5, es probable que el usuario se confunda. Para evitar eso,
reemplazaremos cualquier símbolo ** en questionString con el símbolo ^.

Para hacer eso, usaremos la función incorporada replace (). Usarlo es bonito
sencillo, solo escribe questionString =
[Link] ("**", "^"). Ahora puede imprimir el
expresión resultante para el usuario.

Página 96
[Link] 74/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar

Para el paso 2, puede utilizar la función input () para aceptar la entrada del usuario.

Para el paso 3, debe usar una declaración if para evaluar la respuesta y


mostrar el mensaje correcto. Si el usuario lo acierta, lo felicitaremos
el usuario y devuelve el valor 1. Si el usuario se equivoca, mostraremos el
respuesta correcta y devuelve el valor 0.

¿Recuerda que la función input () devuelve la entrada del usuario como una cadena? Por lo tanto,
cuando compara la entrada del usuario con la respuesta correcta (obtenida en
Ejercicio 4.4), tienes que hacer algún tipo de conversión para cambiar la entrada del usuario
a un entero. Al cambiar la entrada del usuario a un número entero, debe usar
un intento, excepto una declaración para verificar si el usuario ingresó un número. Si el
usuario escribió una cadena en su lugar, el programa debe informar al usuario de la
error y pedirle al usuario que escriba un número.

Puede usar un ciclo while True para seguir solicitando al usuario un


número siempre que no lo haga. Escribir mientras True es
equivalente a escribir algo como while 1 == 1. Dado que 1 es siempre
es igual a 1 (por lo tanto, siempre verdadero), el ciclo se ejecutará indefinidamente.

Aquí hay una sugerencia sobre cómo puede usar un ciclo while True para esto
ejercicio.

mientras es cierto:
tratar:
enviar la respuesta del usuario a un número entero y evaluar
la respuesta devuelve la puntuación del usuario basada en la respuesta
excepto:
Imprimir mensaje de error si falla la transmisión.
que el usuario vuelva a introducir la respuesta
El bucle while True seguirá repitiendo ya que la condición while es
siempre cierto. El ciclo saldrá solo cuando se ejecute el bloque try.
correctamente y llega a la declaración de devolución.

Página 97

Prueba este ejercicio. Una vez que haya terminado, podemos pasar a la Parte 2 donde
escribimos el programa real.

[Link] 75/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar

Página 98

Parte 2: [Link]

Felicitaciones por completar la Parte 1 y bienvenido a la Parte 2. La Parte 2 es


será muy sencillo, ya que principalmente llamaremos a las funciones que
definido anteriormente.

Ejercicio 5: redacción del programa principal


Primero, adjuntemos nuestro programa principal en un intento, excepto declaración. Nosotros
desea manejar cualquier error imprevisto al ejecutar el programa principal.

Comenzaremos escribiendo el código para el bloque try.

En primer lugar, necesitamos importar el módulo myPythonFunctions. A continuación, vamos


solicitar al usuario su nombre de usuario y asignar el valor a la variable
nombre de usuario. Pase esta variable como parámetro a la función
getUserScore ().

getUserScore () devolverá la puntuación del usuario o devolverá '-1' (si


el usuario no se encuentra). Vamos a convertir este resultado en un número entero y asignarlo a
[Link] 76/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar
la variable userScore.

Ahora, necesitamos establecer el valor de otra variable newUser. Si el usuario es


no encontrado, newUser = True, de lo contrario newUser = False. Si newUser =
Es cierto que tenemos que cambiar userScore de -1 a 0.

La siguiente parte de nuestro programa implica un ciclo while. Específicamente, nuestro


El programa solicitará la entrada de nuestro usuario para determinar si debe
terminar el programa o hacer otra cosa.

Paso 1:
Necesita declarar otra variable userChoice y darle una inicial
valor de 0.

Página 99

Paso 2:
Luego, usando un ciclo while, compare userChoice con una cadena de su
opción, diga “-1”. Si userChoice no es lo mismo que "-1", llama a la función
generateQuestion () para generar una nueva pregunta.

Paso 3:
generateQuestion () devolverá la puntuación que el usuario obtuvo por ese
pregunta. Utilice este resultado para actualizar la variable userScore.

Paso 4:
Finalmente, para evitar un bucle infinito, necesitamos usar input ()
funcionar de nuevo dentro del ciclo while para aceptar la entrada del usuario y usarla para
actualice el valor de userChoice.

¿Lo tengo? Intente codificarlo. Hacer la codificación real hará que todo
más claro.

Finalmente, después de que termina el ciclo while, el siguiente paso es actualizar el


archivo [Link]. Para hacer eso, simplemente llamamos al
función updateUserPoints ().

Eso es todo por el bloque try. Ahora para el bloque excepto, simplemente informamos
el usuario que se ha producido un error y el programa se cerrará.

¡Eso es! Una vez que termine este paso, tendrá un programa completo, su
primer programa en Python. Intente ejecutar el programa [Link]. Lo hace
funciona como se esperaba? ¿Emocionado? Espero que estés tan emocionado como yo.
a.m. :)

[Link] 77/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar

Página 100

Retarte a ti mismo

Hemos llegado al final de este capítulo y esperamos que haya


codificó con éxito su primer programa. Si tiene problemas para completar
cualquier ejercicio, puede estudiar las respuestas en el Apéndice E. Aprenderá
mucho estudiando los códigos de otras personas.

En esta sección, tengo tres ejercicios adicionales para desafiar


usted mismo.

Ejercicio de desafío 1

En el programa que hemos codificado hasta ahora, evité usar la división


operador. ¿Puede modificar el programa para que genere preguntas con
¿el signo de división también? ¿Cómo compararía la respuesta del usuario con
¿La respuesta correcta?

Sugerencia: compruebe la función round ().

Ejercicio de desafío 2

A veces, la pregunta generada puede resultar en una respuesta muy


grandes o muy pequeños. Por ejemplo, la pregunta 6 * (8 ^ 9/1) ^ 3 dará el
responda 1450710985375550096474112.

Es muy inconveniente para los usuarios calcular e ingresar un tamaño tan grande
número. Por lo tanto, queremos evitar respuestas que sean demasiado grandes o pequeñas. lata
Modificas el programa para evitar preguntas que resulten en respuestas.
mayor que 50 000 o menor que -50000?

Ejercicio de desafío 3

Página 101

El último ejercicio de desafío es el más difícil.

[Link] 78/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar

Hasta ahora faltan corchetes en las preguntas generadas. Puedes modificar


el programa para que las preguntas también utilicen corchetes? Un ejemplo de
La pregunta será 2 + (3 * 7 -1) + 5.

Diviértete con estos ejercicios. La solución sugerida se proporciona en


Apéndice E.

Página 102

Gracias

Llegamos al final del libro. Gracias por leer este libro y yo


Espero que hayas disfrutado del libro. Más importante aún, espero sinceramente
este libro le ha ayudado a dominar los fundamentos de la programación Python.

Sé que podrías haber elegido entre una docena de libros sobre Python
Programación, pero se arriesgó con este libro. Gracias una vez
nuevamente por descargar este libro y leerlo hasta el final.
Pruebe los ejercicios y los desafíos. Aprenderás mucho haciendo.

Ahora me gustaría pedir un "pequeño" favor. ¿Podrías tomar algunos


[Link] 79/103
2/10/2020 Aprenda Python en un día y aprenda bien: Python para principiantes con un proyecto práctico. El único libro en el que necesitas empezar a codificar

minutos o dos para dejar una reseña de este libro en Amazon?

Estos comentarios me ayudarán enormemente y me ayudarán a continuar


escribir más guías sobre programación. Si te gusta el libro o tienes alguna
sugerencias de mejora, hágamelo saber. Estaré profundamente
agradecido. :)

Por último, pero no menos importante, recuerde que puede descargar el código fuente del
proyecto y los apéndices en [Link] .

También puedes contactarme al jamie@[Link].

Página 103

Apéndice A: Trabajar con cadenas

Nota: La notación [inicio, [fin]] significa que el inicio y el final son opcionales
parámetros. Si solo se proporciona un número como parámetro, se toma
para empezar .

# marca el comienzo de un comentario


'' 'marca el inicio y el final de un comentario de varias líneas El código real está en
fuente monotype.
=> marca el inicio de la salida
contar (sub, [inicio, [final]])

Devuelve el número de veces que la subcadena sub aparece en la cadena.


Esta función distingue entre mayúsculas y minúsculas.

[Ejemplo]

# En los ejemplos siguientes, 's' aparece en los índices 3, 6 y 10

# contar toda la cadena


'Esto es una cadena'.count (' s ')
=> 3

[Link] 80/103

También podría gustarte