From 4ea9a0eb733578377ac7a6ba01a01b6c8e4b97e4 Mon Sep 17 00:00:00 2001
From: Ernesto Gonzalez <60261375+UmiKami@users.noreply.github.com>
Date: Mon, 11 Sep 2023 07:37:36 +0000
Subject: [PATCH 001/175] fixed test description
---
exercises/08.2-How-Much-The-Wedding-Costs/test.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/exercises/08.2-How-Much-The-Wedding-Costs/test.py b/exercises/08.2-How-Much-The-Wedding-Costs/test.py
index 5a93afaf..9c36c672 100644
--- a/exercises/08.2-How-Much-The-Wedding-Costs/test.py
+++ b/exercises/08.2-How-Much-The-Wedding-Costs/test.py
@@ -16,15 +16,15 @@ def test_for_print(capsys):
regex2 = re.compile(r"elif\s*")
assert bool(regex2.search(content)) == True
-@pytest.mark.it("Between 101 and 199 guests sould be priced 15,000")
+@pytest.mark.it("Between 101 and 200 guests sould be priced 15,000")
def test__between_100_and_200(capsys, app):
- with mock.patch('builtins.input', lambda x: 199):
+ with mock.patch('builtins.input', lambda x: 200):
app()
captured = capsys.readouterr()
price = 15000
assert "Your wedding will cost "+str(price)+" dollars\n" in captured.out
-@pytest.mark.it("Between 100 and 51 guests sould be priced 10,000")
+@pytest.mark.it("Between 51 and 100 guests sould be priced 10,000")
def test_between_101_and_51(capsys, app):
with mock.patch('builtins.input', lambda x: 100):
app()
@@ -35,7 +35,7 @@ def test_between_101_and_51(capsys, app):
@pytest.mark.it("Less than 50 guests sould be priced 4,000")
def test_less_than_50(capsys, app):
- with mock.patch('builtins.input', lambda x: 49):
+ with mock.patch('builtins.input', lambda x: 50):
app()
captured = capsys.readouterr()
price = 4000
From f327cb457908ef2e02b97b07260490c9dbca1b13 Mon Sep 17 00:00:00 2001
From: Ernesto Gonzalez <60261375+UmiKami@users.noreply.github.com>
Date: Mon, 11 Sep 2023 07:42:04 +0000
Subject: [PATCH 002/175] fixed default code to remove "$" sign
---
exercises/08.2-How-Much-The-Wedding-Costs/app.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/08.2-How-Much-The-Wedding-Costs/app.py b/exercises/08.2-How-Much-The-Wedding-Costs/app.py
index 2d113a18..ad0a1008 100644
--- a/exercises/08.2-How-Much-The-Wedding-Costs/app.py
+++ b/exercises/08.2-How-Much-The-Wedding-Costs/app.py
@@ -9,4 +9,4 @@
# ❌ ↓ DON'T CHANGE THE CODE BELOW ↓ ❌
-print('Your wedding will cost $'+str(price)+' dollars')
\ No newline at end of file
+print('Your wedding will cost '+str(price)+' dollars')
\ No newline at end of file
From e673e50e884c1a0c21fbdd5578e6f54b2abb4a6e Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 19:53:27 +0100
Subject: [PATCH 003/175] Update README.md
---
README.md | 43 +++++++++++++++++++++----------------------
1 file changed, 21 insertions(+), 22 deletions(-)
diff --git a/README.md b/README.md
index 70bae07b..22bc4a77 100644
--- a/README.md
+++ b/README.md
@@ -10,21 +10,21 @@ By [@alesanchezr](https://twitter.com/alesanchezr) and [other contributors](http
*Estas instrucciones [están disponibles en 🇪🇸 español](https://github.com/Lorenagubaira/python-beginner-programming-exercises/blob/master/README.es.md) :es:*
-This exercises are the ideal first step for anyone trying to learn Python, we start from the most simple challenge like printing a message on the terminal and slowly increase step by step.
+These exercises are the ideal first step for anyone trying to learn Python. We start with the most simple challenge, like printing a message on the terminal and slowly increase step by step.
-This particular series are for Python beginners. You will learn:
+This particular series is for Python beginners. You will learn:
-1. The `print` function,
+1. The `print` function.
-2. Data-Types,
+2. Data-Types.
-3. Lists and Tuples,
+3. Lists and Tuples.
4. Functions and dictionaries.
-The entire tutorial is 👆 interactive, ✅ auto-graded and with 📹 video tutorials.
+The entire tutorial is 👆 interactive, ✅ auto-graded, and has 📹 video tutorials.
-These exercises were built in collaboration, we need you! If you find any bugs or misspells plese contribute and report them.
+These exercises were built in collaboration, we need you! If you find any bugs or misspellings please contribute and report them.
@@ -32,56 +32,55 @@ These exercises were built in collaboration, we need you! If you find any bugs o
You can open these exercises in just a few seconds by clicking: [Open in Codespaces](https://codespaces.new/?repo=4GeeksAcademy/python-beginner-programming-exercises) (recommended) or [Open in Gitpod](https://gitpod.io#https://github.com/4GeeksAcademy/python-beginner-programming-exercises).
-> Once you have VSCode open the LearnPack exercises should start automatically. If exercises don't run automatically you can try typing on your terminal: `$ learnpack start`
+> Once you have VSCode open, the LearnPack exercises should start automatically. If exercises don't run automatically, you can try typing on your terminal: `$ learnpack start`
## Local Installation
Clone the repository in your local environment and follow the steps below:
-1. Install learnpack, the package manager for learning tutorials and the html compiler plugin for learnpack, make sure you also have node.js 14+:
+1. Install LearnPack, the package manager for learning tutorials, and the HTML compiler plugin for LearnPack. Make sure you also have node.js 14+:
-```
+```bash
$ npm i learnpack -g
$ learnpack plugins:install learnpack-python
```
-2. Download this particular exercise using learnpack and `cd` into the folder:
+2. Download these particular exercises using LearnPack and `cd` into the folder:
-```
+```bash
$ learnpack download python-beginner-programming-exercises
$ cd python-beginner-programming-exercises
```
-Note: Once you finish downloading, you will find a "exercises" folder that contains all the exercises within.
+Note: Once you finish downloading, you will find an "exercises" folder that contains all the exercises within.
-3. Start the tutorial/exercises by running the following command at the same level were your bc.json file is:
+3. Start the tutorial/exercises by running the following command at the same level where your learn.json file is:
-```sh
+```bash
$ $ pip3 install pytest==4.4.2 pytest-testdox mock
$ learnpack start
```
-
## How are the exercises organized?
-Each exercise is a small react application containing the following files:
+Each exercise is a small React application containing the following files:
-1. **app.py:** represents the entry python file that will be executed by the computer.
+1. **app.py:** represents the entry Python file that will be executed by the computer.
2. **README.md:** contains exercise instructions.
3. **test.py:** you don't have to open this file, it contains the testing script for the exercise.
-> Note: The exercises have automatic grading but its very rigid and string, my recomendation is to ignore the tests and use them only as a recomendation or you can get frustrated.
+> Note: The exercises have automatic grading, but it's very rigid and strict, my recommendation is to not take the tests too serious and use them only as a suggestion, or you may get frustrated.
## Contributors
Thanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):
-1. [Alejandro Sanchez (alesanchezr)](https://github.com/alesanchezr), contribution: (coder) 💻 (idea) 🤔, (build-tests) ⚠️ , (pull-request-review) 👀 (build-tutorial) ✅ (documentation) 📖
+1. [Alejandro Sanchez (alesanchezr)](https://github.com/alesanchezr), contribution: (coder) 💻, (idea) 🤔, (build-tests) ⚠️, (pull-request-review) 👀, (build-tutorial) ✅, (documentation) 📖
-2. [Paolo (plucodev)](https://github.com/plucodev), contribution: (bug reports) 🐛, contribution: (coder), (translation) 🌎
+2. [Paolo (plucodev)](https://github.com/plucodev), contribution: (bug reports) 🐛, (coder) 💻, (translation) 🌎
-This project follows the[all-contributors](https://github.com/kentcdodds/all-contributors) specification.Contributions of any kind are welcome!
+This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind are welcome!
This and many other exercises are built by students as part of the 4Geeks Academy [Coding Bootcamp](https://4geeksacademy.com/us/coding-bootcamp) by [Alejandro Sánchez](https://twitter.com/alesanchezr) and many other contributors. Find out more about our [Full Stack Developer Course](https://4geeksacademy.com/us/coding-bootcamps/part-time-full-stack-developer), and [Data Science Bootcamp](https://4geeksacademy.com/us/coding-bootcamps/datascience-machine-learning).
From fc0087b5504b5ee3e2721b063f7f8257cebc2fc8 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 20:18:31 +0100
Subject: [PATCH 004/175] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 22bc4a77..22df76e1 100644
--- a/README.md
+++ b/README.md
@@ -57,7 +57,7 @@ Note: Once you finish downloading, you will find an "exercises" folder that cont
3. Start the tutorial/exercises by running the following command at the same level where your learn.json file is:
```bash
-$ $ pip3 install pytest==4.4.2 pytest-testdox mock
+$ pip3 install pytest==4.4.2 pytest-testdox mock
$ learnpack start
```
From 14e03ee346be77255ee6f573de48a58aff50383a Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 20:22:03 +0100
Subject: [PATCH 005/175] Update README.es.md
---
README.es.md | 47 ++++++++++++++++++++++-------------------------
1 file changed, 22 insertions(+), 25 deletions(-)
diff --git a/README.es.md b/README.es.md
index 78a13c32..a8c9fb77 100644
--- a/README.es.md
+++ b/README.es.md
@@ -3,56 +3,53 @@
Por @alesanchezr y otros colaboradores en 4Geeks Academy
+
Esta serie en particular es para principiantes de Python. Aprenderás los siguientes conceptos:
-1. La función `print`,
+1. La función `print`.
-2. tipos de datos,
+2. Tipos de datos.
-3. listas y tuplas
+3. Listas y tuplas.
-4. funciones y diccionarios.
+4. Funciones y diccionarios.
-Todo el tutorial es 👆 interactivo, ✅ calificado automáticamente y con 📹 videos tutoriales.
+Todo el tutorial es 👆 interactivo, ✅ calificado automáticamente, y con 📹 video tutoriales.
-¡Te necesitamos! Estos ejercicios se crean y mantienen con colaboradores como tú. Si encuentra salgún error o falta de ortografía, contribuye y/o infórmanos.
+¡Te necesitamos! Estos ejercicios se crean y mantienen con colaboradores como tú. Si encuentras algún error o falta de ortografía, contribuye y/o infórmanos.
-
-
-
-
## Instalación en un clic (recomendado)
Puedes empezar estos ejercicios en pocos segundos haciendo clic en: [Abrir en Codespaces](https://codespaces.new/?repo=4GeeksAcademy/python-beginner-programming-exercises) (recomendado) o [Abrir en Gitpod](https://gitpod.io#https://github.com/4GeeksAcademy/python-beginner-programming-exercises).
-> Una vez ya tengas abirto VSCode los ejercicios de LearnPack deberían empezar automáticamente, si esto no sucede puedes intentar empezar los ejercicios escribiendo este comando en tu terminal: `$ learnpack start`
+> Una vez ya tengas abierto VSCode, los ejercicios de LearnPack deberían empezar automáticamente, si esto no sucede puedes intentar empezar los ejercicios escribiendo este comando en tu terminal: `$ learnpack start`
## Instalación local:
Clona el repositorio en tu ambiente local y sigue los siguientes pasos:
-1. Instala learnpack, el package manager para tutoriales y el plugin compilador de html para learnpack, asegúrate de tener instalado node.js 14+:
+1. Instala LearnPack, el package manager para tutoriales y el plugin compilador de HTML para LearnPack, asegúrate de tener instalado node.js 14+:
-```
+```bash
$ npm i learnpack -g
$ learnpack plugins:install learnpack-python
```
-2. Descarga este ejercicio en particular usando learnpack y `cd` dentro de la carpeta:
+2. Descarga estos ejercicios en particular usando LearnPack y `cd` dentro de la carpeta:
-```
+```bash
$ learnpack download python-beginner-programming-exercises
$ cd python-beginner-programming-exercises
```
-> Nota: Una vez que termines de descargarlo, encontrarás una carpeta llamada "exercises" que contiene los ejercicios.
+Nota: Una vez que termines de descargarlo, encontrarás una carpeta llamada "exercises" que contiene los ejercicios.
-3. Inicializa el tutorial/exercises ejecutando el siguiente comando al mismo nivel en el que se encuentra tu archivo bc.json:
+3. Inicializa el tutorial ejecutando el siguiente comando al mismo nivel en el que se encuentra tu archivo learn.json:
-```sh
+```bash
$ pip3 install pytest==4.4.2 pytest-testdox mock
$ learnpack start
```
@@ -62,22 +59,22 @@ $ learnpack start
## ¿Cómo están organizados los ejercicios?
-Cada ejercicio es una pequeña aplicación de react que contiene los siguientes archivos:
+Cada ejercicio es una pequeña aplicación de React que contiene los siguientes archivos:
-1. **app.py:** representa el archivo de entrada de python que será ejecutado por el computador.
+1. **app.py:** representa el archivo de entrada de Python que será ejecutado por el computador.
2. **README.es.md:** Contiene las instrucciones del ejercicio.
-3. **test.py:** Contiene el script del test para el ejercicio (no es necesario que abras este archivo)
+3. **test.py:** Contiene el script del test para el ejercicio (no es necesario que abras este archivo).
-> Nota: Los ejercicios tienen tests automatizados, sin embargo, estos suelen ser muy rígidos y estrictos. Mi recomendación es que utilices los tests como recomendación o puedes frustrarte.
+> Nota: Estos ejercicios tienen calificación automática. Los tests son muy rígidos y estrictos, mi recomendación es que no prestes demasiada atención a los tests y los uses solo como una sugerencia o podrías frustrarte.
## Colaboradores
Gracias a estas personas maravillosas ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):
-1. [Alejandro Sanchez (alesanchezr)](https://github.com/alesanchezr), contribución: (programador) 💻 (idea) 🤔, (build-tests) ⚠️ , (pull-request-review) 🤓 (build-tutorial) ✅ (documentación) 📖
+1. [Alejandro Sanchez (alesanchezr)](https://github.com/alesanchezr), contribución: (programador) 💻 (idea) 🤔, (build-tests) ⚠️, (pull-request-review) 🤓, (build-tutorial) ✅, (documentación) 📖
-2. [Paolo (plucodev)](https://github.com/plucodev), contribución: (bug reports) 🐛, (programador), (traducción) 🌎
+2. [Paolo (plucodev)](https://github.com/plucodev), contribución: (bug reports) 🐛, (programador) 💻, (traducción) 🌎
Este proyecto sigue la especificación [all-contributors](https://github.com/kentcdodds/all-contributors). ¡Todas las contribuciones son bienvenidas!
-Este y otros ejercicios son usados para [aprender a programar](https://4geeksacademy.com/es/aprender-a-programar/aprender-a-programar-desde-cero) por parte de los alumnos de 4Geeks Academy [Coding Bootcamp](https://4geeksacademy.com/us/coding-bootcamp) realizado por [Alejandro Sánchez](https://twitter.com/alesanchezr) y muchos otros contribuyentes. Conoce más sobre nuestros [Curso de Programación](https://4geeksacademy.com/es/curso-de-programacion-desde-cero?lang=es) para convertirte en [Full Stack Developer](https://4geeksacademy.com/es/coding-bootcamps/desarrollador-full-stack/?lang=es), o nuestro [Data Science Bootcamp](https://4geeksacademy.com/es/coding-bootcamps/curso-datascience-machine-learning).
+Este y otros ejercicios son usados para [aprender a programar](https://4geeksacademy.com/es/aprender-a-programar/aprender-a-programar-desde-cero) por parte de los alumnos de 4Geeks Academy [Coding Bootcamp](https://4geeksacademy.com/us/coding-bootcamp) realizado por [Alejandro Sánchez](https://twitter.com/alesanchezr) y muchos otros contribuyentes. Conoce más sobre nuestros [Cursos de Programación](https://4geeksacademy.com/es/curso-de-programacion-desde-cero?lang=es) para convertirte en [Full Stack Developer](https://4geeksacademy.com/es/coding-bootcamps/desarrollador-full-stack/?lang=es), o nuestro [Data Science Bootcamp](https://4geeksacademy.com/es/coding-bootcamps/curso-datascience-machine-learning).
From 144ac7162becb8e016fb2dd0ea31039034281976 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 20:34:19 +0100
Subject: [PATCH 006/175] Update README.md
---
exercises/00-Welcome/README.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/exercises/00-Welcome/README.md b/exercises/00-Welcome/README.md
index 51b7b914..fe1b90c6 100644
--- a/exercises/00-Welcome/README.md
+++ b/exercises/00-Welcome/README.md
@@ -8,7 +8,7 @@ We are very excited to have you here! 🎉 😂
## 💬 Fundamentals:
-During this course you will be learning the following concepts:
+During this course, you will be learning the following concepts:
1. How to create and call functions.
@@ -24,9 +24,9 @@ Please click on the `Next →` button on the top right to proceed to the first c
## Useful Readings:
-+ [https://www.w3schools.com/python/python_intro.asp#:~:text=Python%20has%20a%20simple%20syntax,prototyping%20can%20be%20very%20quick.](https://www.w3schools.com/python/python_intro.asp#:~:text=Python%20has%20a%20simple%20syntax,prototyping%20can%20be%20very%20quick.)
++ https://www.w3schools.com/python/python_intro.asp
-+ [https://www.python.org/doc/essays/blurb/](https://www.python.org/doc/essays/blurb/)
++ https://www.python.org/doc/essays/blurb/
## Useful Video:
@@ -36,11 +36,11 @@ Please click on the `Next →` button on the top right to proceed to the first c
Thanks to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):
-1. [Alejandro Sanchez (alesanchezr)](https://github.com/alesanchezr), contribution: (coder) :computer: (idea) 🤔, (build-tests) :warning:, (pull-request-review) :eyes: (build-tutorial) :white_check_mark: (documentation) :book:
+1. [Alejandro Sanchez (alesanchezr)](https://github.com/alesanchezr), contribution: (coder) 💻, (idea) 🤔, (build-tests) ⚠️, (pull-request-review) 🤓, (build-tutorial) ✅, (documentation) 📖
-2. [Paolo Lucano (plucodev)](https://github.com/plucodev), contribution: (coder), (build-tests) :warning:
+2. [Paolo Lucano (plucodev)](https://github.com/plucodev), contribution: (coder) 💻, (build-tests) ⚠️
-3. [Marco Gómez (marcogonzalo)](https://github.com/marcogonzalo), contribution: (translator) :earth_africa:
+3. [Marco Gómez (marcogonzalo)](https://github.com/marcogonzalo), contribution: (translator) 🌎
This project follows these specifications: [all-contributors](https://github.com/kentcdodds/all-contributors)
From 5433a861d7759aa8b45b247657022379e99c6877 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 20:35:16 +0100
Subject: [PATCH 007/175] Update README.md
---
exercises/00-Welcome/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/00-Welcome/README.md b/exercises/00-Welcome/README.md
index fe1b90c6..98098f37 100644
--- a/exercises/00-Welcome/README.md
+++ b/exercises/00-Welcome/README.md
@@ -2,7 +2,7 @@
intro: "https://www.youtube.com/watch?v=amyDNhZwGJQ"
---
-# Welcome to Python Beginner Course!
+# Welcome to the Python Beginner Course!
We are very excited to have you here! 🎉 😂
From 0d93e51c1ea4bf8c5be30551f3117ebaa6183e8a Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 20:37:33 +0100
Subject: [PATCH 008/175] Update README.md
---
exercises/00-Welcome/README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/00-Welcome/README.md b/exercises/00-Welcome/README.md
index 98098f37..cd7885ac 100644
--- a/exercises/00-Welcome/README.md
+++ b/exercises/00-Welcome/README.md
@@ -24,9 +24,9 @@ Please click on the `Next →` button on the top right to proceed to the first c
## Useful Readings:
-+ https://www.w3schools.com/python/python_intro.asp
++ [https://www.w3schools.com/python/python_intro.asp](https://www.w3schools.com/python/python_intro.asp)
-+ https://www.python.org/doc/essays/blurb/
++ [https://www.python.org/doc/essays/blurb/](https://www.python.org/doc/essays/blurb/)
## Useful Video:
From c421c20ef920a32486449f42ad9faac1035ecb24 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 20:39:09 +0100
Subject: [PATCH 009/175] Update README.es.md
---
exercises/00-Welcome/README.es.md | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/exercises/00-Welcome/README.es.md b/exercises/00-Welcome/README.es.md
index 8cd1f8b1..7b1b9591 100644
--- a/exercises/00-Welcome/README.es.md
+++ b/exercises/00-Welcome/README.es.md
@@ -1,4 +1,4 @@
-# ¡Bienvenido al curso inicial de Python!
+# Welcome to the Python Beginner Course!
¡Estamos muy entusiasmados por tenerte aquí! 🎉 😂
@@ -12,7 +12,7 @@ Durante este curso aprenderás los siguientes conceptos:
3. Cómo concatenar strings.
-4. Cómo usar bucles(loops) y declaraciones if.
+4. Cómo usar bucles (loops) y declaraciones if...else.
5. Cómo combinar y usar todos estos conceptos de diferentes formas.
@@ -28,16 +28,15 @@ Por favor, haz clic en el botón `Next →` arriba a la derecha para dirigirte a
+ [https://youtu.be/lc5JJTQa4r8](https://youtu.be/lc5JJTQa4r8)
-
## Colaboradores:
Gracias a estas maravillosas personas ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):
-1. [Alejandro Sánchez (alesanchezr)](https://github.com/alesanchezr), contribución: (programador) :computer: (idea) 🤔, (build-tests) :warning:, (pull-request-review) :eyes: (build-tutorial) :white_check_mark: (documentación) :book:
+1. [Alejandro Sánchez (alesanchezr)](https://github.com/alesanchezr), contribución: (programador) 💻, (idea) 🤔, (build-tests) ⚠️, (pull-request-review) 🤓, (build-tutorial) ✅, (documentación) 📖
-2. [Paolo Lucano (plucodev)](https://github.com/plucodev), contribución: (programador) :computer:, (build-tests) :warning:
+2. [Paolo Lucano (plucodev)](https://github.com/plucodev), contribución: (programador) 💻, (build-tests) ⚠️
-3. [Marco Gómez (marcogonzalo)](https://github.com/marcogonzalo), contribución: (traducción) :earth_africa:
+3. [Marco Gómez (marcogonzalo)](https://github.com/marcogonzalo), contribución: (traducción) 🌎
Este proyecto sigue las especificaciones: [all-contributors](https://github.com/kentcdodds/all-contributors).
From 8092901d3cdd7dc11041768b8dd31573274dbee3 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 20:45:06 +0100
Subject: [PATCH 010/175] Update README.md
---
exercises/01-Console/README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/exercises/01-Console/README.md b/exercises/01-Console/README.md
index 7483c0e8..79c30923 100644
--- a/exercises/01-Console/README.md
+++ b/exercises/01-Console/README.md
@@ -6,9 +6,9 @@ tutorial: "https://www.youtube.com/watch?v=2sV-2frucUs"
In Python, we use **print** to make the computer write anything we want (the content of a variable, a given string, etc.) in something called "the console".
-Every programming language has a console, as it was the only way to interact with the users at the beginning (before Windows or MacOS arrived).
+Every programming language has a console, as it was the only way to interact with the users at the beginning (before Windows or macOS arrived).
-Today, printing in the console is used mostly as a monitoring and debugging tool, ideal to leave a trace of the content of variables during the program execution.
+Today, printing in the console is mostly used as a monitoring and debugging tool, ideal for leaving a trace of the content of variables during the program's execution.
This is an example of how to use it:
@@ -18,13 +18,13 @@ print("How are you?")
## 📝 Instructions:
-1. Use **print** to print `Hello World!` on the console.
+1. Use `print()` to print `Hello World!` on the console.
## 💡 Hints:
+ Remember, to run the code and see the output on the console, click on the box icon in the top left of the screen:
-https://i.imgur.com/w6u4aDd.png
+
+ Feel free to try other things as well.
From b150ca724bf43a6e5a792b9bcf5822da06e338f3 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 20:48:16 +0100
Subject: [PATCH 011/175] Update README.es.md
---
exercises/01-Console/README.es.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/exercises/01-Console/README.es.md b/exercises/01-Console/README.es.md
index 0b009142..026aed8e 100644
--- a/exercises/01-Console/README.es.md
+++ b/exercises/01-Console/README.es.md
@@ -2,7 +2,7 @@
En Python, usamos **print** para que el computador escriba cualquier cosa que queramos (el contenido de una variable, una string dado, etc.) en algo llamado "la consola".
-Cada lenguaje de programación tiene una consola, ya que al principio era la única forma de interactuar con los usuarios (antes de que llegaran Windows, Linux o MacOS).
+Cada lenguaje de programación tiene una consola, ya que al principio era la única forma de interactuar con los usuarios (antes de que llegaran Windows, Linux o macOS).
Hoy en día, la impresión en la consola se utiliza, sobre todo, como herramienta de monitoreo y depuración, ideal para dejar un rastro del contenido de las variables durante la ejecución del programa.
@@ -14,12 +14,12 @@ print("Un texto en la consola")
## 📝 Instrucciones:
-1. usa **print** para escribir `Hello World!` en la consola.
+1. usa `print()` para escribir `Hello World!` en la consola.
## 💡 Pistas:
+ Recuerda, para ejecutar el código y ver el resultado en la consola, haz clic en el ícono de caja en la esquina superior izquierda de la pantalla:
-https://i.imgur.com/w6u4aDd.png
+
+ Siéntete libre de intentar otras cosas también.
From a9c16836bcf099d737ff63f105c57c09bfca00c5 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 20:54:13 +0100
Subject: [PATCH 012/175] Update README.md
---
exercises/01-Console/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/01-Console/README.md b/exercises/01-Console/README.md
index 79c30923..8ccdcda4 100644
--- a/exercises/01-Console/README.md
+++ b/exercises/01-Console/README.md
@@ -6,7 +6,7 @@ tutorial: "https://www.youtube.com/watch?v=2sV-2frucUs"
In Python, we use **print** to make the computer write anything we want (the content of a variable, a given string, etc.) in something called "the console".
-Every programming language has a console, as it was the only way to interact with the users at the beginning (before Windows or macOS arrived).
+Every programming language has a console, as it was the only way to interact with the users at the beginning (before Windows, Linux or macOS arrived).
Today, printing in the console is mostly used as a monitoring and debugging tool, ideal for leaving a trace of the content of variables during the program's execution.
From 922004436df46a71ec06d3575605185db6f1def7 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 21:07:50 +0100
Subject: [PATCH 013/175] Update README.md
---
exercises/02-Declare-Variables/README.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/exercises/02-Declare-Variables/README.md b/exercises/02-Declare-Variables/README.md
index 8d0bd5a6..55a5d4fb 100644
--- a/exercises/02-Declare-Variables/README.md
+++ b/exercises/02-Declare-Variables/README.md
@@ -18,7 +18,8 @@ In this example, `name` is the variable, acting like a box to store the value `"
2. Then, print its value on the console using `print(name)`.
-## 💡 Hint:
+## 💡 Hints:
+ The name of the variable can be whatever you want, but the value inside has to be the string "Yellow".
-+ If you need further explanation on what **strings** are and how they work in python, you can watch this clip: https://youtube.com/clip/UgkxyQ_JLmgSUL4l25c8Ly7cCRvk1Gm-EchU (`ctrl + click` on the link to open the video)
\ No newline at end of file
+
++ If you need further explanation on what **strings** are and how they work in Python, you can watch this clip: https://youtube.com/clip/UgkxyQ_JLmgSUL4l25c8Ly7cCRvk1Gm-EchU (`ctrl + click` on the link to open the video)
From c05b1fd494d5c358c876dbeaa9f8a1e9cf715c89 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 21:13:23 +0100
Subject: [PATCH 014/175] Update README.es.md
---
exercises/02-Declare-Variables/README.es.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/exercises/02-Declare-Variables/README.es.md b/exercises/02-Declare-Variables/README.es.md
index 9954fc1c..eaacd6fa 100644
--- a/exercises/02-Declare-Variables/README.es.md
+++ b/exercises/02-Declare-Variables/README.es.md
@@ -6,7 +6,7 @@ En la programación, usamos variables como si fueran cajas (o contenedores) para
name = "Daniel"
```
-En este ejemplo, `name` es la variable, actuando como una caja para almacenar el valor `"Daniel"`. Dentro de esta 'caja', estamos almacenando el valor `"Daniel"`, y podemos usar `name` para referirnos a este valor más tarde. Al nombrar tus variables, puedes elegir casi cualquier nombre, pero debe comenzar con una letra o un guión bajo (`_`). Es útil elegir un nombre que describa lo que hay dentro de la 'caja' para que puedas entender fácilmente lo que representa más adelante.
+En este ejemplo, `name` es la variable, actuando como una caja para almacenar el valor `"Daniel"`. Dentro de esta 'caja', estamos almacenando el valor `"Daniel"`, y podemos usar `name` para referirnos a este valor más tarde. Al nombrar tus variables, puedes elegir casi cualquier nombre, pero debe comenzar con una letra o un guion bajo (`_`). Es útil elegir un nombre que describa lo que hay dentro de la 'caja' para que puedas entender fácilmente lo que representa más adelante.
## 📝 Instrucciones:
@@ -14,8 +14,8 @@ En este ejemplo, `name` es la variable, actuando como una caja para almacenar el
2. Luego, imprime su valor en la consola usando `print(name)`.
-## 💡 Pista:
+## 💡 Pistas:
+ Puedes darle el nombre que quieras a la variable, pero su valor tiene que ser el texto "Yellow".
-+ Si necesitas más explicación sobre qué son los **strings** y cómo funcionan en Python, puedes ver este clip: https://www.youtube.com/watch?v=yT0jixU3M2c&ab_channel=ProgramaResuelto (`ctrl + click` en el enlance para abrir el video)
++ Si necesitas más explicación sobre qué son los **strings** y cómo funcionan en Python, puedes ver este clip: https://www.youtube.com/watch?v=yT0jixU3M2c&ab_channel=ProgramaResuelto (`ctrl + click` en el enlace para abrir el video)
From 9fcc946a30c03204166391a10e78400183c3cfd3 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 21:28:06 +0100
Subject: [PATCH 015/175] Update test.py
---
exercises/03-Print-Variables-In-The-Console/test.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/exercises/03-Print-Variables-In-The-Console/test.py b/exercises/03-Print-Variables-In-The-Console/test.py
index 6dbe8c36..272f300d 100644
--- a/exercises/03-Print-Variables-In-The-Console/test.py
+++ b/exercises/03-Print-Variables-In-The-Console/test.py
@@ -8,12 +8,12 @@
import re
path = os.path.dirname(os.path.abspath(__file__))+'/app.py'
-@pytest.mark.it("Create a variable named 'color' with the string value red")
+@pytest.mark.it('Create a variable named "color" with the string value "red"')
def test_declare_variable():
result = app.color
assert result == "red"
-@pytest.mark.it('Print on the console the value of the variable ')
+@pytest.mark.it('Print on the console the value of the variable')
def test_for_printing_variable():
with open(path, 'r') as content_file:
@@ -24,4 +24,4 @@ def test_for_printing_variable():
@pytest.mark.it('The printed value on the console should be "red"')
def test_for_file_output(capsys):
captured = buffer.getvalue()
- assert "red\n" in captured
\ No newline at end of file
+ assert "red\n" in captured
From 1a678d29e416a7dbe0f54a7af58b456f9902271f Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 21:28:46 +0100
Subject: [PATCH 016/175] Update README.md
---
exercises/04-Multiply-Two-Values/README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/04-Multiply-Two-Values/README.md b/exercises/04-Multiply-Two-Values/README.md
index 3d50d029..582a19d9 100644
--- a/exercises/04-Multiply-Two-Values/README.md
+++ b/exercises/04-Multiply-Two-Values/README.md
@@ -6,7 +6,7 @@ tutorial: "https://www.youtube.com/watch?v=tATIrAWiLLU"
Any programming language lets you do basic Math operations like multiplication, division, etc.
-To multiply 2 values in python, you have to use the asterisk operator like this:
+To multiply 2 values in Python, you have to use the asterisk operator like this:
```py
resulting_value = 2 * 3
@@ -18,4 +18,4 @@ In this case, we stored the resulting value of the multiplication into a variabl
1. Please store the result of multiplying 2345 times 7323 in a variable called `variables_are_cool`.
-2. Now print the result in the console.
\ No newline at end of file
+2. Now print the result in the console.
From 7c7ee28d0a0ea83ebd23438718842c6523ae8f21 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 21:30:59 +0100
Subject: [PATCH 017/175] Update test.py
---
exercises/04-Multiply-Two-Values/test.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/04-Multiply-Two-Values/test.py b/exercises/04-Multiply-Two-Values/test.py
index 5167a8b0..f18d4f72 100644
--- a/exercises/04-Multiply-Two-Values/test.py
+++ b/exercises/04-Multiply-Two-Values/test.py
@@ -15,12 +15,12 @@ def test_variable_exists():
except ImportError:
raise ImportError("The variable 'variables_are_cool' should exist on app.py")
-@pytest.mark.it('Variables_are_cool value should be like 2345 * 7323 ')
+@pytest.mark.it('The value of variables_are_cool should be 2345 * 7323')
def test_use_variable_name():
result = app.variables_are_cool == 17172435
assert result == True
-@pytest.mark.it('Print on the console the variables_are_cool value ')
+@pytest.mark.it('Print on the console the value of variables_are_cool')
def test_for_file_output(capsys):
captured = buffer.getvalue()
assert '17172435\n' in captured
From 75d86d3c9d05b82fa0cdbd4db04f1ab78c923a4b Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 23:56:13 +0100
Subject: [PATCH 018/175] Update README.es.md
---
.../03-Print-Variables-In-The-Console/README.es.md | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/exercises/03-Print-Variables-In-The-Console/README.es.md b/exercises/03-Print-Variables-In-The-Console/README.es.md
index cc1abed7..5ce2ba7f 100644
--- a/exercises/03-Print-Variables-In-The-Console/README.es.md
+++ b/exercises/03-Print-Variables-In-The-Console/README.es.md
@@ -1,14 +1,15 @@
# `03` Print Variables in The Console
-También puedes usar la función **print** para imprimir variables en la consola. Es una excelente forma de verificar su valor actual, así:
+También puedes imprimir más de una variable en la misma función `print()` separando con una coma `,` las variables a imprimir. De esta manera:
```py
-my_super_variable = 'hello'
-print(my_super_variable)
+my_variable = 'hello'
+my_second_variable = "world"
+print(my_variable, my_second_variable) # --> hello world
```
## 📝 Instrucciones:
-1. Declara una nueva variable llamada `color` y asígnale el valor `"red"`.
+1. Declara dos nuevas variables llamadas `color` y `item` y asígnales el valor `"red"` y `marker` respectivamente.
-2. Luego, imprime su valor en la consola (puede que tengas que desplazarte en la consola para poder verlo).
+2. Luego, imprime sus valores en la consola (puede que tengas que desplazarte en la consola para poder verlo).
From 49dbbc587c0d7b8315ea2e215fdc13c7fcfedc15 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 23:56:16 +0100
Subject: [PATCH 019/175] Update README.md
---
.../03-Print-Variables-In-The-Console/README.md | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/exercises/03-Print-Variables-In-The-Console/README.md b/exercises/03-Print-Variables-In-The-Console/README.md
index a2b28a89..9bb64e58 100644
--- a/exercises/03-Print-Variables-In-The-Console/README.md
+++ b/exercises/03-Print-Variables-In-The-Console/README.md
@@ -1,18 +1,15 @@
----
-tutorial: "https://www.youtube.com/watch?v=Ki1LaUKhPgU"
----
+# `03` Print more Variables in the console
-# `03` Print the Variables in the console
-
-You can also use the **print** function to print variables in the console. It's a great way to check their current value, like this:
+You can also print more than one variable in the same `print()` function by separating the variables with a comma `,`. Like this:
```py
-my_super_variable = 'hello'
-print(my_super_variable)
+my_variable = 'hello'
+my_second_variable = "world"
+print(my_variable, my_second_variable) # --> hello world
```
## 📝 Instructions:
-1. Declare a new variable called `color` and assign the value `"red"` to it.
+1. Declare two new variables called `color` and `item`, and assign the value `"red"` and `"marker"` respectively to it.
-2. Then, print its value on the console (you may have to scroll up in the terminal to see it!).
+2. Then, print their values on the console (you may have to scroll up in the terminal to see it!).
From e7b48b581f4c523eb8e40d7395c33a990e2f1fdd Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 23:56:18 +0100
Subject: [PATCH 020/175] Update solution.hide.py
---
exercises/03-Print-Variables-In-The-Console/solution.hide.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/exercises/03-Print-Variables-In-The-Console/solution.hide.py b/exercises/03-Print-Variables-In-The-Console/solution.hide.py
index fe2615ac..06ac9503 100644
--- a/exercises/03-Print-Variables-In-The-Console/solution.hide.py
+++ b/exercises/03-Print-Variables-In-The-Console/solution.hide.py
@@ -1,4 +1,5 @@
# ✅ ↓ your code here ↓ ✅
color = "red"
-print(color)
\ No newline at end of file
+item = "marker"
+print(color, item)
From 7991026fb4817b967a739acbcf55cef22901434f Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 23:56:21 +0100
Subject: [PATCH 021/175] Update test.py
---
.../03-Print-Variables-In-The-Console/test.py | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
diff --git a/exercises/03-Print-Variables-In-The-Console/test.py b/exercises/03-Print-Variables-In-The-Console/test.py
index 272f300d..e3238524 100644
--- a/exercises/03-Print-Variables-In-The-Console/test.py
+++ b/exercises/03-Print-Variables-In-The-Console/test.py
@@ -5,23 +5,20 @@
import pytest
import app
import os
-import re
+
path = os.path.dirname(os.path.abspath(__file__))+'/app.py'
-@pytest.mark.it('Create a variable named "color" with the string value "red"')
+@pytest.mark.it("Create a variable named 'color' with the string value 'red'")
def test_declare_variable():
result = app.color
assert result == "red"
-@pytest.mark.it('Print on the console the value of the variable')
-def test_for_printing_variable():
-
- with open(path, 'r') as content_file:
- content = content_file.read()
- regex = re.compile(r"print\s*\(\s*color\s*\)")
- assert bool(regex.search(content)) == True
+@pytest.mark.it("Create a variable named 'item' with the string value 'marker'")
+def test_declare_variable():
+ result = app.item
+ assert result == "marker"
-@pytest.mark.it('The printed value on the console should be "red"')
+@pytest.mark.it('The printed value on the console should be "red marker"')
def test_for_file_output(capsys):
captured = buffer.getvalue()
- assert "red\n" in captured
+ assert "red marker\n" in captured
From d26adf3521b6134599e454db66be11310303c1da Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 15 Nov 2023 23:56:44 +0100
Subject: [PATCH 022/175] Update README.es.md
---
exercises/03-Print-Variables-In-The-Console/README.es.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/03-Print-Variables-In-The-Console/README.es.md b/exercises/03-Print-Variables-In-The-Console/README.es.md
index 5ce2ba7f..12b5a6fd 100644
--- a/exercises/03-Print-Variables-In-The-Console/README.es.md
+++ b/exercises/03-Print-Variables-In-The-Console/README.es.md
@@ -1,4 +1,4 @@
-# `03` Print Variables in The Console
+# `03` Print more Variables in The Console
También puedes imprimir más de una variable en la misma función `print()` separando con una coma `,` las variables a imprimir. De esta manera:
From bd1cc16fd619e5b4d7a2752ea26f9950016dbdd0 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 11:40:11 +0100
Subject: [PATCH 023/175] Update README.md
---
exercises/05-User-Inputed-Values/README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/exercises/05-User-Inputed-Values/README.md b/exercises/05-User-Inputed-Values/README.md
index 49cb46b8..364fc56a 100644
--- a/exercises/05-User-Inputed-Values/README.md
+++ b/exercises/05-User-Inputed-Values/README.md
@@ -12,8 +12,8 @@ For example, the application right now is prompting the user for its age, and th
1. Please add 10 years to the value of the age variable.
-## 💡Hint
+## 💡 Hints:
-+ You can Google "how to add a number to a python variable".
++ You can Google "how to add a number to a Python variable".
-+ Remember that the content of the variable its being previously filled with whatever the user inputs.
\ No newline at end of file
++ Remember that the content of the variable is being previously filled with whatever the user inputs.
From 84a73ae5686a3e07b2923336e70f95c1bd6ffca2 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 11:41:18 +0100
Subject: [PATCH 024/175] Update README.es.md
---
exercises/05-User-Inputed-Values/README.es.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/exercises/05-User-Inputed-Values/README.es.md b/exercises/05-User-Inputed-Values/README.es.md
index ede34ffc..ecbbf140 100644
--- a/exercises/05-User-Inputed-Values/README.es.md
+++ b/exercises/05-User-Inputed-Values/README.es.md
@@ -2,14 +2,14 @@
Otra cosa genial de las variables es que no necesitas saber su valor para poder trabajar con ellas.
-Por ejemplo, justo ahora la aplicación está preguntando la edad del usuario, y luego la imprime en la cónsola.
+Por ejemplo, justo ahora la aplicación está preguntando la edad del usuario, y luego la imprime en la consola.
## 📝 Instrucciones:
1. Por favor, añade 10 años al valor de la variable `age`.
-## 💡 Pista:
+## 💡 Pistas:
+ Puedes buscar en Google "Como sumarle una cantidad a una variable de Python".
-+ Recuerda que el contenido de la variable está siendo definido con lo que sea que el usuario coloque.
\ No newline at end of file
++ Recuerda que el contenido de la variable está siendo definido con lo que sea que el usuario coloque.
From 61d013a28e6b769d2214498968324b56dea1ce1e Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 11:42:52 +0100
Subject: [PATCH 025/175] Update test.py
---
exercises/05-User-Inputed-Values/test.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/05-User-Inputed-Values/test.py b/exercises/05-User-Inputed-Values/test.py
index 2a660472..7409b8f8 100644
--- a/exercises/05-User-Inputed-Values/test.py
+++ b/exercises/05-User-Inputed-Values/test.py
@@ -9,7 +9,7 @@ def test_for_file_output(capsys):
regex = re.compile(pattern)
assert bool(regex.search(content)) == True
-@pytest.mark.it("We tried with age 50 and it was supposed to return 60")
+@pytest.mark.it("Testing with age 50 and it is supposed to return 60")
@mock.patch('builtins.input', lambda x: 50)
def test_plus_ten(stdin):
# f = open(os.path.dirname(os.path.abspath(__file__))+'/app.py')
From 8f23d1b667de840faaef656fa87b669980f01fb4 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 11:53:14 +0100
Subject: [PATCH 026/175] Update README.md
---
exercises/06-String-Concatenation/README.md | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/exercises/06-String-Concatenation/README.md b/exercises/06-String-Concatenation/README.md
index 7bf0f55a..541ec12f 100644
--- a/exercises/06-String-Concatenation/README.md
+++ b/exercises/06-String-Concatenation/README.md
@@ -11,16 +11,15 @@ You can think of this process as similar to connecting two or more train cars. I
In Python, you can concatenate, or join together, two or more strings using the `+` operator. This is how it works:
```py
-
one = 'a'
two = 'b'
-print(one + two) # this will print 'ab' on the console.
+print(one + two) # This will print 'ab' on the console.
```
Here, the variables `one` and `two` hold the individual strings `'a'` and `'b'`. When you use the `+` operator between them, it acts like a glue, sticking the strings together end-to-end. In this case, it joins `'a'` and `'b'`, resulting in the concatenated string `'ab'`, which gets printed to the console.
## 📝 Instructions:
-1. Set the values for `my_var1` and `my_var2` so that when concatenated, the code prints `Hello World` in the console.
+1. Set the values for `my_var1` and `my_var2` so that, when concatenated, the code prints `Hello World` in the console.
## 💡 Hint:
-+ If you need further explanation on how string **concatenation** works in python, you can watch this clip: https://www.youtube.com/watch?v=28FUVmWU_fA&ab_channel=PortfolioCourses (`ctrl + click` on the link to open the video)
++ If you need further explanation on how string **concatenation** works in Python, you can watch this clip: https://www.youtube.com/watch?v=28FUVmWU_fA&ab_channel=PortfolioCourses (`ctrl + click` on the link to open the video)
From 42e0a9624c618e751353ca1db26740c3c4322ab2 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 11:56:43 +0100
Subject: [PATCH 027/175] Update README.es.md
---
exercises/06-String-Concatenation/README.es.md | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/exercises/06-String-Concatenation/README.es.md b/exercises/06-String-Concatenation/README.es.md
index 382ed1b7..56b080d2 100644
--- a/exercises/06-String-Concatenation/README.es.md
+++ b/exercises/06-String-Concatenation/README.es.md
@@ -7,10 +7,9 @@ Puedes pensar en este proceso como conectar dos o más vagones de tren. Si cada
En Python, puedes concatenar o unir dos o más strings usando el operador `+`. Así es como funciona:
```py
-
one = 'a'
two = 'b'
-print(one + two) # esto imprimirá 'ab' en la consola.
+print(one + two) # Esto imprimirá 'ab' en la consola.
```
Aquí, las variables `one` y `two` contienen los strings individuales `'a'` y `'b'`, respectivamente. Cuando usas el operador `+` entre ellos, actúa como un pegamento, uniendo los strings de extremo a extremo. En este caso, une `'a'` y `'b'`, dando como resultado el string concatenado `'ab'`, que se imprime en la consola.
@@ -20,4 +19,4 @@ Aquí, las variables `one` y `two` contienen los strings individuales `'a'` y `'
## 💡 Pista:
-+ Si necesitas más explicación sobre como la **concatenación** funciona en Python, puedes ver este clip: https://www.youtube.com/watch?v=T1nyPuAhd1U&ab_channel=ProgramaResuelto (`ctrl + click` en el enlance para abrir el video)
++ Si necesitas más explicación sobre como funciona la **concatenación** en Python, puedes ver este clip: https://www.youtube.com/watch?v=T1nyPuAhd1U&ab_channel=ProgramaResuelto (`ctrl + click` en el enlace para abrir el video)
From 2c1348bb42f2ec6188c6d55c1aecb1bcf63cfb73 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 11:57:33 +0100
Subject: [PATCH 028/175] Update solution.hide.py
---
exercises/06-String-Concatenation/solution.hide.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/exercises/06-String-Concatenation/solution.hide.py b/exercises/06-String-Concatenation/solution.hide.py
index 45c6ee72..74f82acc 100644
--- a/exercises/06-String-Concatenation/solution.hide.py
+++ b/exercises/06-String-Concatenation/solution.hide.py
@@ -3,6 +3,6 @@
my_var1 = "Hello"
my_var2 = "World"
-## Don't change below this line
-the_new_string = my_var1+' '+my_var2
-print(the_new_string)
\ No newline at end of file
+## Don't change anything below this line
+the_new_string = my_var1 + ' ' + my_var2
+print(the_new_string)
From 67dd5801398535c174174684789837181de1e0a6 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 11:57:47 +0100
Subject: [PATCH 029/175] Update app.py
---
exercises/06-String-Concatenation/app.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/exercises/06-String-Concatenation/app.py b/exercises/06-String-Concatenation/app.py
index 5eefe43b..97521fb2 100644
--- a/exercises/06-String-Concatenation/app.py
+++ b/exercises/06-String-Concatenation/app.py
@@ -1,6 +1,6 @@
# ✅ ↓ Set the values for my_var1 and my_var2 here ↓ ✅
-## Don't change below this line
-the_new_string = my_var1+' '+my_var2
-print(the_new_string)
\ No newline at end of file
+## Don't change anything below this line
+the_new_string = my_var1 + ' ' + my_var2
+print(the_new_string)
From e2f3dc7f03e72b40821c787d8b41c446d4091fb6 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 12:01:51 +0100
Subject: [PATCH 030/175] Update test.py
---
exercises/06-String-Concatenation/test.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/06-String-Concatenation/test.py b/exercises/06-String-Concatenation/test.py
index 69fe26a8..a0d74abb 100644
--- a/exercises/06-String-Concatenation/test.py
+++ b/exercises/06-String-Concatenation/test.py
@@ -27,7 +27,7 @@ def test_my_var2_value():
from app import my_var2
assert my_var2.lower() == "world"
-@pytest.mark.it("Variable my_var2 value should be 'World'")
+@pytest.mark.it("Don't remove the_new_string variable")
def test_the_new_string_exists():
import app
try:
@@ -38,4 +38,4 @@ def test_the_new_string_exists():
@pytest.mark.it('Print "Hello World" on the console')
def test_for_file_output():
captured = buffer.getvalue()
- assert "hello world\n" in captured.lower() #add \n because the console jumps the line on every print
\ No newline at end of file
+ assert "hello world\n" in captured.lower() #add \n because the console jumps the line on every print
From 1159d314dd0cd005600a7b6e5549377cb30d31bf Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 12:10:02 +0100
Subject: [PATCH 031/175] Update README.md
---
exercises/07-Create-a-Basic-HTML/README.md | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/exercises/07-Create-a-Basic-HTML/README.md b/exercises/07-Create-a-Basic-HTML/README.md
index f6abf000..4cd0be34 100644
--- a/exercises/07-Create-a-Basic-HTML/README.md
+++ b/exercises/07-Create-a-Basic-HTML/README.md
@@ -8,20 +8,18 @@ Let's continue using string concatenation to generate HTML...
## 📝 Instructions:
-1. Create a variable **html_document**.
+1. Create the variable `html_document`.
-2. The code on the left contains 8 variables with different string values, please use the variables concatenating them together to set the value of the variable **html_document**
-a new string that has the content of a typical HTML document (with the HTML tags in the
-right order).
+2. The code on the left contains 8 variables with different string values, please use the variables concatenating them together to set the value of the variable `html_document`
+to a new string that has the content of a typical HTML document (with the HTML tags in the right order).
-3. Then, print the value of **html_document** on the console.
+3. Then, print the value of `html_document` on the console.
## 💡 Hint:
+ Expected Result:
-```sh
-
+```html
```
From c8fe037f8322cd3f9bc9cdcd47208ab2b658343e Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 12:13:08 +0100
Subject: [PATCH 032/175] Update README.es.md
---
exercises/07-Create-a-Basic-HTML/README.es.md | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/exercises/07-Create-a-Basic-HTML/README.es.md b/exercises/07-Create-a-Basic-HTML/README.es.md
index 682ad8c0..0abe48b4 100644
--- a/exercises/07-Create-a-Basic-HTML/README.es.md
+++ b/exercises/07-Create-a-Basic-HTML/README.es.md
@@ -4,19 +4,17 @@ Continuemos concatenando strings para generar un documento HTML básico...
## 📝 Instrucciones:
-1. Crea una variable **html_document**.
+1. Crea la variable `html_document`.
-2. El código a la izquierda contiene 8 variables con diferentes valores de tipo *string*. Por favor, usa las variables concatenándolas entre ellas para establecer el valor de la variable **html_document** como nuevo string que tenga el contenido de un documento HTML típico (con las etiquetas HTML
-en el orden correcto).
+2. El código a la izquierda contiene 8 variables con diferentes valores de tipo *string*. Por favor, usa las variables concatenándolas entre ellas para establecer el valor de la variable `html_document` a la estructura típica de un documento HTML (con las etiquetas HTML en el orden correcto).
-3. Luego, imprime el valor de **html_document** en la consola.
+3. Luego, imprime el valor de `html_document` en la consola.
## 💡 Pista:
+ Resultado esperado:
-```sh
-
+```html
```
From 2405e34d23467ad32a4fcdcd9984c50b16b4950b Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 12:15:10 +0100
Subject: [PATCH 033/175] Update solution.hide.py
---
exercises/07-Create-a-Basic-HTML/solution.hide.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/07-Create-a-Basic-HTML/solution.hide.py b/exercises/07-Create-a-Basic-HTML/solution.hide.py
index 4e180299..cda52eee 100644
--- a/exercises/07-Create-a-Basic-HTML/solution.hide.py
+++ b/exercises/07-Create-a-Basic-HTML/solution.hide.py
@@ -11,5 +11,5 @@
# ✅ ↓ start coding below here ↓ ✅
-html_document = e+c+g+a+f+h+d+b
-print(html_document)
\ No newline at end of file
+html_document = e + c + g + a + f + h + d + b
+print(html_document)
From aa99cc6354bea4027cc2af7af1ee5fc1955cb64f Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 12:16:20 +0100
Subject: [PATCH 034/175] Update README.md
---
exercises/07-Create-a-Basic-HTML/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/07-Create-a-Basic-HTML/README.md b/exercises/07-Create-a-Basic-HTML/README.md
index 4cd0be34..2c5d41f4 100644
--- a/exercises/07-Create-a-Basic-HTML/README.md
+++ b/exercises/07-Create-a-Basic-HTML/README.md
@@ -2,7 +2,7 @@
tutorial: "https://www.youtube.com/watch?v=j14V-eS8mRg"
---
-# `07` Create a basic HTML
+# `07` Create a Basic HTML
Let's continue using string concatenation to generate HTML...
From cc1a4132c8711f65244340f44983c6c8d7a432d1 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 12:23:46 +0100
Subject: [PATCH 035/175] Update README.md
---
exercises/08.1-Your-First-If/README.md | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/exercises/08.1-Your-First-If/README.md b/exercises/08.1-Your-First-If/README.md
index e1f1a58e..36442de0 100644
--- a/exercises/08.1-Your-First-If/README.md
+++ b/exercises/08.1-Your-First-If/README.md
@@ -10,23 +10,23 @@ The current application is asking how much money the user has. Once the user inp
1. If the user has more than $100, we answer: "Give me your money!".
-2. If the user has more than $50, we answer: "Buy me some coffee you cheap!".
+2. If the user has more than $50, we answer: "Buy me some coffee, you cheap!".
-3. If the user has less or equal than $50, we answer: "You are a poor guy, go away!".
+3. If the user has less than or equal to $50, we answer: "You are a poor guy, go away!".
-## 💡 Hint:
+## 💡 Hints:
-+ Use an If/else statement to check the value of the `total` variable.
++ Use an `if...else` statement to check the value of the `total` variable.
+ Further information [here](https://docs.python.org/3/tutorial/controlflow.html#if-statements).
+ Here's a quick reminder on relational operators:
- | Operator | Description | Syntax |
- |----------|--------------------------------------------------------------------|-----------|
- | > | Greater than: True if the left operand is greater than the right | x > y |
- | < | Less than: True if the left operand is less than the right | x < y |
- | == | Equal to: True if both operands are equal | x == y |
- | != | Not equal to – True if operands are not equal | x != y |
- | >= | Greater than or equal to: True if left operand is greater or equal | x >= y |
- | <= | Less than or equal to: True if left operand is less than or equal | x <= y |
+ | Operator | Description | Syntax |
+ |----------|------------------------------------------------------------------------|-----------|
+ | > | Greater than: True if the left operand is greater than the right | x > y |
+ | < | Less than: True if the left operand is less than the right | x < y |
+ | == | Equal to: True if both operands are equal | x == y |
+ | != | Not equal to: True if operands are not equal | x != y |
+ | >= | Greater than or equal to: True if the left operand is greater or equal | x >= y |
+ | <= | Less than or equal to: True if the left operand is less or equal | x <= y |
From 91a56dae7a2f3b714feabd9ac4baeb458f04a61f Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 12:24:37 +0100
Subject: [PATCH 036/175] Update README.md
---
exercises/08.1-Your-First-If/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/08.1-Your-First-If/README.md b/exercises/08.1-Your-First-If/README.md
index 36442de0..8f36b753 100644
--- a/exercises/08.1-Your-First-If/README.md
+++ b/exercises/08.1-Your-First-If/README.md
@@ -2,7 +2,7 @@
tutorial: "https://www.youtube.com/watch?v=x9wqa5WQZiM"
---
-# `08.1` Your First if...
+# `08.1` Your First If...
The current application is asking how much money the user has. Once the user inputs the amount, we need to **print** one of the following answers:
From 85d3a8a8b3318af2f0f815b3fe8c5b6f375ac4ed Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 12:35:29 +0100
Subject: [PATCH 037/175] Update README.es.md
---
exercises/08.1-Your-First-If/README.es.md | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/exercises/08.1-Your-First-If/README.es.md b/exercises/08.1-Your-First-If/README.es.md
index 5fa04204..2443a544 100644
--- a/exercises/08.1-Your-First-If/README.es.md
+++ b/exercises/08.1-Your-First-If/README.es.md
@@ -4,15 +4,15 @@ La aplicación actual está preguntando cuánto dinero tiene el usuario. Una vez
## 📝 Instrucciones:
-1. Si el usuario tiene más de $100, respondemos: "Give me your money!" (Dame tu dinero).
+1. Si el usuario tiene más de $100, respondemos: "Give me your money!" (¡Dame tu dinero!).
-2. Si el usuario tiene más de $50, respondemos: "Buy me some coffee you cheap!" (¡Comprame un café!).
+2. Si el usuario tiene más de $50, respondemos: "Buy me some coffee, you cheap!" (¡Comprame un café!).
3. Si el usuario tiene igual o menos de $50, respondemos: "You are a poor guy, go away!" (¡Eres pobre!).
-## 💡 Pista:
+## 💡 Pistas:
-+ Usa un condicional `if/else` para verificar el valor de la variable `total`.
++ Usa un condicional `if...else` para verificar el valor de la variable `total`.
+ Puedes leer más al respecto [aquí](https://docs.python.org/3/tutorial/controlflow.html#if-statements).
@@ -20,9 +20,9 @@ La aplicación actual está preguntando cuánto dinero tiene el usuario. Una vez
| Operador | Descripción | Sintaxis |
|----------|------------------------------------------------------------------------------|----------|
- | > | Mayor que: Verdadero si el operando izquierdo es mayor que el derecho | x > y |
- | < | Menor que: Verdadero si el operando izquierdo es menor que el derecho | x < y |
- | == | Igual a: Verdadero si ambos operandos son iguales | x == y |
- | != | No igual a – Verdadero si los operandos no son iguales | x != y |
- | >= | Mayor o igual que: Verdadero si el operando izquierdo es mayor o igual | x >= y |
- | <= | Menor o igual que: Verdadero si el operando izquierdo es menor o igual | x <= y |
+ | > | Mayor que: True si el operando izquierdo es mayor que el derecho | x > y |
+ | < | Menor que: True si el operando izquierdo es menor que el derecho | x < y |
+ | == | Igual a: True si ambos operandos son iguales | x == y |
+ | != | No igual a: True si los operandos no son iguales | x != y |
+ | >= | Mayor o igual que: True si el operando izquierdo es mayor o igual | x >= y |
+ | <= | Menor o igual que: True si el operando izquierdo es menor o igual | x <= y |
From 2b5a5423ffae4e2c23c31a2c4999545b1e897394 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 12:36:29 +0100
Subject: [PATCH 038/175] Update solution.hide.py
---
exercises/08.1-Your-First-If/solution.hide.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/08.1-Your-First-If/solution.hide.py b/exercises/08.1-Your-First-If/solution.hide.py
index 706c21fc..bb51f955 100644
--- a/exercises/08.1-Your-First-If/solution.hide.py
+++ b/exercises/08.1-Your-First-If/solution.hide.py
@@ -4,6 +4,6 @@
if total > 100:
print("Give me your money!")
elif total > 50:
- print("Buy me some coffee you cheap!")
+ print("Buy me some coffee, you cheap!")
else:
- print("You are a poor guy, go away!")
\ No newline at end of file
+ print("You are a poor guy, go away!")
From 2a87fe5fc2f976e86de2469a2fd5bc9799e8a053 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 12:38:23 +0100
Subject: [PATCH 039/175] Update test.py
---
exercises/08.1-Your-First-If/test.py | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/exercises/08.1-Your-First-If/test.py b/exercises/08.1-Your-First-If/test.py
index 9d479ee5..8bda7fe2 100644
--- a/exercises/08.1-Your-First-If/test.py
+++ b/exercises/08.1-Your-First-If/test.py
@@ -31,37 +31,37 @@ def test_for_output_when_101(stdin, capsys, app):
captured = capsys.readouterr()
assert "Give me your money!\n" in captured.out
-@pytest.mark.it("When input exactly 100 should print: Buy me some coffee you cheap ")
+@pytest.mark.it("When input exactly 100 should print: Buy me some coffee, you cheap!")
def test_for_output_when_100(capsys, app):
with mock.patch('builtins.input', lambda x: 100):
app()
captured = capsys.readouterr()
- assert "Buy me some coffee you cheap!\n" in captured.out
+ assert "Buy me some coffee, you cheap!\n" in captured.out
-@pytest.mark.it("When input is 99 should print: Buy me some coffee you cheap ")
+@pytest.mark.it("When input is 99 should print: Buy me some coffee, you cheap!")
def test_for_output_when_99(capsys, app):
with mock.patch('builtins.input', lambda x: 99):
app()
captured = capsys.readouterr()
- assert "Buy me some coffee you cheap!\n" in captured.out
+ assert "Buy me some coffee, you cheap!\n" in captured.out
-@pytest.mark.it("When input is 51 should print: Buy me some coffee you cheap ")
+@pytest.mark.it("When input is 51 should print: Buy me some coffee, you cheap!")
def test_for_output_when_51(capsys, app):
with mock.patch('builtins.input', lambda x: 51):
app()
captured = capsys.readouterr()
- assert "Buy me some coffee you cheap!\n" in captured.out
+ assert "Buy me some coffee, you cheap!\n" in captured.out
-@pytest.mark.it("When input exactly 50 should print: You are a poor guy, go away")
+@pytest.mark.it("When input exactly 50 should print: You are a poor guy, go away!")
def test_for_output_when_50(capsys, app):
with mock.patch('builtins.input', lambda x: 50):
app()
captured = capsys.readouterr()
assert "You are a poor guy, go away!\n" in captured.out
-@pytest.mark.it("When input less than 50 should print: You are a poor guy, go away")
+@pytest.mark.it("When input less than 50 should print: You are a poor guy, go away!")
def test_for_output_when_49(capsys, app):
with mock.patch('builtins.input', lambda x: 49):
app()
captured = capsys.readouterr()
- assert "You are a poor guy, go away!\n" in captured.out
\ No newline at end of file
+ assert "You are a poor guy, go away!\n" in captured.out
From d634922059a19bd010453c8bf7d9381872b31d62 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 12:40:05 +0100
Subject: [PATCH 040/175] Update README.es.md
---
exercises/08.1-Your-First-If/README.es.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/08.1-Your-First-If/README.es.md b/exercises/08.1-Your-First-If/README.es.md
index 2443a544..b7ea9ac6 100644
--- a/exercises/08.1-Your-First-If/README.es.md
+++ b/exercises/08.1-Your-First-If/README.es.md
@@ -6,7 +6,7 @@ La aplicación actual está preguntando cuánto dinero tiene el usuario. Una vez
1. Si el usuario tiene más de $100, respondemos: "Give me your money!" (¡Dame tu dinero!).
-2. Si el usuario tiene más de $50, respondemos: "Buy me some coffee, you cheap!" (¡Comprame un café!).
+2. Si el usuario tiene más de $50, respondemos: "Buy me some coffee, you cheap!" (¡Cómprame un café!).
3. Si el usuario tiene igual o menos de $50, respondemos: "You are a poor guy, go away!" (¡Eres pobre!).
From 7617dba791a1a5be8d3bd1180363e83c69b7c482 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 12:45:30 +0100
Subject: [PATCH 041/175] Update README.md
---
exercises/08.2-How-Much-The-Wedding-Costs/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/08.2-How-Much-The-Wedding-Costs/README.md b/exercises/08.2-How-Much-The-Wedding-Costs/README.md
index 58ecdd99..3fd1585e 100644
--- a/exercises/08.2-How-Much-The-Wedding-Costs/README.md
+++ b/exercises/08.2-How-Much-The-Wedding-Costs/README.md
@@ -25,4 +25,4 @@ For example, if the user says that `20` people are attending to the wedding, it
## 💡 Hint:
-+ Use if/else to divide your code and set the value of the `price` variable the right way.
++ Use `if...else` to divide your code and set the value of the `price` variable the right way.
From d05cff084ab241d6756cb12fd4bf62903e71a382 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 12:48:07 +0100
Subject: [PATCH 042/175] Update README.es.md
---
exercises/08.2-How-Much-The-Wedding-Costs/README.es.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/exercises/08.2-How-Much-The-Wedding-Costs/README.es.md b/exercises/08.2-How-Much-The-Wedding-Costs/README.es.md
index 472fc950..37b763c1 100644
--- a/exercises/08.2-How-Much-The-Wedding-Costs/README.es.md
+++ b/exercises/08.2-How-Much-The-Wedding-Costs/README.es.md
@@ -1,4 +1,4 @@
-# `08.2` Cuánto costará la boda (if...else)
+# `08.2` How Much The Wedding Costs (if...else)
Aquí tenemos una tabla de precios de una compañía de catering de bodas:
@@ -9,7 +9,7 @@ Aquí tenemos una tabla de precios de una compañía de catering de bodas:
| Hasta 200 personas | $15,000 |
| Más de 200 personas | $20,000 |
->Nota: Las cantidades en la tabla incluyen el número especificado. Por ejemplo, "Hasta 50 personas" incluye exactamente 50 personas.
+> Nota: Las cantidades en la tabla incluyen el número especificado. Por ejemplo, "Hasta 50 personas" incluye exactamente 50 personas.
## 📝 Instrucciones:
@@ -17,8 +17,8 @@ Aquí tenemos una tabla de precios de una compañía de catering de bodas:
2. Amplía el código proporcionado a la izquierda para cubrir todos los rangos posibles de invitados.
3. Asegúrate de que tu código calcule e imprima correctamente el precio en la consola según el input del usuario.
-Por ejemplo, si la persona dice que `20` personas van a la boda, deberìa costar `$4,000` dólares.
+Por ejemplo, si la persona dice que `20` personas van a la boda, debería costar `$4,000` dólares.
## 💡 Pista:
-+ Usa if/else para dividir el código y definir el valor de la variable `price` de forma correcta.
++ Usa `if...else` para dividir el código y definir el valor de la variable `price` de forma correcta.
From dbf1d962490f6f367a861790068a88c05ef01e77 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 12:50:37 +0100
Subject: [PATCH 043/175] Update test.py
---
exercises/08.2-How-Much-The-Wedding-Costs/test.py | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/exercises/08.2-How-Much-The-Wedding-Costs/test.py b/exercises/08.2-How-Much-The-Wedding-Costs/test.py
index 5a93afaf..2625b813 100644
--- a/exercises/08.2-How-Much-The-Wedding-Costs/test.py
+++ b/exercises/08.2-How-Much-The-Wedding-Costs/test.py
@@ -16,7 +16,7 @@ def test_for_print(capsys):
regex2 = re.compile(r"elif\s*")
assert bool(regex2.search(content)) == True
-@pytest.mark.it("Between 101 and 199 guests sould be priced 15,000")
+@pytest.mark.it("Between 101 and 199 guests, it should cost 15,000")
def test__between_100_and_200(capsys, app):
with mock.patch('builtins.input', lambda x: 199):
app()
@@ -24,7 +24,7 @@ def test__between_100_and_200(capsys, app):
price = 15000
assert "Your wedding will cost "+str(price)+" dollars\n" in captured.out
-@pytest.mark.it("Between 100 and 51 guests sould be priced 10,000")
+@pytest.mark.it("Between 100 and 51 guests, it should cost 10,000")
def test_between_101_and_51(capsys, app):
with mock.patch('builtins.input', lambda x: 100):
app()
@@ -33,7 +33,7 @@ def test_between_101_and_51(capsys, app):
assert "Your wedding will cost "+str(price)+" dollars\n" in captured.out
-@pytest.mark.it("Less than 50 guests sould be priced 4,000")
+@pytest.mark.it("Less than 50 guests, it should cost 4,000")
def test_less_than_50(capsys, app):
with mock.patch('builtins.input', lambda x: 49):
app()
@@ -41,10 +41,10 @@ def test_less_than_50(capsys, app):
price = 4000
"Your wedding will cost "+str(price)+" dollars\n" in captured.out
-@pytest.mark.it("More than 200 should be priced 20,000")
+@pytest.mark.it("More than 200 guests, it should cost 20,000")
def test_t(capsys, app):
with mock.patch('builtins.input', lambda x: 201):
app()
captured = capsys.readouterr()
price = 20000
- "Your wedding will cost "+str(price)+" dollars\n" in captured.out
\ No newline at end of file
+ "Your wedding will cost "+str(price)+" dollars\n" in captured.out
From 86653017d99515d1db28fd66ccca137a12bea37c Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:03:39 +0100
Subject: [PATCH 044/175] Update README.md
---
exercises/09-Random-Numbers/README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/exercises/09-Random-Numbers/README.md b/exercises/09-Random-Numbers/README.md
index 021fe0d8..8c625187 100644
--- a/exercises/09-Random-Numbers/README.md
+++ b/exercises/09-Random-Numbers/README.md
@@ -4,9 +4,9 @@ tutorial: "https://www.youtube.com/watch?v=uYqMOZ-jFag"
# `09` Random Numbers
-You can use the `randint()` function to get a random integer number. `randint()` is an inbuilt function of the **random** module in Python3.
+You can use the `randint()` function to get a random integer number. `randint()` is an inbuilt function of the `random` module in Python3.
- The random module offers various useful functions, including `randint()`, which generates random **whole** numbers within a given range passed as parameters. You can use it like this: `randint(numMin, numMax)`, where both the minimum and maximum numbers are included in the range.
+The random module offers various useful functions, including `randint()`, which generates random **whole** numbers within a given range passed as parameters. You can use it like this: `randint(numMin, numMax)`, where both the minimum and maximum numbers are included in the range.
## 📝 Instructions:
@@ -14,4 +14,4 @@ You can use the `randint()` function to get a random integer number. `randint()`
## 💡 Hint:
-+ For additional documentation on random module visit: https://www.tutorialsteacher.com/python/random-module
\ No newline at end of file
++ For additional documentation on the `random` module, visit: https://www.tutorialsteacher.com/python/random-module
From b2fd154c8bc38796a42fad2e71dfb53fbf4d5500 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:04:13 +0100
Subject: [PATCH 045/175] Update README.md
---
exercises/09-Random-Numbers/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/09-Random-Numbers/README.md b/exercises/09-Random-Numbers/README.md
index 8c625187..fcfff339 100644
--- a/exercises/09-Random-Numbers/README.md
+++ b/exercises/09-Random-Numbers/README.md
@@ -6,7 +6,7 @@ tutorial: "https://www.youtube.com/watch?v=uYqMOZ-jFag"
You can use the `randint()` function to get a random integer number. `randint()` is an inbuilt function of the `random` module in Python3.
-The random module offers various useful functions, including `randint()`, which generates random **whole** numbers within a given range passed as parameters. You can use it like this: `randint(numMin, numMax)`, where both the minimum and maximum numbers are included in the range.
+The random module offers various useful functions, including `randint()`, which generates random **whole** numbers within a given range passed as parameters. You can use it like this: `randint(min_num, max_num)`, where both the minimum and maximum numbers are included in the range.
## 📝 Instructions:
From 30e21f04f4ad6e13473a2adaf4bf61a3351fd7a5 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:11:26 +0100
Subject: [PATCH 046/175] Update README.es.md
---
exercises/09-Random-Numbers/README.es.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/exercises/09-Random-Numbers/README.es.md b/exercises/09-Random-Numbers/README.es.md
index da28bb47..b77ad09e 100644
--- a/exercises/09-Random-Numbers/README.es.md
+++ b/exercises/09-Random-Numbers/README.es.md
@@ -1,13 +1,13 @@
# `09` Random Numbers
-Puedes usar la función `randint()`para obtener un número entero aleatorio. `randint()` es una funcion interna del módulo **random** en Python 3.
+Puedes usar la función `randint()` para obtener un número entero aleatorio. `randint()` es una función interna del módulo `random` en Python3.
-El módulo random da acceso a varias funciones útiles y una de ellas, la función `randint()`, genera números **enteros* aleatorios entre un rango que le pasemos por parámetro, por ejemplo: `randint(numMinimo, numMaximo)`. El numero minimo y el numero maximo en dicho rango son inclusivos.
+El módulo random da acceso a varias funciones útiles y una de ellas, la función `randint()`, genera números **enteros** aleatorios entre un rango que le pasemos por parámetro, por ejemplo: `randint(num_minimo, num_maximo)`. El número mínimo y el número máximo en dicho rango son inclusivos.
## 📝 Instrucciones:
-1. Actualmente el código está devolviendo números decimales aleatorios, por favor actualiza la función en el código para hacer que devuelva un número entero (no decimal) entre 1 y 10.
+1. Actualmente, el código está devolviendo números decimales aleatorios, por favor actualiza la función en el código para hacer que devuelva un número entero (no decimal) entre 1 y 10.
-## 💡 Pistas:
+## 💡 Pista:
-+ Puedes encontrar información addicional sobre el modulo random aquí: https://ellibrodepython.com/numeros-aleatorios-python
\ No newline at end of file
++ Puedes encontrar información adicional sobre el módulo `random` aquí: https://ellibrodepython.com/numeros-aleatorios-python
From 8164724d8ed6fd283a65273b87201ade60c1f847 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:24:47 +0100
Subject: [PATCH 047/175] Update README.md
---
exercises/10-Calling-Your-First-Function/README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/exercises/10-Calling-Your-First-Function/README.md b/exercises/10-Calling-Your-First-Function/README.md
index 7a19da1c..06593196 100644
--- a/exercises/10-Calling-Your-First-Function/README.md
+++ b/exercises/10-Calling-Your-First-Function/README.md
@@ -13,11 +13,11 @@ Functions are amazing because of many things, but mainly because you can encapsu
2. The function `is_odd` is defined at the beginning of the code, please call that function inside `my_main_code` passing it the number `45345` and print the result on the console.
-## :mag_right: Important:
+## 🔎 Important:
-There's a series of exercises dedicated to Functions [here](https://github.com/4GeeksAcademy/python-functions-programming-exercises), we encourage you to go and finish those after your **first Function exercise** (And then... come back! :smiley).
+There's a series of exercises dedicated to functions [here](https://github.com/4GeeksAcademy/python-functions-programming-exercises), we encourage you to go and finish those after your **first Function exercise** (And then... come back! 😄).
-## 💡Hint:
+## 💡 Hint:
-+ Check this out for additional information on functions and function calls: https://www.w3schools.com/python/python_functions.asp
\ No newline at end of file
++ Check this out for additional information on functions and function calls: https://www.w3schools.com/python/python_functions.asp
From cabc386d8ee24a309a9f86ad12a8fbf6f44fbc79 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:26:07 +0100
Subject: [PATCH 048/175] Update README.md
---
exercises/10-Calling-Your-First-Function/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/10-Calling-Your-First-Function/README.md b/exercises/10-Calling-Your-First-Function/README.md
index 06593196..6fcf8277 100644
--- a/exercises/10-Calling-Your-First-Function/README.md
+++ b/exercises/10-Calling-Your-First-Function/README.md
@@ -15,7 +15,7 @@ Functions are amazing because of many things, but mainly because you can encapsu
## 🔎 Important:
-There's a series of exercises dedicated to functions [here](https://github.com/4GeeksAcademy/python-functions-programming-exercises), we encourage you to go and finish those after your **first Function exercise** (And then... come back! 😄).
+There's a series of exercises dedicated to functions [here](https://github.com/4GeeksAcademy/python-functions-programming-exercises), we encourage you to go and finish those after your **first Function exercise** (And then... come back! 😃).
## 💡 Hint:
From 2da2289a10a066a1d5b4e35f5c950a1503ec936e Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:26:44 +0100
Subject: [PATCH 049/175] Update README.md
---
exercises/10-Calling-Your-First-Function/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/10-Calling-Your-First-Function/README.md b/exercises/10-Calling-Your-First-Function/README.md
index 6fcf8277..1db9a3c5 100644
--- a/exercises/10-Calling-Your-First-Function/README.md
+++ b/exercises/10-Calling-Your-First-Function/README.md
@@ -15,7 +15,7 @@ Functions are amazing because of many things, but mainly because you can encapsu
## 🔎 Important:
-There's a series of exercises dedicated to functions [here](https://github.com/4GeeksAcademy/python-functions-programming-exercises), we encourage you to go and finish those after your **first Function exercise** (And then... come back! 😃).
+There's a series of exercises dedicated to functions [here](https://github.com/4GeeksAcademy/python-functions-programming-exercises), we encourage you to go and finish those after your **first function exercise** (And then... come back! 😃).
## 💡 Hint:
From 9a7251498668552f9a056b281e01c0d36e2aebb1 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:27:28 +0100
Subject: [PATCH 050/175] Update README.es.md
---
exercises/10-Calling-Your-First-Function/README.es.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/exercises/10-Calling-Your-First-Function/README.es.md b/exercises/10-Calling-Your-First-Function/README.es.md
index 70cc213f..29bc48a1 100644
--- a/exercises/10-Calling-Your-First-Function/README.es.md
+++ b/exercises/10-Calling-Your-First-Function/README.es.md
@@ -8,11 +8,11 @@ Las funciones son increíbles por muchas cosas, pero principalmente porque puede
2. La función `is_odd` está definida al inicio del código, por favor llama a esa función dentro de `my_main_code` pasándole el número `45345` e imprime el resultado en la consola.
-## :mag_right: Importante:
+## 🔎 Importante:
- + Hay una serie de ejercicios dedicados a las funciones [aquí](https://github.com/4GeeksAcademy/python-functions-programming-exercises), te recomendamos realizarlos después de hacer **tu primera función** en este ejercicio. (luego..¡Regresa! :smiley:).
++ Hay una serie de ejercicios dedicados a las funciones [aquí](https://github.com/4GeeksAcademy/python-functions-programming-exercises), te recomendamos realizarlos después de hacer **tu primera función** en este ejercicio. (luego... ¡Regresa! 😃).
- ## 💡Pista:
+## 💡 Pista:
- + Puedes consultar esta pagina para obtener información adicional sobre funciones y llamadas a funciones: https://www.freecodecamp.org/espanol/news/guia-de-funciones-de-python-con-ejemplos/
\ No newline at end of file
++ Puedes consultar esta página para obtener información adicional sobre funciones y llamadas a funciones: https://www.freecodecamp.org/espanol/news/guia-de-funciones-de-python-con-ejemplos/
From 5d2be4a7256a8a68ecbdd4b833eceda638d65b08 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:29:37 +0100
Subject: [PATCH 051/175] Update test.py
---
exercises/10-Calling-Your-First-Function/test.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/10-Calling-Your-First-Function/test.py b/exercises/10-Calling-Your-First-Function/test.py
index 9deb6879..2544ae4b 100644
--- a/exercises/10-Calling-Your-First-Function/test.py
+++ b/exercises/10-Calling-Your-First-Function/test.py
@@ -29,7 +29,7 @@ def test_call_is_odd():
my_main_code()
mocked_is_odd.assert_called_with(45345)
-@pytest.mark.it('The console should output "True" inside the function my_main_code ')
+@pytest.mark.it('The console should output "True" inside the function my_main_code')
def test_for_file_output(capsys):
from app import my_main_code
my_main_code()
From 204f6c314f28f02aaa9503926e6bf0ef6aadec2f Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:38:16 +0100
Subject: [PATCH 052/175] Update README.md
---
.../10.1-Creating-Your-First-Function/README.md | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/exercises/10.1-Creating-Your-First-Function/README.md b/exercises/10.1-Creating-Your-First-Function/README.md
index cb233ddb..73faf321 100644
--- a/exercises/10.1-Creating-Your-First-Function/README.md
+++ b/exercises/10.1-Creating-Your-First-Function/README.md
@@ -6,20 +6,16 @@ tutorial: "https://www.youtube.com/watch?v=K0aDrl41SnQ"
## 📝 Instructions:
-1. The function `add_numbers` is supposed to return the sum of 2 given numbers, please
-complete the needed code inside of the function to make it behave as expected.
+1. The function `add_numbers` is supposed to return the sum of 2 given numbers, please complete the needed code inside the function to make it behave as expected.
-2. Expected Result: the exercise should print the number 7 in the console.
+2. The exercise should print the number 7 in the console.
## 💡 Hint:
-+ There is a function `"add_numbers"` already declared, it is receiving 2 parameters
-(variables `a` and `b`), as a developer you were given a task to fill the
-function content with the code needed to sum variable `a` with variable `b` and
-return the result of that operation.
++ There is a function `add_numbers` already declared, it receives 2 parameters (variables `a` and `b`). As a developer, you were given the task to fill the function's body with the code needed to sum variable `a` with variable `b` and return the result of that operation.
## 🔎 Important:
-For practicing with more functions, 4Geeks Academy has more than 20 exercises that increase in difficulty: [https://github.com/4GeeksAcademy/python-functions-programming-exercises](https://github.com/4GeeksAcademy/python-functions-programming-exercises).
+For more practice with functions, 4Geeks Academy has more than 20 exercises that increase in difficulty: [https://github.com/4GeeksAcademy/python-functions-programming-exercises](https://github.com/4GeeksAcademy/python-functions-programming-exercises).
-Try them, and then come back!😃
+Try them, and then come back! 😃
From efc1e480442765eff5255f17925e999b935e831c Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:43:32 +0100
Subject: [PATCH 053/175] Update README.es.md
---
exercises/10.1-Creating-Your-First-Function/README.es.md | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/exercises/10.1-Creating-Your-First-Function/README.es.md b/exercises/10.1-Creating-Your-First-Function/README.es.md
index 52fa6f6a..978f547f 100644
--- a/exercises/10.1-Creating-Your-First-Function/README.es.md
+++ b/exercises/10.1-Creating-Your-First-Function/README.es.md
@@ -4,16 +4,15 @@
1. La función `add_numbers` debería devolver la suma de 2 números dados. Por favor, completa el código necesario dentro de la función para hacer que se comporte como se espera.
-2. Resultado esperado: el ejercicio debería escribir el número 7 en la cónsola.
+2. Resultado esperado: el ejercicio debería escribir el número 7 en la consola.
## 💡 Pista:
-+ Hay una función `add_numbers` ya declarada, que está recibiendo dos parámetros
-(las variables `a` y `b`). Tú debes completar el contenido de la función con el código requerido para sumar la variable `a` con la variable `b` y devolver el resultado de la operación.
++ Hay una función `add_numbers` ya declarada, que está recibiendo dos parámetros (las variables `a` y `b`). Tú debes completar el contenido de la función con el código requerido para sumar la variable `a` con la variable `b` y devolver el resultado de la operación.
## 🔎 Importante:
- + Para practicar con más funciones, 4Geeks Academy tiene más de 20 ejercicios que se incrementan en dificultad: [https://github.com/4GeeksAcademy/python-functions-programming-exercises](https://github.com/4GeeksAcademy/python-functions-programming-exercises).
++ Para practicar con más funciones, 4Geeks Academy tiene más de 20 ejercicios que se incrementan en dificultad: [https://github.com/4GeeksAcademy/python-functions-programming-exercises](https://github.com/4GeeksAcademy/python-functions-programming-exercises).
-¡Inténtalos, y luego regresa!😃
+¡Inténtalos, y luego regresa! 😃
From 9aca335e0e27aa79c9c889ae6a6ee444d9d4ada0 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:44:11 +0100
Subject: [PATCH 054/175] Update app.py
---
exercises/10.1-Creating-Your-First-Function/app.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/10.1-Creating-Your-First-Function/app.py b/exercises/10.1-Creating-Your-First-Function/app.py
index bea9825c..e9c3e3ca 100644
--- a/exercises/10.1-Creating-Your-First-Function/app.py
+++ b/exercises/10.1-Creating-Your-First-Function/app.py
@@ -1,5 +1,5 @@
def addNumbers(a,b):
- # This is the function body. ✅↓ Write your code here. ↓✅
+ # This is the function's body ✅↓ Write your code here ↓✅
# ❌ ↓ DON'T CHANGE THE CODE BELOW ↓ ❌
From 32e714b33b3c3e8035d45f25443fc2d71fceb04a Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:44:31 +0100
Subject: [PATCH 055/175] Update app.py
---
exercises/10.1-Creating-Your-First-Function/app.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/10.1-Creating-Your-First-Function/app.py b/exercises/10.1-Creating-Your-First-Function/app.py
index e9c3e3ca..4db5352c 100644
--- a/exercises/10.1-Creating-Your-First-Function/app.py
+++ b/exercises/10.1-Creating-Your-First-Function/app.py
@@ -1,6 +1,6 @@
-def addNumbers(a,b):
+def add_numbers(a,b):
# This is the function's body ✅↓ Write your code here ↓✅
# ❌ ↓ DON'T CHANGE THE CODE BELOW ↓ ❌
-print(addNumbers(3,4))
+print(add_numbers(3,4))
From 6182cc618c9286f51d6eb7ce6c287ce668aee00d Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:45:15 +0100
Subject: [PATCH 056/175] Update solution.hide.py
---
.../10.1-Creating-Your-First-Function/solution.hide.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/exercises/10.1-Creating-Your-First-Function/solution.hide.py b/exercises/10.1-Creating-Your-First-Function/solution.hide.py
index 619f2145..2d72fdd1 100644
--- a/exercises/10.1-Creating-Your-First-Function/solution.hide.py
+++ b/exercises/10.1-Creating-Your-First-Function/solution.hide.py
@@ -1,6 +1,6 @@
-def addNumbers(a,b):
- # This is the function body. ✅↓ Write your code here. ↓✅
- return b + a
+def add_numbers(a,b):
+ # This is the function's body ✅↓ Write your code here ↓✅
+ return a + b
# ❌ ↓ DON'T CHANGE THE CODE BELOW ↓ ❌
-print(addNumbers(3,4))
+print(add_numbers(3,4))
From 3161d7557c43018063c2668cf900c32e0c43b9d8 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:50:17 +0100
Subject: [PATCH 057/175] Update test.py
---
.../10.1-Creating-Your-First-Function/test.py | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/exercises/10.1-Creating-Your-First-Function/test.py b/exercises/10.1-Creating-Your-First-Function/test.py
index ae4b341d..040c9c60 100644
--- a/exercises/10.1-Creating-Your-First-Function/test.py
+++ b/exercises/10.1-Creating-Your-First-Function/test.py
@@ -7,19 +7,19 @@
import sys
path = os.path.dirname(os.path.abspath(__file__))+'/app.py'
-@pytest.mark.it('The function addNumbers should exist')
+@pytest.mark.it('The function add_numbers should exist')
def test_for_function():
try:
- app.addNumbers
+ app.add_numbers
except AttributeError:
- raise AttributeError("The function addNumbers should exist")
+ raise AttributeError("The function add_numbers should exist")
@pytest.mark.it('Print the function in console with the values: 3, 4')
def test_for_function_print():
with open(path, 'r') as content_file:
content = content_file.read()
- regex = re.compile(r"print\s*\(\s*addNumbers\s*\(\s*3\s*,\s*4\s*\)\s*\)")
+ regex = re.compile(r"print\s*\(\s*add_numbers\s*\(\s*3\s*,\s*4\s*\)\s*\)")
assert bool(regex.search(content)) == True
@@ -32,12 +32,12 @@ def test_for_print():
@pytest.mark.it('Function should sum the two given numbers')
def test_for_return():
- from app import addNumbers
- result = addNumbers(3,4)
+ from app import add_numbers
+ result = add_numbers(3,4)
assert result == 7
@pytest.mark.it('Function should sum the two given numbers. Testing with different numbers')
def test_for_return_2():
- from app import addNumbers
- result = addNumbers(10,5)
- assert result == 15
\ No newline at end of file
+ from app import add_numbers
+ result = add_numbers(10,5)
+ assert result == 15
From 688a96213881f9bfef75e143f57fc1512a1aefd6 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 13:59:22 +0100
Subject: [PATCH 058/175] Update README.md
---
exercises/11-Create-A-New-Function/README.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/exercises/11-Create-A-New-Function/README.md b/exercises/11-Create-A-New-Function/README.md
index e79fc1e0..e9444222 100644
--- a/exercises/11-Create-A-New-Function/README.md
+++ b/exercises/11-Create-A-New-Function/README.md
@@ -4,26 +4,26 @@ tutorial: "https://www.youtube.com/watch?v=XazswkTqKJI"
# `11` Create a New Function
-As you know, functions are a useful block of code that you can re-use as many times as you need. In the last exercise, you had a function that received two parameters (two inputs) and returned the sum of those. Like this:
+As you know, functions are useful blocks of code that you can re-use as many times as you need. In the last exercise, you had a function that received two parameters (two inputs) and returned the sum of those. Like this:
```py
def add_numbers(a, b):
- print(a + b)
+ print(a + b)
```
But Python comes with a bunch of "pre-defined" functions that you can use, for example:
```py
import random
-# Generates a random number between
-# a given positive range
+# Generates a random number between a given positive range
+
r1 = random.randint(0, 10)
print("Random number between 0 and 10 is % s" % (r1))
```
You can use the `randint()` function to get a random whole number. `randint()` is an inbuilt function of the **random module** in Python3.
-The **random module** gives access to various useful functions and one of them being able to generate random numbers, which is `randint()`.
+The **random module** gives access to various useful functions, one of them being able to generate random numbers, which is `randint()`.
## 📝 Instructions:
@@ -35,6 +35,6 @@ The **random module** gives access to various useful functions and one of them b
+ One possible solution involves using two predefined functions: the `randint()` or `randrange()` function.
-+ Don't forget to import the **random module**.
++ Don't forget to import the `random` module.
-+ You can check the documentation here: https://docs.python.org/3/library/random.html#functions-for-integers
\ No newline at end of file
++ You can check the documentation here: https://docs.python.org/3/library/random.html#functions-for-integers
From 79f4de7d0ae53925de07650cd75846ad5ab6b7a2 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:02:56 +0100
Subject: [PATCH 059/175] Update README.md
---
exercises/11-Create-A-New-Function/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/11-Create-A-New-Function/README.md b/exercises/11-Create-A-New-Function/README.md
index e9444222..e09e2610 100644
--- a/exercises/11-Create-A-New-Function/README.md
+++ b/exercises/11-Create-A-New-Function/README.md
@@ -33,7 +33,7 @@ The **random module** gives access to various useful functions, one of them bein
## 💡 Hints:
-+ One possible solution involves using two predefined functions: the `randint()` or `randrange()` function.
++ One possible solution involves using one out of two predefined functions: the `randint()` or `randrange()` functions.
+ Don't forget to import the `random` module.
From bf3ae00e1bd069369a890423a9be25b7ef23b7de Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:05:37 +0100
Subject: [PATCH 060/175] Update README.es.md
---
exercises/11-Create-A-New-Function/README.es.md | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/exercises/11-Create-A-New-Function/README.es.md b/exercises/11-Create-A-New-Function/README.es.md
index c1ae2f22..e1e45372 100644
--- a/exercises/11-Create-A-New-Function/README.es.md
+++ b/exercises/11-Create-A-New-Function/README.es.md
@@ -2,20 +2,19 @@
Como sabes, las funciones son un bloque de código útil que puedes reusar tantas veces como necesites.
-En el último ejercicio, tenías una función que recibía dos parámetros
-(dos entradas) y devolvía la suma de ellos. Así:
+En el último ejercicio, tenías una función que recibía dos parámetros (dos entradas) y devolvía la suma de ellos. Así:
```py
def add_numbers(a, b):
- print(a + b)
+ print(a + b)
```
Pero Python viene con un conjunto de funciones "pre-definidas" que puedes usar, por ejemplo:
```py
import random
-# Genera un número aleatorio dentro
-# de un rango posiivo dado
+# Genera un número aleatorio dentro de un rango posiivo dado
+
r1 = random.randint(0, 10)
print("Random number between 0 and 10 is % s" % (r1))
```
@@ -26,14 +25,14 @@ El **módulo random** te da acceso a varias funciones útiles y una de ellas es,
## 📝 Instrucciones:
-1. Por favor, ahora crea una función llamada `generate_random` que devuelva un número aleatorio entre 0 y 9 cada vez que le llame.
+1. Por favor, crea una función llamada `generate_random` que devuelva un número aleatorio entre 0 y 9 cada vez que se llame.
2. Imprime el resultado que la función retorna al ser llamada.
## 💡 Pistas:
-+ Una posible solución involucra el uso de dos funciones predefinidas: las funciones `randint` o `randrange`.
++ Una posible solución involucra el uso de una de dos funciones predefinidas: la función `randint` o `randrange`.
-+ No olvides importar el **módulo random**.
++ No olvides importar el módulo `random`.
-+ Puedes consultar la documentación en: https://docs.python.org/3/library/random.html#functions-for-integers
\ No newline at end of file
++ Puedes consultar la documentación en: https://docs.python.org/3/library/random.html#functions-for-integers
From 285c2cd53d0069792be6a234ece0d330ef22cd69 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:06:42 +0100
Subject: [PATCH 061/175] Update app.py
---
exercises/11-Create-A-New-Function/app.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/11-Create-A-New-Function/app.py b/exercises/11-Create-A-New-Function/app.py
index ed1c5597..46b20099 100644
--- a/exercises/11-Create-A-New-Function/app.py
+++ b/exercises/11-Create-A-New-Function/app.py
@@ -1,3 +1,3 @@
import random
-# ✅↓ Write your code here. ↓✅
+# ✅↓ Write your code here ↓✅
From b5bfb7122f1bcec72cc1eb6c9ac99fe57beb7ae6 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:06:55 +0100
Subject: [PATCH 062/175] Update solution.hide.py
---
exercises/11-Create-A-New-Function/solution.hide.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/11-Create-A-New-Function/solution.hide.py b/exercises/11-Create-A-New-Function/solution.hide.py
index 943706e3..79538e38 100644
--- a/exercises/11-Create-A-New-Function/solution.hide.py
+++ b/exercises/11-Create-A-New-Function/solution.hide.py
@@ -1,6 +1,6 @@
import random
-# ✅↓ Write your code here. ↓✅
+# ✅↓ Write your code here ↓✅
def generate_random():
result = random.randint(0,9)
- return result
\ No newline at end of file
+ return result
From 7ab26ae9a0343d2b1dc47c8d657cfd8f92808da7 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:08:00 +0100
Subject: [PATCH 063/175] Update test.py
---
exercises/11-Create-A-New-Function/test.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/11-Create-A-New-Function/test.py b/exercises/11-Create-A-New-Function/test.py
index cb308b05..850f0ab9 100644
--- a/exercises/11-Create-A-New-Function/test.py
+++ b/exercises/11-Create-A-New-Function/test.py
@@ -14,7 +14,7 @@ def test_function_exists():
except ImportError:
raise ImportError("The function 'generate_random' should exist on app.py")
-@pytest.mark.it("The function 'generate_random' should return random number between 0 and 9")
+@pytest.mark.it("The function 'generate_random' should return a random number between 0 and 9")
def test_for_return():
from app import generate_random
result = generate_random()
@@ -31,7 +31,7 @@ def test_for_type_random():
regex2 = re.compile(r"random.randrange\s*\(")
assert bool(regex.search(content)) == True or bool(regex2.search(content)) == True
-@pytest.mark.it('You should be using print()')
+@pytest.mark.it('You should print() the result of the function')
def test_for_type_random():
with open(path, 'r') as content_file:
content = content_file.read()
From 40a46fe65456e462443574b8e2f6d556817c72dc Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:10:20 +0100
Subject: [PATCH 064/175] Update solution.hide.py
---
exercises/11-Create-A-New-Function/solution.hide.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/exercises/11-Create-A-New-Function/solution.hide.py b/exercises/11-Create-A-New-Function/solution.hide.py
index 79538e38..ef03d021 100644
--- a/exercises/11-Create-A-New-Function/solution.hide.py
+++ b/exercises/11-Create-A-New-Function/solution.hide.py
@@ -4,3 +4,5 @@
def generate_random():
result = random.randint(0,9)
return result
+
+print(generate_random())
From 0b2f48462846f4c21d79b902784018ba7e63cefd Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:17:56 +0100
Subject: [PATCH 065/175] Update test.py
---
exercises/11-Create-A-New-Function/test.py | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/exercises/11-Create-A-New-Function/test.py b/exercises/11-Create-A-New-Function/test.py
index 850f0ab9..867b7a93 100644
--- a/exercises/11-Create-A-New-Function/test.py
+++ b/exercises/11-Create-A-New-Function/test.py
@@ -31,9 +31,10 @@ def test_for_type_random():
regex2 = re.compile(r"random.randrange\s*\(")
assert bool(regex.search(content)) == True or bool(regex2.search(content)) == True
-@pytest.mark.it('You should print() the result of the function')
-def test_for_type_random():
+@pytest.mark.it('You should print() the output of the function')
+def test_for_function_print():
+
with open(path, 'r') as content_file:
content = content_file.read()
-
- assert "print" in content
+ regex = re.compile(r"print\s*\(\s*generate_random\s*\(\s*\)\s*\)")
+ assert bool(regex.search(content)) == True
From dbca2efefbd60ab869980f7208fe565ac38a02a6 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:21:46 +0100
Subject: [PATCH 066/175] Update README.md
---
exercises/12-Rand-From-One-to-Twelve/README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/12-Rand-From-One-to-Twelve/README.md b/exercises/12-Rand-From-One-to-Twelve/README.md
index cd12a399..ec81b66c 100644
--- a/exercises/12-Rand-From-One-to-Twelve/README.md
+++ b/exercises/12-Rand-From-One-to-Twelve/README.md
@@ -8,10 +8,10 @@ tutorial: "https://www.youtube.com/watch?v=EdyMlVlNUT0"
1. Change whatever you need to change to make the algorithm print random integers between 1 and 12.
-2. This time use `randrange()`function.
+2. This time use the `randrange()` function.
## 💡 Hints:
+ It should print between 1 and 12, not between 0 and 12.
-+ This exercise is super simple, don't complicate yourself!😃
\ No newline at end of file
++ This exercise is super simple, don't complicate yourself! 😃
From 1719e2553a020395bfb89249090778464256ea8f Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:22:15 +0100
Subject: [PATCH 067/175] Update README.es.md
---
exercises/12-Rand-From-One-to-Twelve/README.es.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/12-Rand-From-One-to-Twelve/README.es.md b/exercises/12-Rand-From-One-to-Twelve/README.es.md
index bcfae4d9..b1f9d2b8 100644
--- a/exercises/12-Rand-From-One-to-Twelve/README.es.md
+++ b/exercises/12-Rand-From-One-to-Twelve/README.es.md
@@ -10,4 +10,4 @@
+ Debería imprimir números entre 1 y 12, no entre 0 y 12.
-+ Este ejercicio es super simple, no te compliques!😃
\ No newline at end of file
++ Este ejercicio es super simple, no te compliques! 😃
From 9c5cae8e8b445b838d604f1cc0d3a20b94f8909a Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:22:45 +0100
Subject: [PATCH 068/175] Update app.py
---
exercises/12-Rand-From-One-to-Twelve/app.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/12-Rand-From-One-to-Twelve/app.py b/exercises/12-Rand-From-One-to-Twelve/app.py
index 7b5483ce..d7304410 100644
--- a/exercises/12-Rand-From-One-to-Twelve/app.py
+++ b/exercises/12-Rand-From-One-to-Twelve/app.py
@@ -1,8 +1,8 @@
import random
def get_randomInt():
- # ✅↓ Write your code here. ↓✅
+ # ✅↓ Write your code here ↓✅
return None
# ❌ ↓ DON'T CHANGE THE CODE BELOW ↓ ❌
-print(get_randomInt())
\ No newline at end of file
+print(get_randomInt())
From 4bbb22b4b5b705ff127662a8011b4fe2480bb06d Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:23:01 +0100
Subject: [PATCH 069/175] Update solution.hide.py
---
exercises/12-Rand-From-One-to-Twelve/solution.hide.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/12-Rand-From-One-to-Twelve/solution.hide.py b/exercises/12-Rand-From-One-to-Twelve/solution.hide.py
index 00d751b7..f1329ca0 100644
--- a/exercises/12-Rand-From-One-to-Twelve/solution.hide.py
+++ b/exercises/12-Rand-From-One-to-Twelve/solution.hide.py
@@ -1,9 +1,9 @@
import random
def get_randomInt():
- # ✅↓ Write your code here. ↓✅
+ # ✅↓ Write your code here ↓✅
random_number = random.randrange(1,13)
return random_number
# ❌ ↓ DON'T CHANGE THE CODE BELOW ↓ ❌
-print(get_randomInt())
\ No newline at end of file
+print(get_randomInt())
From a9778d746f0e7164bd51893e31f958d3aaffb5e8 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:23:39 +0100
Subject: [PATCH 070/175] Update test.py
---
exercises/12-Rand-From-One-to-Twelve/test.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/12-Rand-From-One-to-Twelve/test.py b/exercises/12-Rand-From-One-to-Twelve/test.py
index fe26718e..ed078ffe 100644
--- a/exercises/12-Rand-From-One-to-Twelve/test.py
+++ b/exercises/12-Rand-From-One-to-Twelve/test.py
@@ -16,7 +16,7 @@ def test_function_existence(app):
except AttributeError:
raise AttributeError("The function get_randomInt should exist")
-@pytest.mark.it("Check that you are setting the correct values for the randrange function.")
+@pytest.mark.it("Check that you are setting the correct values for the randrange function")
def test_conditional():
with open(path, 'r') as content_file:
content = content_file.read()
@@ -29,7 +29,7 @@ def test_print_output(capsys, app):
result = app.get_randomInt()
assert result >= 1 or result <= 12
-@pytest.mark.it('You must call the function inside the print() function.')
+@pytest.mark.it('You must call the function inside the print() function')
def test_function_called_for():
with open(path, 'r') as content_file:
content = content_file.read()
From b88cf303665f0513902a59b4d6e0e7d876a3db92 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:23:53 +0100
Subject: [PATCH 071/175] Update test.py
---
exercises/11-Create-A-New-Function/test.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/11-Create-A-New-Function/test.py b/exercises/11-Create-A-New-Function/test.py
index 867b7a93..2872531b 100644
--- a/exercises/11-Create-A-New-Function/test.py
+++ b/exercises/11-Create-A-New-Function/test.py
@@ -32,7 +32,7 @@ def test_for_type_random():
assert bool(regex.search(content)) == True or bool(regex2.search(content)) == True
@pytest.mark.it('You should print() the output of the function')
-def test_for_function_print():
+def test_function_called_for():
with open(path, 'r') as content_file:
content = content_file.read()
From 018eba7bcac4c1b48ba2818bbf2a55a43de90229 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:24:47 +0100
Subject: [PATCH 072/175] Update README.es.md
---
exercises/12-Rand-From-One-to-Twelve/README.es.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/12-Rand-From-One-to-Twelve/README.es.md b/exercises/12-Rand-From-One-to-Twelve/README.es.md
index b1f9d2b8..995d8094 100644
--- a/exercises/12-Rand-From-One-to-Twelve/README.es.md
+++ b/exercises/12-Rand-From-One-to-Twelve/README.es.md
@@ -10,4 +10,4 @@
+ Debería imprimir números entre 1 y 12, no entre 0 y 12.
-+ Este ejercicio es super simple, no te compliques! 😃
++ Este ejercicio es super simple, ¡no te compliques! 😃
From 4a60088d7865d7af41610c8d3145e0ceb2774a58 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 15:18:08 +0100
Subject: [PATCH 073/175] Update README.md
---
exercises/13-Create-A-For-Loop/README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/exercises/13-Create-A-For-Loop/README.md b/exercises/13-Create-A-For-Loop/README.md
index 22af4705..6a1acb10 100644
--- a/exercises/13-Create-A-For-Loop/README.md
+++ b/exercises/13-Create-A-For-Loop/README.md
@@ -4,7 +4,7 @@ tutorial: "https://www.youtube.com/watch?v=-HQtwsBnbMQ"
# `13` Create A For Loop
-Loops are very useful... You don't have to rewrite the same lines many times.
+Loops are very useful. You don't have to rewrite the same lines many times.
The `for` loop lets you run the same code for different values.
@@ -12,7 +12,7 @@ The `for` loop lets you run the same code for different values.
1. Complete the function called `standards_maker`.
-2. The function has to print 300 times the phrase "I will write questions if I am stuck".
+2. The function has to print 300 times the phrase "I will ask questions if I am stuck".
3. Call the function `standards_maker()`.
@@ -22,4 +22,4 @@ The `for` loop lets you run the same code for different values.
## 🔎 Important:
-+ Read more on loops: https://www.w3schools.com/python/python_for_loops.asp
\ No newline at end of file
++ Read more on loops: https://www.w3schools.com/python/python_for_loops.asp
From cbec79108206d2434123d698042e17505b1a26b9 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 15:23:15 +0100
Subject: [PATCH 074/175] Update README.es.md
---
exercises/13-Create-A-For-Loop/README.es.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/exercises/13-Create-A-For-Loop/README.es.md b/exercises/13-Create-A-For-Loop/README.es.md
index 791965dc..b4e8b89f 100644
--- a/exercises/13-Create-A-For-Loop/README.es.md
+++ b/exercises/13-Create-A-For-Loop/README.es.md
@@ -1,6 +1,6 @@
# `13` Create A For Loop
-Los bucles o loops son muy útiles... No tienes que reescribir las mismas líneas muchas veces.
+Los bucles o loops son muy útiles. No tienes que reescribir las mismas líneas muchas veces.
El bucle o loop `for` te permite ejecutar el mismo código varias veces para diferentes valores.
@@ -8,7 +8,7 @@ El bucle o loop `for` te permite ejecutar el mismo código varias veces para dif
1. Completa la función llamada `standards_maker()`.
-2. La función tiene que imprimir 300 veces la frase "Escribiré preguntas si estoy atascado".
+2. La función tiene que imprimir 300 veces la frase "Haré preguntas si estoy atascado".
3. Llama a la función `standards_maker()`.
@@ -18,4 +18,4 @@ El bucle o loop `for` te permite ejecutar el mismo código varias veces para dif
## 🔎 Importante:
-+ Puedes leer más al respecto aquí: https://ellibrodepython.com/for-python
\ No newline at end of file
++ Puedes leer más al respecto aquí: https://ellibrodepython.com/for-python
From 3f2d1d0c5a8feb158f47822b10b525b0279cbfa1 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 15:23:32 +0100
Subject: [PATCH 075/175] Update solution.hide.py
---
exercises/13-Create-A-For-Loop/solution.hide.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/exercises/13-Create-A-For-Loop/solution.hide.py b/exercises/13-Create-A-For-Loop/solution.hide.py
index a616c235..2dd3965a 100644
--- a/exercises/13-Create-A-For-Loop/solution.hide.py
+++ b/exercises/13-Create-A-For-Loop/solution.hide.py
@@ -1,7 +1,7 @@
def standards_maker():
- # ✅↓ Write your code here. ↓✅
+ # ✅↓ Write your code here ↓✅
for i in range(0, 300):
- print("I will write questions if I am stuck")
+ print("I will ask questions if I am stuck")
# ✅↓ remember to call the function outside (here) ↓✅
-standards_maker()
\ No newline at end of file
+standards_maker()
From e8b97f942d6d464bbe27a89bf609ded3d32145b8 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 15:23:41 +0100
Subject: [PATCH 076/175] Update app.py
---
exercises/13-Create-A-For-Loop/app.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/13-Create-A-For-Loop/app.py b/exercises/13-Create-A-For-Loop/app.py
index cc52a510..19631c70 100644
--- a/exercises/13-Create-A-For-Loop/app.py
+++ b/exercises/13-Create-A-For-Loop/app.py
@@ -1,5 +1,5 @@
def standards_maker():
- # ✅↓ Write your code here. ↓✅
+ # ✅↓ Write your code here ↓✅
-# ✅↓ remember to call the function outside (here) ↓✅
\ No newline at end of file
+# ✅↓ remember to call the function outside (here) ↓✅
From edd014514962dbd8bdad208c75fc9e1ff56897f9 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 15:25:07 +0100
Subject: [PATCH 077/175] Update test.py
---
exercises/13-Create-A-For-Loop/test.py | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/exercises/13-Create-A-For-Loop/test.py b/exercises/13-Create-A-For-Loop/test.py
index bac75fb6..7c108916 100644
--- a/exercises/13-Create-A-For-Loop/test.py
+++ b/exercises/13-Create-A-For-Loop/test.py
@@ -9,7 +9,7 @@
import re
path = os.path.dirname(os.path.abspath(__file__))+'/app.py'
-@pytest.mark.it("You should declare a function named standards_maker")
+@pytest.mark.it("You should define a function named standards_maker")
def test_variable_exists():
try:
from app import standards_maker
@@ -23,11 +23,11 @@ def test_for_loop():
regex = re.compile(r"for")
assert bool(regex.search(content)) == True
-@pytest.mark.it("You should include in the function standards_maker a for loop which prints the string in the instructions 300 times")
+@pytest.mark.it("In the function standards_maker include a for loop which prints the string in the instructions 300 times")
def test_for_file_output(capsys):
captured = buffer.getvalue()
- expected = ["I will write questions if I am stuck\n" for x in range(300)]
- expected_2 = ["Escribiré preguntas si estoy atascado\n" for x in range(300)]
+ expected = ["I will ask questions if I am stuck\n" for x in range(300)]
+ expected_2 = ["Haré preguntas si estoy atascado\n" for x in range(300)]
hasCorrectAnswer = ((captured == "".join(expected)) or (captured == "".join(expected_2)))
@@ -40,7 +40,7 @@ def test_for_print():
regex = re.compile(r"print\s*\(.+\)")
assert bool(regex.search(content)) == True
-@pytest.mark.it("You should call the function standards_maker ")
+@pytest.mark.it("You should call the function standards_maker")
def test_callTheFunction():
with open(path, 'r') as content_file:
content = content_file.read()
From e6a5c2f3b2d2d20e982b987b39d8928bb39ffbca Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 15:40:23 +0100
Subject: [PATCH 078/175] Update README.md
---
exercises/14-Your-First-Loop/README.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/exercises/14-Your-First-Loop/README.md b/exercises/14-Your-First-Loop/README.md
index 990b2bd4..8d3da78c 100644
--- a/exercises/14-Your-First-Loop/README.md
+++ b/exercises/14-Your-First-Loop/README.md
@@ -4,17 +4,17 @@ tutorial: "https://www.youtube.com/watch?v=30sizcnVdGg"
# `14` Your First Loop
-## 📝 Instructions:
+## 📝 Instructions:
-1. Run this code, you'll see a count from 0 to 9 (White characters).
+1. Run this code, and you'll see a count from 0 to 9.
2. Fix it so that it counts up to 11.
-## 🔎 Important:
+## 🔎 Important:
+ There's a series of exercises dedicated to Lists and Loops, we encourage you to go and finish those before continuing: [https://github.com/4GeeksAcademy/python-lists-loops-programming-exercises](https://github.com/4GeeksAcademy/python-lists-loops-programming-exercises).
Then, come back!😊
-## 💡Hint:
-+ You can find additional information on loops here: https://www.w3schools.com/python/python_for_loops.asp
\ No newline at end of file
+## 💡 Hint:
++ You can find additional information on loops here: https://www.w3schools.com/python/python_for_loops.asp
From d10de54da518218e14f2acc755962d56cfdab5c5 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 15:41:43 +0100
Subject: [PATCH 079/175] Update README.es.md
---
exercises/14-Your-First-Loop/README.es.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/exercises/14-Your-First-Loop/README.es.md b/exercises/14-Your-First-Loop/README.es.md
index cfd69ae6..7e28efe6 100644
--- a/exercises/14-Your-First-Loop/README.es.md
+++ b/exercises/14-Your-First-Loop/README.es.md
@@ -1,16 +1,16 @@
# `14` Your First Loop
-## 📝 Instrucciones:
+## 📝 Instrucciones:
-1. Ejecuta este código, verás una cuenta de 0 a 9 (caracteres blancos).
+1. Ejecuta este código, verás una cuenta de 0 a 9.
2. Corrígelo para que cuente hasta 11.
## 🔎 Importante:
-+ Hay una serie de ejercicios dedicados a listas y bucles o loops, te invitamos a realizarlos antes de continuar: [https://github.com/4GeeksAcademy/python-lists-loops-programming-exercises](https://github.com/4GeeksAcademy/python-lists-loops-programming-exercises).
++ Hay una serie de ejercicios dedicados a listas y bucles, te invitamos a realizarlos antes de continuar: [https://github.com/4GeeksAcademy/python-lists-loops-programming-exercises](https://github.com/4GeeksAcademy/python-lists-loops-programming-exercises).
-!Luego, regresa!😊
+¡Luego, regresa! 😊
## 💡 Pista:
-+ Puedes encontrar información adicional aquí: https://tutorial.recursospython.com/bucles/
\ No newline at end of file
++ Puedes encontrar información adicional aquí: https://tutorial.recursospython.com/bucles/
From 116f2dd07df31fb665caa9d828ee5c3270202337 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 15:41:53 +0100
Subject: [PATCH 080/175] Update README.md
---
exercises/14-Your-First-Loop/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/14-Your-First-Loop/README.md b/exercises/14-Your-First-Loop/README.md
index 8d3da78c..af03d283 100644
--- a/exercises/14-Your-First-Loop/README.md
+++ b/exercises/14-Your-First-Loop/README.md
@@ -14,7 +14,7 @@ tutorial: "https://www.youtube.com/watch?v=30sizcnVdGg"
+ There's a series of exercises dedicated to Lists and Loops, we encourage you to go and finish those before continuing: [https://github.com/4GeeksAcademy/python-lists-loops-programming-exercises](https://github.com/4GeeksAcademy/python-lists-loops-programming-exercises).
-Then, come back!😊
+Then, come back! 😊
## 💡 Hint:
+ You can find additional information on loops here: https://www.w3schools.com/python/python_for_loops.asp
From e933add494a846b4f3b599cdb1143aed8f033733 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 15:43:23 +0100
Subject: [PATCH 081/175] Update test.py
---
exercises/14-Your-First-Loop/test.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/14-Your-First-Loop/test.py b/exercises/14-Your-First-Loop/test.py
index 51b6b831..c936b923 100644
--- a/exercises/14-Your-First-Loop/test.py
+++ b/exercises/14-Your-First-Loop/test.py
@@ -22,9 +22,9 @@ def test_for_function_output(capsys):
captured = capsys.readouterr()
assert "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n" in captured.out
-@pytest.mark.it('Use for loop')
+@pytest.mark.it('Use a for loop')
def test_for_loop():
with open(path, 'r') as content_file:
content = content_file.read()
regex = re.compile(r"for\s*")
- assert bool(regex.search(content)) == True
\ No newline at end of file
+ assert bool(regex.search(content)) == True
From c1de8826c121d19df12920c797ed211e9e9bf240 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 16:06:15 +0100
Subject: [PATCH 082/175] Update README.md
---
exercises/15-Looping-With-FizzBuzz/README.md | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/exercises/15-Looping-With-FizzBuzz/README.md b/exercises/15-Looping-With-FizzBuzz/README.md
index 97b52c0f..a1e308dc 100644
--- a/exercises/15-Looping-With-FizzBuzz/README.md
+++ b/exercises/15-Looping-With-FizzBuzz/README.md
@@ -4,13 +4,19 @@ tutorial: "https://www.youtube.com/watch?v=fw3ukgmlSwQ"
# `15` Looping With FizzBuzz
-This is a typical beginner test that is required to complete interviews in Google, Facebook and all the other big tech companies.
+This is a typical beginner test that is required to complete interviews at Google, Facebook and all the other big tech companies.
## 📝 Instructions:
1. Write the code needed to print in the console all the numbers from 1 to 100.
+
+2. For multiples of 3, instead of the number, print "Fizz".
+
+3. For multiples of 5, print "Buzz".
+
+4. For numbers that are multiples of both 3 and 5, print "FizzBuzz".
-## Expected result:
+## 💻 Expected result:
```py
1
@@ -41,12 +47,10 @@ Buzz
There's a series of exercises dedicated to Lists and Loops, we encourage you to go and finish them before continuing: [https://github.com/4GeeksAcademy/python-lists-loops-programming-exercises](https://github.com/4GeeksAcademy/python-lists-loops-programming-exercises)
-Then, come back!😊
+Then, come back! 😊
-## 💡 Hints:
+## 💡 Hint:
-+ For multiples of 3, instead of the number, print "Fizz".
-
-+ For multiples of 5, print "Buzz".
++ You have to use multiple `if` statements.
-+ For numbers which are multiples of both 3 and 5, print "FizzBuzz".
\ No newline at end of file
++ Think about the correct order of the different `if` statements to make the code do what you want.
From 2cba5ed8b96d14fff7d3c2d97367a3f1cd800e93 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 16:22:58 +0100
Subject: [PATCH 083/175] Update README.es.md
---
.../15-Looping-With-FizzBuzz/README.es.md | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/exercises/15-Looping-With-FizzBuzz/README.es.md b/exercises/15-Looping-With-FizzBuzz/README.es.md
index 5e0706c6..fbaa200d 100644
--- a/exercises/15-Looping-With-FizzBuzz/README.es.md
+++ b/exercises/15-Looping-With-FizzBuzz/README.es.md
@@ -6,7 +6,13 @@ Esta es una típica prueba de principiante que es exigida para las entrevistas e
1. Escribe el código necesario para imprimir en la consola todos los números del 1 al 100.
-## Resultado esperado:
+2. Para múltiplos de 3, en lugar de imprimir el número, imprime "Fizz".
+
+3. Para múltiplos de 5, imprime "Buzz".
+
+4. Para números que son múltiplos de 3 y de 5, imprime "FizzBuzz".
+
+## 💻 Resultado esperado:
```py
1
@@ -34,16 +40,14 @@ Buzz
## 🔎 Importante:
-+ Hay una serie de ejercicios dedicados a listas y ciclos, te invitamos a realizarlos antes de continuar: [https://github.com/4GeeksAcademy/python-lists-loops-programming-exercises](https://github.com/4GeeksAcademy/python-lists-loops-programming-exercises).
+Hay una serie de ejercicios dedicados a listas y bucles, te invitamos a realizarlos antes de continuar: [https://github.com/4GeeksAcademy/python-lists-loops-programming-exercises](https://github.com/4GeeksAcademy/python-lists-loops-programming-exercises).
-¡Luego, regresa!😊
+¡Luego, regresa! 😊
## 💡 Pistas:
-+ Para múltiplos de 3, en lugar de imprimir el número, imprime "Fizz".
-
-+ Para múltiplos de 5, imprime "Buzz".
++ Debes usar instrucciones `if`.
-+ Para números que son múltiplos de 3 y de 5, imprime "FizzBuzz".
++ Piensa en el orden correcto de esos `if` para hacer que tu código haga lo que quieres.
From 6c77594eae1b681b73d598cb7d5ac3677a5998ee Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 16:24:08 +0100
Subject: [PATCH 084/175] Update app.py
---
exercises/15-Looping-With-FizzBuzz/app.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/15-Looping-With-FizzBuzz/app.py b/exercises/15-Looping-With-FizzBuzz/app.py
index 31d72741..fff86955 100644
--- a/exercises/15-Looping-With-FizzBuzz/app.py
+++ b/exercises/15-Looping-With-FizzBuzz/app.py
@@ -1,5 +1,5 @@
def fizz_buzz():
- # ✅↓ Write your code here. ↓✅
+ # ✅↓ Write your code here ↓✅
# ❌↓ DON'T CHANGE THE CODE BELOW ↓❌
-fizz_buzz()
\ No newline at end of file
+fizz_buzz()
From 6b2f2e6db0cc84ff19e692c804aad6bda1fea3a1 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 16:24:30 +0100
Subject: [PATCH 085/175] Update solution.hide.py
---
exercises/15-Looping-With-FizzBuzz/solution.hide.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/15-Looping-With-FizzBuzz/solution.hide.py b/exercises/15-Looping-With-FizzBuzz/solution.hide.py
index 2ae1311c..b01fb63d 100644
--- a/exercises/15-Looping-With-FizzBuzz/solution.hide.py
+++ b/exercises/15-Looping-With-FizzBuzz/solution.hide.py
@@ -1,5 +1,5 @@
def fizz_buzz():
- # ✅↓ Write your code here. ↓✅
+ # ✅↓ Write your code here ↓✅
for i in range(1, 101):
if i % 3 == 0 and i % 5 == 0:
print("FizzBuzz")
@@ -11,4 +11,4 @@ def fizz_buzz():
print(i)
# ❌↓ DON'T CHANGE THE CODE BELOW ↓❌
-fizz_buzz()
\ No newline at end of file
+fizz_buzz()
From 60c281bb5b983187908d5d1574635f8da6026915 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 16:25:06 +0100
Subject: [PATCH 086/175] Update test.py
---
exercises/15-Looping-With-FizzBuzz/test.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/15-Looping-With-FizzBuzz/test.py b/exercises/15-Looping-With-FizzBuzz/test.py
index 5d8187c2..b8ecd541 100644
--- a/exercises/15-Looping-With-FizzBuzz/test.py
+++ b/exercises/15-Looping-With-FizzBuzz/test.py
@@ -16,14 +16,14 @@ def test_function_existence():
except AttributeError:
raise AttributeError('The function fizz_buzz should exist')
-@pytest.mark.it('Use for loop')
+@pytest.mark.it('Use a for loop')
def test_for_loop():
with open(path, 'r') as content_file:
content = content_file.read()
regex = re.compile(r"for\s*")
assert bool(regex.search(content)) == True
-@pytest.mark.it('2. Your function needs to print the correct output')
+@pytest.mark.it('Your function needs to print the correct output')
def test_for_function_output(capsys):
fizz_buzz()
captured = capsys.readouterr()
From ff8952729553d3de6bac8f515f5c0ebfad0d3679 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 16:51:12 +0100
Subject: [PATCH 087/175] Update README.md
---
exercises/16-Random-Colors-Loop/README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/exercises/16-Random-Colors-Loop/README.md b/exercises/16-Random-Colors-Loop/README.md
index 2c906d3b..d4c7b145 100644
--- a/exercises/16-Random-Colors-Loop/README.md
+++ b/exercises/16-Random-Colors-Loop/README.md
@@ -6,13 +6,13 @@ tutorial: "https://www.youtube.com/watch?v=8zH3JT3AuAw"
We have created a function that returns a color based on a number between 0 and 3 (for any different number, it will return the color `black`).
-Let's say that we are teachers in a 10 student classroom and we want to randomly assign ONE color, between `red`, `yellow`, `blue` and `green`, to EACH student.
+Let's say that we are teachers in a 10 student classroom, and we want to randomly assign ONE color, between `red`, `yellow`, `blue` and `green`, to EACH student.
(only 1 color per student)
## 📝 Instructions:
-1. Change the function `get_allStudentColors` so it returns a list of 10 colors, were each item in the list represents the color assigned to each student.
+1. Change the function `get_allStudentColors` so it returns a list of 10 colors, where each item in the list represents the color assigned to each student.
## 💡 Hints:
@@ -22,4 +22,4 @@ Let's say that we are teachers in a 10 student classroom and we want to randomly
- Use the `get_color` function, in this exercise to find out what color corresponds to the number obtained.
-- Call (execute) the function `get_allStudentColors` and print its result in the console.
\ No newline at end of file
+- Call (execute) the function `get_allStudentColors` and print its result in the console.
From c8261e23f27ce82896f7f2a084b0a44adea91d1f Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 16:51:37 +0100
Subject: [PATCH 088/175] Update README.md
---
exercises/16-Random-Colors-Loop/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/16-Random-Colors-Loop/README.md b/exercises/16-Random-Colors-Loop/README.md
index d4c7b145..e72e5e9f 100644
--- a/exercises/16-Random-Colors-Loop/README.md
+++ b/exercises/16-Random-Colors-Loop/README.md
@@ -20,6 +20,6 @@ Let's say that we are teachers in a 10 student classroom, and we want to randoml
- In each iteration, generate a random number between 0 and 3 using the `randint()` function that we have seen in previous exercises.
-- Use the `get_color` function, in this exercise to find out what color corresponds to the number obtained.
+- Use the `get_color` function in this exercise, to find out what color corresponds to the number obtained.
- Call (execute) the function `get_allStudentColors` and print its result in the console.
From 0ecb29171cb4193fc7cbcc2f116f10c12e7828b7 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 16:56:36 +0100
Subject: [PATCH 089/175] Update README.es.md
---
exercises/16-Random-Colors-Loop/README.es.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/exercises/16-Random-Colors-Loop/README.es.md b/exercises/16-Random-Colors-Loop/README.es.md
index bbb78609..493f0c12 100644
--- a/exercises/16-Random-Colors-Loop/README.es.md
+++ b/exercises/16-Random-Colors-Loop/README.es.md
@@ -1,8 +1,8 @@
# `16` Random Colors (Loop)
-Hemos creado una función que devuelve un color basado en un número entre 0 y 3 (cualquier número diferente, debe retornar el color `black` (negro)).
+Hemos creado una función que devuelve un color basado en un número entre 0 y 3 (cualquier otro número retornará el color `black`).
-Digamos que somos profesores en un aula con 10 estudiantes y queremos asignar a **cada estudiante** un color aleatorio entre `red` (rojo), `yellow` (amarillo), `blue` (azul) y `green` (verde).
+Supongamos que somos profesores en un aula con 10 estudiantes y queremos asignar a **cada estudiante** un color aleatorio entre `red`, `yellow`, `blue` y `green`.
(solo 1 color por estudiante)
@@ -16,6 +16,6 @@ Digamos que somos profesores en un aula con 10 estudiantes y queremos asignar a
+ En cada iteración, genera un número aleatorio entre 0 y 3 usando la función `randint()` que hemos visto en ejercicios anteriores.
-+ Usa la función `get_color`, en este ejercicio para saber qué color le corresponde al número obtenido.
++ Usa la función `get_color` en este ejercicio, para saber qué color le corresponde al número obtenido.
-+ Llama (ejecuta) la funcion `get_allStudentColors` e imprime su resultado en la consola.
\ No newline at end of file
++ Llama (ejecuta) la función `get_allStudentColors` e imprime su resultado en la consola.
From 55cb7512c264c3a4523902c90db9ebe9b7e6d058 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 16:59:28 +0100
Subject: [PATCH 090/175] Update app.py
---
exercises/16-Random-Colors-Loop/app.py | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/exercises/16-Random-Colors-Loop/app.py b/exercises/16-Random-Colors-Loop/app.py
index 5753c14a..0e29ead7 100644
--- a/exercises/16-Random-Colors-Loop/app.py
+++ b/exercises/16-Random-Colors-Loop/app.py
@@ -1,16 +1,17 @@
import random
def get_color(color_number=4):
- # making sure is a number and not a string
+ # Making sure is a number and not a string
color_number = int(color_number)
- switcher={
+ switcher = {
0:'red',
1:'yellow',
2:'blue',
3:'green',
4:'black'
}
+
return switcher.get(color_number,"Invalid Color Number")
# ❌ ⬆ DON'T CHANGE THE CODE ABOVE ⬆ ❌
@@ -19,6 +20,6 @@ def get_allStudentColors():
example_color = get_color(1)
students_array = []
# ✅ ↓ your loop here ↓ ✅
+
-
-print(get_allStudentColors())
\ No newline at end of file
+print(get_allStudentColors())
From 0734f3838ed8cb84609ffa9a066b136b174862c4 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:01:26 +0100
Subject: [PATCH 091/175] Update solution.hide.py
---
exercises/16-Random-Colors-Loop/solution.hide.py | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/exercises/16-Random-Colors-Loop/solution.hide.py b/exercises/16-Random-Colors-Loop/solution.hide.py
index 17b87502..caa17fb9 100644
--- a/exercises/16-Random-Colors-Loop/solution.hide.py
+++ b/exercises/16-Random-Colors-Loop/solution.hide.py
@@ -1,16 +1,17 @@
import random
def get_color(color_number=4):
- # making sure is a number and not a string
+ # Making sure is a number and not a string
color_number = int(color_number)
- switcher={
+ switcher = {
0:'red',
1:'yellow',
2:'blue',
3:'green',
4:'black'
}
+
return switcher.get(color_number,"Invalid Color Number")
# ❌ ⬆ DON'T CHANGE THE CODE ABOVE ⬆ ❌
@@ -25,4 +26,4 @@ def get_allStudentColors():
return students_array
-print(get_allStudentColors())
\ No newline at end of file
+print(get_allStudentColors())
From e739b5f098e44b7bcb999ae51831c866fb8cfc8b Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:03:23 +0100
Subject: [PATCH 092/175] Update test.py
---
exercises/16-Random-Colors-Loop/test.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/16-Random-Colors-Loop/test.py b/exercises/16-Random-Colors-Loop/test.py
index a25b67aa..e5585d70 100644
--- a/exercises/16-Random-Colors-Loop/test.py
+++ b/exercises/16-Random-Colors-Loop/test.py
@@ -31,11 +31,11 @@ def test_black_in_array(capsys, app):
result = app.get_allStudentColors()
assert result.count("black") == 0
-@pytest.mark.it('You should use for to iterate 10 times')
+@pytest.mark.it('You should use a for loop to iterate 10 times')
def use_for_loop(capsys):
path = os.path.dirname(os.path.abspath(__file__))+'/app.py'
with open(path, 'r') as content_file:
content = content_file.read()
pattern = r"for\s*"
regex = re.compile(pattern)
- assert bool(regex.search(content)) == True
\ No newline at end of file
+ assert bool(regex.search(content)) == True
From ab35dd0ecf7ed8028b97d8f736928c2061893ddd Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:06:54 +0100
Subject: [PATCH 093/175] Update README.md
---
exercises/17-Russian-Roulette/README.md | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/exercises/17-Russian-Roulette/README.md b/exercises/17-Russian-Roulette/README.md
index 43228267..f3a4aaab 100644
--- a/exercises/17-Russian-Roulette/README.md
+++ b/exercises/17-Russian-Roulette/README.md
@@ -2,10 +2,9 @@
Have you ever played Russian Roulette? It's super fun! If you make it (muahahahaha).
-The revolver gun has only 6 slots for bullets... insert one bullet in one of the slots,
-spin the revolver chamber to make the game random, nobody knows the bullet position.
+The revolver gun has only 6 slots for bullets... insert one bullet in one of the slots, spin the revolver chamber to make the game random, nobody knows the bullet position.
-FIRE!!!....... are you dead?
+FIRE!!!...... are you dead?
## 📝 Instructions:
@@ -13,10 +12,10 @@ FIRE!!!....... are you dead?
2. Compare the bullet position against the chamber position.
-3. If the bullet position is equal to the chamber position then the function should return `You are dead!`, else it should return `Keep playing!`
+3. If the bullet position is equal to the chamber position, then the function should return `You are dead!`, else it should return `Keep playing!`
-## 💡 Hint:
+## 💡 Hints:
+ You can get the chamber position by calling the `spin_chamber` function
-+ If the bullet is at the same slot as the revolver chamber, then it will be fired (`You are dead!`).
\ No newline at end of file
++ If the bullet is at the same slot as the revolver chamber, then it will be fired (`You are dead!`).
From 7ee1b5ee398010059c387daa080acc462a078b35 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:14:10 +0100
Subject: [PATCH 094/175] Update README.es.md
---
exercises/17-Russian-Roulette/README.es.md | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/exercises/17-Russian-Roulette/README.es.md b/exercises/17-Russian-Roulette/README.es.md
index f6b4e500..25da2194 100644
--- a/exercises/17-Russian-Roulette/README.es.md
+++ b/exercises/17-Russian-Roulette/README.es.md
@@ -2,18 +2,20 @@
¿Has jugado a la ruleta rusa? ¡Es muy divertido! Si no pierdes... (¡¡¡muuuajajajaja!!!).
-Un revolver tiene seis orificios para balas... inserta una bala en uno de los orificios,
-gira la cámara del revolver para hacer aleatorio el juego. Nadie sabrá dónde está la bala.
+Un revolver tiene seis recámaras para balas... inserta una bala en una de las recámaras, gira el tambor del revolver para hacer aleatorio el juego. Nadie sabrá dónde está la bala.
-¡¡¡FUEGO!!!....... ¿has muerto?
+¡¡¡FUEGO!!!...... ¿Has muerto?
## 📝 Instrucciones:
+
1. El juego casi funciona, por favor completa la función `fire_gun` para que el juego funcione.
2. Compara la posición de la bala con la posición de la recámara.
3. Si la posición de la bala es igual a la posición de la recámara, entonces la función debe retornar `You are dead!`, de lo contrario, debe retornar `Keep playing!`
-## 💡 Pista:
-- Puedes obtener la posición de la recámara llamando a la función `spin_chamber`.
-- Si la bala está en el mismo compartimento que la recámara del revólver, entonces será disparada (`You are dead!`).
\ No newline at end of file
+## 💡 Pistas:
+
+- Puedes obtener la posición de la recámara llamando a la función `spin_chamber`.
+
+- Si la bala está en el mismo compartimento que la recámara del revólver, entonces será disparada (`You are dead!`).
From 744db6c7f36c5bf2f7033409df6bd4dbea605ec6 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:18:53 +0100
Subject: [PATCH 095/175] Update solution.hide.py
---
exercises/17-Russian-Roulette/solution.hide.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/17-Russian-Roulette/solution.hide.py b/exercises/17-Russian-Roulette/solution.hide.py
index afdfddeb..bc8b74b8 100644
--- a/exercises/17-Russian-Roulette/solution.hide.py
+++ b/exercises/17-Russian-Roulette/solution.hide.py
@@ -8,10 +8,10 @@ def spin_chamber():
# ❌ ⬆ DON'T CHANGE THE CODE ABOVE ⬆ ❌
def fire_gun():
- # ✅ ↓ your loop here ↓ ✅
+ # ✅ ↓ your code here ↓ ✅
if spin_chamber() == bullet_position:
return "You're dead!"
else:
return "Keep playing!"
-print(fire_gun())
\ No newline at end of file
+print(fire_gun())
From 66e30d1dddc541efd6fc5bc326d41a7930f279de Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:19:00 +0100
Subject: [PATCH 096/175] Update app.py
---
exercises/17-Russian-Roulette/app.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/17-Russian-Roulette/app.py b/exercises/17-Russian-Roulette/app.py
index d0503ccc..e8704639 100644
--- a/exercises/17-Russian-Roulette/app.py
+++ b/exercises/17-Russian-Roulette/app.py
@@ -8,8 +8,8 @@ def spin_chamber():
# ❌ ⬆ DON'T CHANGE THE CODE ABOVE ⬆ ❌
def fire_gun():
- # ✅ ↓ your loop here ↓ ✅
+ # ✅ ↓ your code here ↓ ✅
return None
-print(fire_gun())
\ No newline at end of file
+print(fire_gun())
From 1e9dbcfd6e1b7c9bfe0c853919ed14b89bc79254 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:21:05 +0100
Subject: [PATCH 097/175] Update solution.hide.py
---
exercises/17-Russian-Roulette/solution.hide.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/17-Russian-Roulette/solution.hide.py b/exercises/17-Russian-Roulette/solution.hide.py
index bc8b74b8..15e0e350 100644
--- a/exercises/17-Russian-Roulette/solution.hide.py
+++ b/exercises/17-Russian-Roulette/solution.hide.py
@@ -8,9 +8,9 @@ def spin_chamber():
# ❌ ⬆ DON'T CHANGE THE CODE ABOVE ⬆ ❌
def fire_gun():
- # ✅ ↓ your code here ↓ ✅
+ # ✅ ↓ your loop here ↓ ✅
if spin_chamber() == bullet_position:
- return "You're dead!"
+ return "You are dead!"
else:
return "Keep playing!"
From 0ee7f4da6012824ab44e4a89b013f4569ffe8257 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:38:55 +0100
Subject: [PATCH 098/175] Update README.md
---
exercises/18-The-Beatles/README.md | 30 ++++++++++++++++++++++--------
1 file changed, 22 insertions(+), 8 deletions(-)
diff --git a/exercises/18-The-Beatles/README.md b/exercises/18-The-Beatles/README.md
index af3a8a78..3d5f6da6 100644
--- a/exercises/18-The-Beatles/README.md
+++ b/exercises/18-The-Beatles/README.md
@@ -8,22 +8,36 @@ Who does not like The Beatles?
A BBC study has proved that 90% of kids don't know the band... so sad. :(
-This is the chorus of one of the most famous Beatle songs:
+This is the chorus of one of the most famous Beatles songs:
-> Let it be, let it be, let it be, let it be,
-> Whisper words of wisdom,
+> Let it be, let it be, let it be, let it be
+>
+> Whisper words of wisdom
+>
> Let it be
## 📝 Instructions:
-1. Create a function called `sing()` that returns a string with the exact same lyrics you can hear from the 3:10 sec to the end of the song at 3:54 sec https://www.youtube.com/watch?v=QDYfEBY9NM4.
+1. Create a function called `sing()` that returns a string with the lyrics that you can hear from 3:21 sec to the end of the song at 3:50 sec https://www.youtube.com/watch?v=QDYfEBY9NM4.
-## Expected output:
+## 💻 Expected output:
-`let it be, let it be, let it be, let it be, whisper words of wisdom, let it be, let it be, let it be, let it be, let it be, there will be an answer, let it be`
+```text
+let it be,
+let it be,
+let it be,
+let it be,
+there will be an answer,
+let it be,
+let it be,
+let it be,
+let it be,
+let it be,
+whisper words of wisdom, let it be
+```
-## 💡 Hint:
+## 💡 Hints:
+ The words "let it be" repeat all the time, you should probably create a loop for that.
-+ If you need a refresher on loops and conditionals, check out this awesome resource: https://docs.python.org/3/tutorial/controlflow.html
\ No newline at end of file
++ If you need a refresher on loops and conditionals, check out this awesome resource: https://docs.python.org/3/tutorial/controlflow.html
From 0e4a2e6812e0e56845b60781152c88bf6f108dc6 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:39:52 +0100
Subject: [PATCH 099/175] Update README.md
---
exercises/18-The-Beatles/README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/18-The-Beatles/README.md b/exercises/18-The-Beatles/README.md
index 3d5f6da6..f5f9fb47 100644
--- a/exercises/18-The-Beatles/README.md
+++ b/exercises/18-The-Beatles/README.md
@@ -10,9 +10,9 @@ A BBC study has proved that 90% of kids don't know the band... so sad. :(
This is the chorus of one of the most famous Beatles songs:
-> Let it be, let it be, let it be, let it be
+> Let it be, let it be, let it be, let it be,
>
-> Whisper words of wisdom
+> Whisper words of wisdom,
>
> Let it be
From 3f6c929d733bb829c6b88518af2fa4a92a5d80c7 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:43:26 +0100
Subject: [PATCH 100/175] Update README.md
---
exercises/18-The-Beatles/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/18-The-Beatles/README.md b/exercises/18-The-Beatles/README.md
index f5f9fb47..d2ff6d1c 100644
--- a/exercises/18-The-Beatles/README.md
+++ b/exercises/18-The-Beatles/README.md
@@ -18,7 +18,7 @@ This is the chorus of one of the most famous Beatles songs:
## 📝 Instructions:
-1. Create a function called `sing()` that returns a string with the lyrics that you can hear from 3:21 sec to the end of the song at 3:50 sec https://www.youtube.com/watch?v=QDYfEBY9NM4.
+1. Create a function called `sing()` that returns a string with the lyrics that you can hear from 3:21 sec to the end of the song at 3:50 sec https://www.youtube.com/watch?v=QDYfEBY9NM4
## 💻 Expected output:
From 03e5a7a0e7ae10fe50c58eee4cc5b2d0df39eb2f Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:43:29 +0100
Subject: [PATCH 101/175] Update README.es.md
---
exercises/18-The-Beatles/README.es.md | 28 ++++++++++++++++++++-------
1 file changed, 21 insertions(+), 7 deletions(-)
diff --git a/exercises/18-The-Beatles/README.es.md b/exercises/18-The-Beatles/README.es.md
index b58308bf..138bbba2 100644
--- a/exercises/18-The-Beatles/README.es.md
+++ b/exercises/18-The-Beatles/README.es.md
@@ -6,20 +6,34 @@ Un estudio de la BBC ha probado que el 90% de los niños y niñas no conocen la
Este es el coro de una de las canciones más famosas de la banda:
-> Let it be, let it be, let it be, let it be,
-> Whisper words of wisdom,
+> Let it be, let it be, let it be, let it be,
+>
+> Whisper words of wisdom,
+>
> Let it be
## 📝 Instrucciones:
-1. Crea una función llamada `sing()` que retorne un string con la misma letra que puedes escuchar desde el segundo 3:10 hasta el final de la canción en el segundo 3:54 https://www.youtube.com/watch?v=QDYfEBY9NM4.
+1. Crea una función llamada `sing()` que retorne un string con la misma letra que puedes escuchar desde el segundo 3:21 hasta el final de la canción en el segundo 3:50 https://www.youtube.com/watch?v=QDYfEBY9NM4
-## Resultado esperado:
+## 💻 Resultado esperado:
-`let it be, let it be, let it be, let it be, whisper words of wisdom, let it be, let it be, let it be, let it be, let it be, there will be an answer, let it be`
+```text
+let it be,
+let it be,
+let it be,
+let it be,
+there will be an answer,
+let it be,
+let it be,
+let it be,
+let it be,
+let it be,
+whisper words of wisdom, let it be
+```
-## 💡 Pista:
+## 💡 Pistas:
-+ La frase "let it be" se repite todo el tiempo. Probablemente deberías usar un bucle o loop para eso 😊
++ La frase "let it be" se repite todo el tiempo. Probablemente, deberías usar un bucle o loop para eso. 😊
+ Si necesitas un repaso sobre los loops y/o condicionales, échale un vistazo a esto: https://docs.python.org/es/3/tutorial/controlflow.html
From f732712044303bcccd68bfb590982a77e08ed050 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:43:50 +0100
Subject: [PATCH 102/175] Update app.py
---
exercises/18-The-Beatles/app.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/18-The-Beatles/app.py b/exercises/18-The-Beatles/app.py
index fd8b3103..d87e6fa1 100644
--- a/exercises/18-The-Beatles/app.py
+++ b/exercises/18-The-Beatles/app.py
@@ -1,2 +1,2 @@
-# ✅↓ Write your code here. ↓✅
+# ✅↓ Write your code here ↓✅
From 61c7ab309c60efb998c837c96cc04c1f626c8074 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:48:56 +0100
Subject: [PATCH 103/175] Update solution.hide.py
---
exercises/18-The-Beatles/solution.hide.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/exercises/18-The-Beatles/solution.hide.py b/exercises/18-The-Beatles/solution.hide.py
index 1088905d..f966b88f 100644
--- a/exercises/18-The-Beatles/solution.hide.py
+++ b/exercises/18-The-Beatles/solution.hide.py
@@ -1,13 +1,13 @@
-# ✅↓ Write your code here. ↓✅
+# ✅↓ Write your code here ↓✅
def sing():
song = ""
for i in range(11):
if i == 4:
- song += "whisper words of wisdom, "
+ song += "there will be an answer, "
elif i == 10:
- song += "there will be an answer, let it be"
+ song += "whisper words of wisdom, let it be"
else:
song += "let it be, "
return song
-print(sing())
\ No newline at end of file
+print(sing())
From 8f9150bd256057fe3ebefe11411a135e52fd4289 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:49:39 +0100
Subject: [PATCH 104/175] Update README.md
---
exercises/18-The-Beatles/README.md | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/exercises/18-The-Beatles/README.md b/exercises/18-The-Beatles/README.md
index d2ff6d1c..8c4ed4f9 100644
--- a/exercises/18-The-Beatles/README.md
+++ b/exercises/18-The-Beatles/README.md
@@ -22,19 +22,7 @@ This is the chorus of one of the most famous Beatles songs:
## 💻 Expected output:
-```text
-let it be,
-let it be,
-let it be,
-let it be,
-there will be an answer,
-let it be,
-let it be,
-let it be,
-let it be,
-let it be,
-whisper words of wisdom, let it be
-```
+`let it be, let it be, let it be, let it be, there will be an answer, let it be, let it be, let it be, let it be, let it be, whisper words of wisdom, let it be`
## 💡 Hints:
From 6e82e385ca3cce6c139590b8fb2dd44a6eaefac8 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:50:42 +0100
Subject: [PATCH 105/175] Update README.es.md
---
exercises/18-The-Beatles/README.es.md | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/exercises/18-The-Beatles/README.es.md b/exercises/18-The-Beatles/README.es.md
index 138bbba2..e0ba278c 100644
--- a/exercises/18-The-Beatles/README.es.md
+++ b/exercises/18-The-Beatles/README.es.md
@@ -18,19 +18,7 @@ Este es el coro de una de las canciones más famosas de la banda:
## 💻 Resultado esperado:
-```text
-let it be,
-let it be,
-let it be,
-let it be,
-there will be an answer,
-let it be,
-let it be,
-let it be,
-let it be,
-let it be,
-whisper words of wisdom, let it be
-```
+`let it be, let it be, let it be, let it be, there will be an answer, let it be, let it be, let it be, let it be, let it be, whisper words of wisdom, let it be`
## 💡 Pistas:
From 7b6861a2033e513355b945134ff64ee8b0d61ccd Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:52:06 +0100
Subject: [PATCH 106/175] Update test.py
---
exercises/18-The-Beatles/test.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/exercises/18-The-Beatles/test.py b/exercises/18-The-Beatles/test.py
index 0ebe1f60..58741885 100644
--- a/exercises/18-The-Beatles/test.py
+++ b/exercises/18-The-Beatles/test.py
@@ -8,7 +8,7 @@
import re
import os
-@pytest.mark.it("You should declare a function named sing and call it in the correct way")
+@pytest.mark.it("You should declare a function named sing()")
def test_function_sing_exists(app):
try:
assert app.sing
@@ -23,9 +23,9 @@ def test_function_hardcode_output():
regex = re.compile(r"\breturn\s*[^\"][a-zA-Z0-9]*\b\s*")
assert bool(regex.search(content)) == True
-@pytest.mark.it("The function sing should return astring with the song lyrics")
+@pytest.mark.it("The function sing() should return a string with the song lyrics")
def test_function_sing_exists(app):
try:
- assert app.sing() == "let it be, let it be, let it be, let it be, whisper words of wisdom, let it be, let it be, let it be, let it be, let it be, there will be an answer, let it be"
+ assert app.sing() == "let it be, let it be, let it be, let it be, there will be an answer, let it be, let it be, let it be, let it be, let it be, whisper words of wisdom, let it be"
except AttributeError:
- raise AttributeError("The function 'sing' should exist on app.py")
\ No newline at end of file
+ raise AttributeError("The function 'sing' should exist on app.py")
From e1a6b38a46180bfe744a019fef3828be88f275d5 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:53:37 +0100
Subject: [PATCH 107/175] Update solution.hide.py
---
exercises/18-The-Beatles/solution.hide.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/18-The-Beatles/solution.hide.py b/exercises/18-The-Beatles/solution.hide.py
index f966b88f..c3a33816 100644
--- a/exercises/18-The-Beatles/solution.hide.py
+++ b/exercises/18-The-Beatles/solution.hide.py
@@ -3,11 +3,11 @@ def sing():
song = ""
for i in range(11):
if i == 4:
- song += "there will be an answer, "
+ song += "there will be an answer,\n"
elif i == 10:
song += "whisper words of wisdom, let it be"
else:
- song += "let it be, "
+ song += "let it be,\n"
return song
print(sing())
From 503c4a5e10d2eadd279a2f15948170d8a7eb1123 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:54:41 +0100
Subject: [PATCH 108/175] Update test.py
---
exercises/18-The-Beatles/test.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/18-The-Beatles/test.py b/exercises/18-The-Beatles/test.py
index 58741885..d452f892 100644
--- a/exercises/18-The-Beatles/test.py
+++ b/exercises/18-The-Beatles/test.py
@@ -26,6 +26,6 @@ def test_function_hardcode_output():
@pytest.mark.it("The function sing() should return a string with the song lyrics")
def test_function_sing_exists(app):
try:
- assert app.sing() == "let it be, let it be, let it be, let it be, there will be an answer, let it be, let it be, let it be, let it be, let it be, whisper words of wisdom, let it be"
+ assert app.sing() == "let it be,\nlet it be,\nlet it be,\nlet it be,\nthere will be an answer,\nlet it be,\nlet it be,\nlet it be,\nlet it be,\nlet it be,\nwhisper words of wisdom, let it be"
except AttributeError:
raise AttributeError("The function 'sing' should exist on app.py")
From 01b8ae504330f243f1188c55de1b066d5ab91101 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:56:00 +0100
Subject: [PATCH 109/175] Update README.md
---
exercises/18-The-Beatles/README.md | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/exercises/18-The-Beatles/README.md b/exercises/18-The-Beatles/README.md
index 8c4ed4f9..d2ff6d1c 100644
--- a/exercises/18-The-Beatles/README.md
+++ b/exercises/18-The-Beatles/README.md
@@ -22,7 +22,19 @@ This is the chorus of one of the most famous Beatles songs:
## 💻 Expected output:
-`let it be, let it be, let it be, let it be, there will be an answer, let it be, let it be, let it be, let it be, let it be, whisper words of wisdom, let it be`
+```text
+let it be,
+let it be,
+let it be,
+let it be,
+there will be an answer,
+let it be,
+let it be,
+let it be,
+let it be,
+let it be,
+whisper words of wisdom, let it be
+```
## 💡 Hints:
From 18b75bf4914e4a4e1a076c36b67ffe30d2f6c166 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 17:56:13 +0100
Subject: [PATCH 110/175] Update README.es.md
---
exercises/18-The-Beatles/README.es.md | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/exercises/18-The-Beatles/README.es.md b/exercises/18-The-Beatles/README.es.md
index e0ba278c..138bbba2 100644
--- a/exercises/18-The-Beatles/README.es.md
+++ b/exercises/18-The-Beatles/README.es.md
@@ -18,7 +18,19 @@ Este es el coro de una de las canciones más famosas de la banda:
## 💻 Resultado esperado:
-`let it be, let it be, let it be, let it be, there will be an answer, let it be, let it be, let it be, let it be, let it be, whisper words of wisdom, let it be`
+```text
+let it be,
+let it be,
+let it be,
+let it be,
+there will be an answer,
+let it be,
+let it be,
+let it be,
+let it be,
+let it be,
+whisper words of wisdom, let it be
+```
## 💡 Pistas:
From b39bbd6e22695e0b3dd2f26b39711ed8df2bdd1b Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 18:00:34 +0100
Subject: [PATCH 111/175] Update README.es.md
---
exercises/18-The-Beatles/README.es.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/exercises/18-The-Beatles/README.es.md b/exercises/18-The-Beatles/README.es.md
index 138bbba2..25df04d7 100644
--- a/exercises/18-The-Beatles/README.es.md
+++ b/exercises/18-The-Beatles/README.es.md
@@ -36,4 +36,6 @@ whisper words of wisdom, let it be
+ La frase "let it be" se repite todo el tiempo. Probablemente, deberías usar un bucle o loop para eso. 😊
++ Para hacer un salto de línea en un string debes insertar los siguientes caracteres dentro del string `\n`. Por ejemplo, `"let it be,\n"`.
+
+ Si necesitas un repaso sobre los loops y/o condicionales, échale un vistazo a esto: https://docs.python.org/es/3/tutorial/controlflow.html
From 929a2e64ad222a8f2c5c1071762807e154cab71e Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 18:03:52 +0100
Subject: [PATCH 112/175] Update README.es.md
---
exercises/18-The-Beatles/README.es.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/18-The-Beatles/README.es.md b/exercises/18-The-Beatles/README.es.md
index 25df04d7..39821d20 100644
--- a/exercises/18-The-Beatles/README.es.md
+++ b/exercises/18-The-Beatles/README.es.md
@@ -36,6 +36,6 @@ whisper words of wisdom, let it be
+ La frase "let it be" se repite todo el tiempo. Probablemente, deberías usar un bucle o loop para eso. 😊
-+ Para hacer un salto de línea en un string debes insertar los siguientes caracteres dentro del string `\n`. Por ejemplo, `"let it be,\n"`.
++ Para hacer un salto de línea en un string debes insertar los siguientes caracteres dentro del string `\n`. Por ejemplo, `"let it be,\n"`. Ahora cuando imprimas tu string en la consola lo podrás visualizar mejor si lo necesitas.
+ Si necesitas un repaso sobre los loops y/o condicionales, échale un vistazo a esto: https://docs.python.org/es/3/tutorial/controlflow.html
From 9f51e0990508895f49666e7edef6e6b91b0d9915 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 18:04:35 +0100
Subject: [PATCH 113/175] Update README.md
---
exercises/18-The-Beatles/README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/exercises/18-The-Beatles/README.md b/exercises/18-The-Beatles/README.md
index d2ff6d1c..5b5179e0 100644
--- a/exercises/18-The-Beatles/README.md
+++ b/exercises/18-The-Beatles/README.md
@@ -40,4 +40,6 @@ whisper words of wisdom, let it be
+ The words "let it be" repeat all the time, you should probably create a loop for that.
++ To make a line jump in a string you must insert the following characters inside of your string `\n`. For example, `"let it be,\n"`. Now when you print your string in the console you will visualize it better if you need to.
+
+ If you need a refresher on loops and conditionals, check out this awesome resource: https://docs.python.org/3/tutorial/controlflow.html
From d681ed4d733d037e86a7236e8324e0d064e222be Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 18:06:00 +0100
Subject: [PATCH 114/175] Update README.md
---
exercises/18-The-Beatles/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/18-The-Beatles/README.md b/exercises/18-The-Beatles/README.md
index 5b5179e0..304cfb29 100644
--- a/exercises/18-The-Beatles/README.md
+++ b/exercises/18-The-Beatles/README.md
@@ -40,6 +40,6 @@ whisper words of wisdom, let it be
+ The words "let it be" repeat all the time, you should probably create a loop for that.
-+ To make a line jump in a string you must insert the following characters inside of your string `\n`. For example, `"let it be,\n"`. Now when you print your string in the console you will visualize it better if you need to.
++ To make a line jump in a string, you must insert the following characters inside your string `\n`. For example, `"let it be,\n"`. Now when you print your string in the console, you will visualize it better if you need to.
+ If you need a refresher on loops and conditionals, check out this awesome resource: https://docs.python.org/3/tutorial/controlflow.html
From 59d6ad51688d48b70f0b23e607111eff06b2b70a Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 18:18:15 +0100
Subject: [PATCH 115/175] Update README.md
---
exercises/19-Bottles-Of-Milk/README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/exercises/19-Bottles-Of-Milk/README.md b/exercises/19-Bottles-Of-Milk/README.md
index ef5f2704..5594c5b5 100644
--- a/exercises/19-Bottles-Of-Milk/README.md
+++ b/exercises/19-Bottles-Of-Milk/README.md
@@ -14,7 +14,7 @@ Here you can listen to the song: https://www.youtube.com/watch?v=Xy-da43E6Lo
2. The function needs to **print** (use the `print` statement and not `return`) the exact same lyrics in the song.
-## Expected result:
+## 💻 Expected result:
The result should be something like this:
@@ -36,8 +36,8 @@ No more bottles of milk on the wall, no more bottles of milk.
Go to the store and buy some more, 99 bottles of milk on the wall.
```
-## 💡Hints:
+## 💡 Hints:
-+ At the end of the song, the lyrics change because it is only **one** bottle (singular instead of plural).
++ At the end of the song, the lyrics change because there is only **one** bottle (singular instead of plural).
-+ Read the last lyrics and you will see how the last line changes to `"go to the store and buy some more"`.
\ No newline at end of file
++ Read the last lyrics, and you will see how the last line changes to `"go to the store and buy some more"`.
From 3f03be920f29dd05038d50e94b325cff7ab17b39 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 18:19:27 +0100
Subject: [PATCH 116/175] Update README.es.md
---
exercises/19-Bottles-Of-Milk/README.es.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/19-Bottles-Of-Milk/README.es.md b/exercises/19-Bottles-Of-Milk/README.es.md
index e571c6a7..09deac43 100644
--- a/exercises/19-Bottles-Of-Milk/README.es.md
+++ b/exercises/19-Bottles-Of-Milk/README.es.md
@@ -8,7 +8,7 @@ Aquí puedes escucharla: https://www.youtube.com/watch?v=Xy-da43E6Lo
1. Por favor, declara una función llamada `number_of_bottles()`.
-2. La función necesita **print** para imprimir la letra exacta de la canción (usa el método `print()` y no `return`).
+2. La función necesita imprimir la letra exacta de la canción (usa el método `print()` y no `return`).
## Resultado esperado:
@@ -36,4 +36,4 @@ Go to the store and buy some more, 99 bottles of milk on the wall.
+ Al final de la canción, la letra cambia porque es solo una botella (singular en lugar del plural).
-+ Lee la última parte de la letra y verás como cambia la última línea a `"go to the store and by some more"`.
\ No newline at end of file
++ Lee la última parte de la letra y verás como cambia la última línea a `"go to the store and by some more"`.
From 1ea67ed364b935e529f91ff48455917d3ddd3cb4 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 18:20:27 +0100
Subject: [PATCH 117/175] Update README.md
---
exercises/19-Bottles-Of-Milk/README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/19-Bottles-Of-Milk/README.md b/exercises/19-Bottles-Of-Milk/README.md
index 5594c5b5..410a5a6a 100644
--- a/exercises/19-Bottles-Of-Milk/README.md
+++ b/exercises/19-Bottles-Of-Milk/README.md
@@ -18,7 +18,7 @@ Here you can listen to the song: https://www.youtube.com/watch?v=Xy-da43E6Lo
The result should be something like this:
-```sh
+```text
99 bottles of milk on the wall, 99 bottles of milk.
Take one down and pass it around, 98 bottles of milk on the wall.
@@ -40,4 +40,4 @@ Go to the store and buy some more, 99 bottles of milk on the wall.
+ At the end of the song, the lyrics change because there is only **one** bottle (singular instead of plural).
-+ Read the last lyrics, and you will see how the last line changes to `"go to the store and buy some more"`.
++ Read the last lyrics, and you will see how the last line changes to `"Go to the store and by some more, 99 bottles of milk on the wall."`.
From c3bc875f7942ce1dbc27b18d02e9d1d72d159839 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 18:20:29 +0100
Subject: [PATCH 118/175] Update README.es.md
---
exercises/19-Bottles-Of-Milk/README.es.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/exercises/19-Bottles-Of-Milk/README.es.md b/exercises/19-Bottles-Of-Milk/README.es.md
index 09deac43..992e248a 100644
--- a/exercises/19-Bottles-Of-Milk/README.es.md
+++ b/exercises/19-Bottles-Of-Milk/README.es.md
@@ -10,11 +10,11 @@ Aquí puedes escucharla: https://www.youtube.com/watch?v=Xy-da43E6Lo
2. La función necesita imprimir la letra exacta de la canción (usa el método `print()` y no `return`).
-## Resultado esperado:
+## 💻 Resultado esperado:
El resultado debería ser algo como esto:
-```sh
+```text
99 bottles of milk on the wall, 99 bottles of milk.
Take one down and pass it around, 98 bottles of milk on the wall.
@@ -32,8 +32,8 @@ No more bottles of milk on the wall, no more bottles of milk.
Go to the store and buy some more, 99 bottles of milk on the wall.
```
-## 💡Pistas:
+## 💡 Pistas:
+ Al final de la canción, la letra cambia porque es solo una botella (singular en lugar del plural).
-+ Lee la última parte de la letra y verás como cambia la última línea a `"go to the store and by some more"`.
++ Lee la última parte de la letra y verás como cambia la última línea a `"Go to the store and by some more, 99 bottles of milk on the wall."`.
From 2a3253fbaf94f3df8d1cbe9565f347d13249b51e Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 18:20:52 +0100
Subject: [PATCH 119/175] Update app.py
---
exercises/19-Bottles-Of-Milk/app.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/19-Bottles-Of-Milk/app.py b/exercises/19-Bottles-Of-Milk/app.py
index 9ff11964..9733b0fc 100644
--- a/exercises/19-Bottles-Of-Milk/app.py
+++ b/exercises/19-Bottles-Of-Milk/app.py
@@ -1 +1 @@
-# ✅↓ Write your code here. ↓✅
+# ✅↓ Write your code here ↓✅
From 1169f9ef0a270b81d3dcbf67c1f3372a11de8f88 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 18:21:08 +0100
Subject: [PATCH 120/175] Update solution.hide.py
---
exercises/19-Bottles-Of-Milk/solution.hide.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exercises/19-Bottles-Of-Milk/solution.hide.py b/exercises/19-Bottles-Of-Milk/solution.hide.py
index 52000ba9..658f18fc 100644
--- a/exercises/19-Bottles-Of-Milk/solution.hide.py
+++ b/exercises/19-Bottles-Of-Milk/solution.hide.py
@@ -1,4 +1,4 @@
-# ✅↓ Write your code here. ↓✅
+# ✅↓ Write your code here ↓✅
def number_of_bottles():
for x in range(99,2,-1):
print(str(x) + " bottles of milk on the wall, " + str(x) + " bottles of milk. Take one down and pass it around, " + str(x-1)+ " bottles of milk on the wall.")
@@ -7,4 +7,4 @@ def number_of_bottles():
print("No more bottles of milk on the wall, no more bottles of milk. Go to the store and buy some more, 99 bottles of milk on the wall.")
return None
-number_of_bottles()
\ No newline at end of file
+number_of_bottles()
From 77944ba8f9441419715f66e81ffe1f57ea8be34f Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 18:23:03 +0100
Subject: [PATCH 121/175] Update test.py
---
exercises/19-Bottles-Of-Milk/test.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/19-Bottles-Of-Milk/test.py b/exercises/19-Bottles-Of-Milk/test.py
index 86f8ff9d..70af0ca9 100644
--- a/exercises/19-Bottles-Of-Milk/test.py
+++ b/exercises/19-Bottles-Of-Milk/test.py
@@ -25,7 +25,7 @@ def test_function_spin_chamber(capsys, app):
regex = r"number_of_bottles\(\)"
assert re.match(regex, content[my_printCallVar])
-@pytest.mark.it('The function must return the expected output')
+@pytest.mark.it('The function must print the expected output')
def test_for_function_output(capsys):
number_of_bottles()
captured = capsys.readouterr()
From 2e3754788af43b55ff4447925f38b6f0f4e21662 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 18:27:03 +0100
Subject: [PATCH 122/175] Update README.es.md
---
exercises/19-Bottles-Of-Milk/README.es.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/19-Bottles-Of-Milk/README.es.md b/exercises/19-Bottles-Of-Milk/README.es.md
index 992e248a..3df3fb1e 100644
--- a/exercises/19-Bottles-Of-Milk/README.es.md
+++ b/exercises/19-Bottles-Of-Milk/README.es.md
@@ -36,4 +36,4 @@ Go to the store and buy some more, 99 bottles of milk on the wall.
+ Al final de la canción, la letra cambia porque es solo una botella (singular en lugar del plural).
-+ Lee la última parte de la letra y verás como cambia la última línea a `"Go to the store and by some more, 99 bottles of milk on the wall."`.
++ Lee la última parte de la letra y verás como cambia la última línea a `"Go to the store and buy some more, 99 bottles of milk on the wall."`.
From e6a8af8eb26db34cd72bfacc29ab039adc22e18e Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 18:27:15 +0100
Subject: [PATCH 123/175] Update README.md
---
exercises/19-Bottles-Of-Milk/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/19-Bottles-Of-Milk/README.md b/exercises/19-Bottles-Of-Milk/README.md
index 410a5a6a..ce4d00c1 100644
--- a/exercises/19-Bottles-Of-Milk/README.md
+++ b/exercises/19-Bottles-Of-Milk/README.md
@@ -40,4 +40,4 @@ Go to the store and buy some more, 99 bottles of milk on the wall.
+ At the end of the song, the lyrics change because there is only **one** bottle (singular instead of plural).
-+ Read the last lyrics, and you will see how the last line changes to `"Go to the store and by some more, 99 bottles of milk on the wall."`.
++ Read the last lyrics, and you will see how the last line changes to `"Go to the store and buy some more, 99 bottles of milk on the wall."`.
From 48728ff0861618363607a93cb5519a2cd3635a4d Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 21:41:58 +0100
Subject: [PATCH 124/175] Update README.es.md
---
exercises/11-Create-A-New-Function/README.es.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/11-Create-A-New-Function/README.es.md b/exercises/11-Create-A-New-Function/README.es.md
index e1e45372..05923095 100644
--- a/exercises/11-Create-A-New-Function/README.es.md
+++ b/exercises/11-Create-A-New-Function/README.es.md
@@ -13,7 +13,7 @@ Pero Python viene con un conjunto de funciones "pre-definidas" que puedes usar,
```py
import random
-# Genera un número aleatorio dentro de un rango posiivo dado
+# Genera un número aleatorio dentro de un rango positivo dado
r1 = random.randint(0, 10)
print("Random number between 0 and 10 is % s" % (r1))
From 4679f273d3ca4e33334caf0a40dbbbb361e414be Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 21:54:53 +0100
Subject: [PATCH 125/175] Update solution.hide.py
---
exercises/18-The-Beatles/solution.hide.py | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/exercises/18-The-Beatles/solution.hide.py b/exercises/18-The-Beatles/solution.hide.py
index c3a33816..49901bf0 100644
--- a/exercises/18-The-Beatles/solution.hide.py
+++ b/exercises/18-The-Beatles/solution.hide.py
@@ -1,13 +1,12 @@
# ✅↓ Write your code here ↓✅
def sing():
- song = ""
for i in range(11):
if i == 4:
- song += "there will be an answer,\n"
+ print("there will be an answer,")
elif i == 10:
- song += "whisper words of wisdom, let it be"
+ print("whisper words of wisdom, let it be")
else:
- song += "let it be,\n"
- return song
+ print("let it be,")
+ return None
-print(sing())
+sing()
From f0443fca6c8c1fd6880f89d0773eb19526a06616 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 21:57:11 +0100
Subject: [PATCH 126/175] Update README.md
---
exercises/18-The-Beatles/README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/exercises/18-The-Beatles/README.md b/exercises/18-The-Beatles/README.md
index 304cfb29..10fa952b 100644
--- a/exercises/18-The-Beatles/README.md
+++ b/exercises/18-The-Beatles/README.md
@@ -18,7 +18,9 @@ This is the chorus of one of the most famous Beatles songs:
## 📝 Instructions:
-1. Create a function called `sing()` that returns a string with the lyrics that you can hear from 3:21 sec to the end of the song at 3:50 sec https://www.youtube.com/watch?v=QDYfEBY9NM4
+1. Create a function called `sing()` that prints on the console the lyrics that you can hear from 3:21 sec to the end of the song at 3:50 sec https://www.youtube.com/watch?v=QDYfEBY9NM4
+
+2. Call your function at the end.
## 💻 Expected output:
@@ -40,6 +42,4 @@ whisper words of wisdom, let it be
+ The words "let it be" repeat all the time, you should probably create a loop for that.
-+ To make a line jump in a string, you must insert the following characters inside your string `\n`. For example, `"let it be,\n"`. Now when you print your string in the console, you will visualize it better if you need to.
-
+ If you need a refresher on loops and conditionals, check out this awesome resource: https://docs.python.org/3/tutorial/controlflow.html
From fcd7bdb05c20ddf71dd953df44ff40c326a8fc85 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 21:59:18 +0100
Subject: [PATCH 127/175] Update README.es.md
---
exercises/18-The-Beatles/README.es.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/exercises/18-The-Beatles/README.es.md b/exercises/18-The-Beatles/README.es.md
index 39821d20..d0fa4cf3 100644
--- a/exercises/18-The-Beatles/README.es.md
+++ b/exercises/18-The-Beatles/README.es.md
@@ -14,7 +14,9 @@ Este es el coro de una de las canciones más famosas de la banda:
## 📝 Instrucciones:
-1. Crea una función llamada `sing()` que retorne un string con la misma letra que puedes escuchar desde el segundo 3:21 hasta el final de la canción en el segundo 3:50 https://www.youtube.com/watch?v=QDYfEBY9NM4
+1. Crea una función llamada `sing()` que imprima en consola la misma letra que puedes escuchar desde el segundo 3:21 hasta el final de la canción en el segundo 3:50 https://www.youtube.com/watch?v=QDYfEBY9NM4
+
+2. Llama tu función al final del código.
## 💻 Resultado esperado:
@@ -36,6 +38,4 @@ whisper words of wisdom, let it be
+ La frase "let it be" se repite todo el tiempo. Probablemente, deberías usar un bucle o loop para eso. 😊
-+ Para hacer un salto de línea en un string debes insertar los siguientes caracteres dentro del string `\n`. Por ejemplo, `"let it be,\n"`. Ahora cuando imprimas tu string en la consola lo podrás visualizar mejor si lo necesitas.
-
+ Si necesitas un repaso sobre los loops y/o condicionales, échale un vistazo a esto: https://docs.python.org/es/3/tutorial/controlflow.html
From 8617d47a7e2d33d709f3ee8ff7b6447b3e636ace Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 22 Nov 2023 22:16:47 +0100
Subject: [PATCH 128/175] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 22df76e1..8534b2e9 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ By [@alesanchezr](https://twitter.com/alesanchezr) and [other contributors](http
-*Estas instrucciones [están disponibles en 🇪🇸 español](https://github.com/Lorenagubaira/python-beginner-programming-exercises/blob/master/README.es.md) :es:*
+*Estas instrucciones [están disponibles en 🇪🇸 español](https://github.com/4GeeksAcademy/python-beginner-programming-exercises/blob/master/README.es.md) :es:*
These exercises are the ideal first step for anyone trying to learn Python. We start with the most simple challenge, like printing a message on the terminal and slowly increase step by step.
From 0446d7f479b45c95fef755390b6eefdfbf5dc326 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 29 Nov 2023 01:21:36 +0100
Subject: [PATCH 129/175] Update README.es.md
---
exercises/01-Console/README.es.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/exercises/01-Console/README.es.md b/exercises/01-Console/README.es.md
index 0b009142..a602f8da 100644
--- a/exercises/01-Console/README.es.md
+++ b/exercises/01-Console/README.es.md
@@ -14,7 +14,7 @@ print("Un texto en la consola")
## 📝 Instrucciones:
-1. usa **print** para escribir `Hello World!` en la consola.
+1. Usa **print** para escribir `Hello World!` en la consola.
## 💡 Pistas:
From 919c874bbfae6f956e3d7fb07804fb40b0d79d2f Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 13 Dec 2023 19:00:20 +0100
Subject: [PATCH 130/175] Update README.es.md
---
README.es.md | 22 ++++++----------------
1 file changed, 6 insertions(+), 16 deletions(-)
diff --git a/README.es.md b/README.es.md
index a8c9fb77..604746d2 100644
--- a/README.es.md
+++ b/README.es.md
@@ -29,28 +29,18 @@ Puedes empezar estos ejercicios en pocos segundos haciendo clic en: [Abrir en Co
## Instalación local:
-Clona el repositorio en tu ambiente local y sigue los siguientes pasos:
+1. Clona el repositorio en tu ambiente local y sigue los siguientes pasos.
-1. Instala LearnPack, el package manager para tutoriales y el plugin compilador de HTML para LearnPack, asegúrate de tener instalado node.js 14+:
+2. Instala LearnPack, el package manager para tutoriales y el plugin compilador de Python para LearnPack, asegúrate de tener instalado node.js 14+:
```bash
-$ npm i learnpack -g
-$ learnpack plugins:install learnpack-python
+$ npm i @learnpack/learnpack@2.1.20 -g && learnpack plugins:install @learnpack/python@1.0.0
```
-2. Descarga estos ejercicios en particular usando LearnPack y `cd` dentro de la carpeta:
-
-```bash
-$ learnpack download python-beginner-programming-exercises
-$ cd python-beginner-programming-exercises
-```
-
-Nota: Una vez que termines de descargarlo, encontrarás una carpeta llamada "exercises" que contiene los ejercicios.
-
3. Inicializa el tutorial ejecutando el siguiente comando al mismo nivel en el que se encuentra tu archivo learn.json:
```bash
-$ pip3 install pytest==4.4.2 pytest-testdox mock
+$ pip3 install pytest==6.2.5 pytest-testdox mock
$ learnpack start
```
@@ -59,7 +49,7 @@ $ learnpack start
## ¿Cómo están organizados los ejercicios?
-Cada ejercicio es una pequeña aplicación de React que contiene los siguientes archivos:
+Cada ejercicio es una pequeña aplicación de Python que contiene los siguientes archivos:
1. **app.py:** representa el archivo de entrada de Python que será ejecutado por el computador.
2. **README.es.md:** Contiene las instrucciones del ejercicio.
@@ -71,7 +61,7 @@ Cada ejercicio es una pequeña aplicación de React que contiene los siguientes
Gracias a estas personas maravillosas ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):
-1. [Alejandro Sanchez (alesanchezr)](https://github.com/alesanchezr), contribución: (programador) 💻 (idea) 🤔, (build-tests) ⚠️, (pull-request-review) 🤓, (build-tutorial) ✅, (documentación) 📖
+1. [Alejandro Sanchez (alesanchezr)](https://github.com/alesanchezr), contribución: (programador) 💻 (idea) 🤔, (build-tests) ⚠️, (pull-request-review) 👀, (build-tutorial) ✅, (documentación) 📖
2. [Paolo (plucodev)](https://github.com/plucodev), contribución: (bug reports) 🐛, (programador) 💻, (traducción) 🌎
From 9eb24d62f8aaaf42639cf5fb348281f1af3b8dbc Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 13 Dec 2023 19:00:29 +0100
Subject: [PATCH 131/175] Update README.md
---
README.md | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/README.md b/README.md
index 8534b2e9..26832302 100644
--- a/README.md
+++ b/README.md
@@ -36,28 +36,18 @@ You can open these exercises in just a few seconds by clicking: [Open in Codespa
## Local Installation
-Clone the repository in your local environment and follow the steps below:
+1. Clone the repository in your local environment and follow the steps below.
-1. Install LearnPack, the package manager for learning tutorials, and the HTML compiler plugin for LearnPack. Make sure you also have node.js 14+:
+2. Install LearnPack, the package manager for learning tutorials, and the Python compiler plugin for LearnPack. Make sure you also have node.js 14+:
```bash
-$ npm i learnpack -g
-$ learnpack plugins:install learnpack-python
+$ npm i @learnpack/learnpack@2.1.20 -g && learnpack plugins:install @learnpack/python@1.0.0
```
-2. Download these particular exercises using LearnPack and `cd` into the folder:
-
-```bash
-$ learnpack download python-beginner-programming-exercises
-$ cd python-beginner-programming-exercises
-```
-
-Note: Once you finish downloading, you will find an "exercises" folder that contains all the exercises within.
-
3. Start the tutorial/exercises by running the following command at the same level where your learn.json file is:
```bash
-$ pip3 install pytest==4.4.2 pytest-testdox mock
+$ pip3 install pytest==6.2.5 pytest-testdox mock
$ learnpack start
```
@@ -65,7 +55,7 @@ $ learnpack start
## How are the exercises organized?
-Each exercise is a small React application containing the following files:
+Each exercise is a small Python application containing the following files:
1. **app.py:** represents the entry Python file that will be executed by the computer.
2. **README.md:** contains exercise instructions.
From 70b89804aba4e7067f923e64e0ccf291f936e80d Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 13 Dec 2023 19:26:16 +0100
Subject: [PATCH 132/175] Update README.md
---
README.md | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 26832302..6b7f14c5 100644
--- a/README.md
+++ b/README.md
@@ -36,17 +36,22 @@ You can open these exercises in just a few seconds by clicking: [Open in Codespa
## Local Installation
-1. Clone the repository in your local environment and follow the steps below.
-
-2. Install LearnPack, the package manager for learning tutorials, and the Python compiler plugin for LearnPack. Make sure you also have node.js 14+:
+1. Install LearnPack, the package manager for learning tutorials, and the Python compiler plugin for LearnPack. Make sure you also have node.js 14+:
```bash
$ npm i @learnpack/learnpack@2.1.20 -g && learnpack plugins:install @learnpack/python@1.0.0
```
+2) Clone or download this repository.
+
+```bash
+$ git clone https://github.com/4GeeksAcademy/python-beginner-programming-exercises.git
+```
+
3. Start the tutorial/exercises by running the following command at the same level where your learn.json file is:
```bash
+$ cd python-beginner-programming-exercises
$ pip3 install pytest==6.2.5 pytest-testdox mock
$ learnpack start
```
From 4b3c3ba7a5bf18f6528597795f4473662cdc09f6 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 13 Dec 2023 19:27:57 +0100
Subject: [PATCH 133/175] Update README.es.md
---
README.es.md | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/README.es.md b/README.es.md
index 604746d2..beeebb50 100644
--- a/README.es.md
+++ b/README.es.md
@@ -29,17 +29,22 @@ Puedes empezar estos ejercicios en pocos segundos haciendo clic en: [Abrir en Co
## Instalación local:
-1. Clona el repositorio en tu ambiente local y sigue los siguientes pasos.
-
-2. Instala LearnPack, el package manager para tutoriales y el plugin compilador de Python para LearnPack, asegúrate de tener instalado node.js 14+:
+1. Instala LearnPack, el package manager para tutoriales y el plugin compilador de Python para LearnPack, asegúrate de tener instalado node.js 14+:
```bash
$ npm i @learnpack/learnpack@2.1.20 -g && learnpack plugins:install @learnpack/python@1.0.0
```
+2. Clona o descarga este repositorio en tu ambiente local.
+
+```bash
+$ git clone https://github.com/4GeeksAcademy/python-beginner-programming-exercises.git
+```
+
3. Inicializa el tutorial ejecutando el siguiente comando al mismo nivel en el que se encuentra tu archivo learn.json:
```bash
+$ cd python-beginner-programming-exercises
$ pip3 install pytest==6.2.5 pytest-testdox mock
$ learnpack start
```
From b71c06f57df3edc0c29697ebc971e1efa5972a66 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 13 Dec 2023 19:28:01 +0100
Subject: [PATCH 134/175] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 6b7f14c5..c17f1a21 100644
--- a/README.md
+++ b/README.md
@@ -42,7 +42,7 @@ You can open these exercises in just a few seconds by clicking: [Open in Codespa
$ npm i @learnpack/learnpack@2.1.20 -g && learnpack plugins:install @learnpack/python@1.0.0
```
-2) Clone or download this repository.
+2. Clone or download this repository in your local environment.
```bash
$ git clone https://github.com/4GeeksAcademy/python-beginner-programming-exercises.git
From e4f34a5f84831f65f75c369f5b8cf7d62e6d806e Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 13 Dec 2023 19:31:50 +0100
Subject: [PATCH 135/175] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index c17f1a21..b5a5f7d3 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,7 @@ You can open these exercises in just a few seconds by clicking: [Open in Codespa
## Local Installation
-1. Install LearnPack, the package manager for learning tutorials, and the Python compiler plugin for LearnPack. Make sure you also have node.js 14+:
+1. Make sure you have [LearnPack](https://learnpack.co) installed, node.js version 14+, and Python version 3+. This is the command to install LearnPack:
```bash
$ npm i @learnpack/learnpack@2.1.20 -g && learnpack plugins:install @learnpack/python@1.0.0
From 05e6bc9dfe58fb55ada277ab5d17ec46e32767d8 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 13 Dec 2023 19:32:11 +0100
Subject: [PATCH 136/175] Update README.es.md
---
README.es.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.es.md b/README.es.md
index beeebb50..938c36a3 100644
--- a/README.es.md
+++ b/README.es.md
@@ -29,7 +29,7 @@ Puedes empezar estos ejercicios en pocos segundos haciendo clic en: [Abrir en Co
## Instalación local:
-1. Instala LearnPack, el package manager para tutoriales y el plugin compilador de Python para LearnPack, asegúrate de tener instalado node.js 14+:
+1. Asegúrate de instalar [LearnPack](https://learnpack.co), node.js version 14+ y Python version 3+. Este es el comando para instalar LearnPack:
```bash
$ npm i @learnpack/learnpack@2.1.20 -g && learnpack plugins:install @learnpack/python@1.0.0
From 5f868a964ffb3e89ba0caa6553740125fa5e294c Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 13 Dec 2023 19:57:30 +0100
Subject: [PATCH 137/175] Update README.md
---
README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index b5a5f7d3..2d237517 100644
--- a/README.md
+++ b/README.md
@@ -46,12 +46,14 @@ $ npm i @learnpack/learnpack@2.1.20 -g && learnpack plugins:install @learnpack/p
```bash
$ git clone https://github.com/4GeeksAcademy/python-beginner-programming-exercises.git
+$ cd python-beginner-programming-exercises
```
+> Nota: Una vez que termine de descargar, encontrarás la carpeta "exercises" que contiene todos los ejercicios.
+
3. Start the tutorial/exercises by running the following command at the same level where your learn.json file is:
```bash
-$ cd python-beginner-programming-exercises
$ pip3 install pytest==6.2.5 pytest-testdox mock
$ learnpack start
```
From b7d844b254e5cc8e704daadfcb89c8358c3427d5 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 13 Dec 2023 19:57:47 +0100
Subject: [PATCH 138/175] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 2d237517..661b029b 100644
--- a/README.md
+++ b/README.md
@@ -49,7 +49,7 @@ $ git clone https://github.com/4GeeksAcademy/python-beginner-programming-exercis
$ cd python-beginner-programming-exercises
```
-> Nota: Una vez que termine de descargar, encontrarás la carpeta "exercises" que contiene todos los ejercicios.
+> Note: Once you finish downloading, you will find an "exercises" folder that contains all the exercises within.
3. Start the tutorial/exercises by running the following command at the same level where your learn.json file is:
From e335f767140ab2b1748858b667a090d10d938ba9 Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 13 Dec 2023 19:58:17 +0100
Subject: [PATCH 139/175] Update README.es.md
---
README.es.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.es.md b/README.es.md
index 938c36a3..5b2caf10 100644
--- a/README.es.md
+++ b/README.es.md
@@ -39,12 +39,14 @@ $ npm i @learnpack/learnpack@2.1.20 -g && learnpack plugins:install @learnpack/p
```bash
$ git clone https://github.com/4GeeksAcademy/python-beginner-programming-exercises.git
+$ cd python-beginner-programming-exercises
```
+> Nota: Una vez que termine de descargar, encontrarás la carpeta "exercises" que contiene todos los ejercicios.
+
3. Inicializa el tutorial ejecutando el siguiente comando al mismo nivel en el que se encuentra tu archivo learn.json:
```bash
-$ cd python-beginner-programming-exercises
$ pip3 install pytest==6.2.5 pytest-testdox mock
$ learnpack start
```
From f7151b0ededaf8e3f9383051a6e4b88ce97b2d0d Mon Sep 17 00:00:00 2001
From: Jose Mora <109150320+josemoracard@users.noreply.github.com>
Date: Wed, 20 Dec 2023 17:25:17 +0000
Subject: [PATCH 140/175] cambio de numero en carpetas
---
.../{14-Your-First-Loop => 13-Your-First-Loop}/README.es.md | 2 +-
exercises/{14-Your-First-Loop => 13-Your-First-Loop}/README.md | 2 +-
exercises/{14-Your-First-Loop => 13-Your-First-Loop}/app.py | 0
.../{14-Your-First-Loop => 13-Your-First-Loop}/solution.hide.py | 0
exercises/{14-Your-First-Loop => 13-Your-First-Loop}/test.py | 0
.../{13-Create-A-For-Loop => 14-Create-A-For-Loop}/README.es.md | 2 +-
.../{13-Create-A-For-Loop => 14-Create-A-For-Loop}/README.md | 2 +-
exercises/{13-Create-A-For-Loop => 14-Create-A-For-Loop}/app.py | 0
.../solution.hide.py | 0
.../{13-Create-A-For-Loop => 14-Create-A-For-Loop}/test.py | 0
10 files changed, 4 insertions(+), 4 deletions(-)
rename exercises/{14-Your-First-Loop => 13-Your-First-Loop}/README.es.md (95%)
rename exercises/{14-Your-First-Loop => 13-Your-First-Loop}/README.md (96%)
rename exercises/{14-Your-First-Loop => 13-Your-First-Loop}/app.py (100%)
rename exercises/{14-Your-First-Loop => 13-Your-First-Loop}/solution.hide.py (100%)
rename exercises/{14-Your-First-Loop => 13-Your-First-Loop}/test.py (100%)
rename exercises/{13-Create-A-For-Loop => 14-Create-A-For-Loop}/README.es.md (95%)
rename exercises/{13-Create-A-For-Loop => 14-Create-A-For-Loop}/README.md (95%)
rename exercises/{13-Create-A-For-Loop => 14-Create-A-For-Loop}/app.py (100%)
rename exercises/{13-Create-A-For-Loop => 14-Create-A-For-Loop}/solution.hide.py (100%)
rename exercises/{13-Create-A-For-Loop => 14-Create-A-For-Loop}/test.py (100%)
diff --git a/exercises/14-Your-First-Loop/README.es.md b/exercises/13-Your-First-Loop/README.es.md
similarity index 95%
rename from exercises/14-Your-First-Loop/README.es.md
rename to exercises/13-Your-First-Loop/README.es.md
index 7e28efe6..5749d0bd 100644
--- a/exercises/14-Your-First-Loop/README.es.md
+++ b/exercises/13-Your-First-Loop/README.es.md
@@ -1,4 +1,4 @@
-# `14` Your First Loop
+# `13` Your First Loop
## 📝 Instrucciones:
diff --git a/exercises/14-Your-First-Loop/README.md b/exercises/13-Your-First-Loop/README.md
similarity index 96%
rename from exercises/14-Your-First-Loop/README.md
rename to exercises/13-Your-First-Loop/README.md
index af03d283..ec8eaf42 100644
--- a/exercises/14-Your-First-Loop/README.md
+++ b/exercises/13-Your-First-Loop/README.md
@@ -2,7 +2,7 @@
tutorial: "https://www.youtube.com/watch?v=30sizcnVdGg"
---
-# `14` Your First Loop
+# `13` Your First Loop
## 📝 Instructions:
diff --git a/exercises/14-Your-First-Loop/app.py b/exercises/13-Your-First-Loop/app.py
similarity index 100%
rename from exercises/14-Your-First-Loop/app.py
rename to exercises/13-Your-First-Loop/app.py
diff --git a/exercises/14-Your-First-Loop/solution.hide.py b/exercises/13-Your-First-Loop/solution.hide.py
similarity index 100%
rename from exercises/14-Your-First-Loop/solution.hide.py
rename to exercises/13-Your-First-Loop/solution.hide.py
diff --git a/exercises/14-Your-First-Loop/test.py b/exercises/13-Your-First-Loop/test.py
similarity index 100%
rename from exercises/14-Your-First-Loop/test.py
rename to exercises/13-Your-First-Loop/test.py
diff --git a/exercises/13-Create-A-For-Loop/README.es.md b/exercises/14-Create-A-For-Loop/README.es.md
similarity index 95%
rename from exercises/13-Create-A-For-Loop/README.es.md
rename to exercises/14-Create-A-For-Loop/README.es.md
index b4e8b89f..4dce8fc3 100644
--- a/exercises/13-Create-A-For-Loop/README.es.md
+++ b/exercises/14-Create-A-For-Loop/README.es.md
@@ -1,4 +1,4 @@
-# `13` Create A For Loop
+# `14` Create A For Loop
Los bucles o loops son muy útiles. No tienes que reescribir las mismas líneas muchas veces.
diff --git a/exercises/13-Create-A-For-Loop/README.md b/exercises/14-Create-A-For-Loop/README.md
similarity index 95%
rename from exercises/13-Create-A-For-Loop/README.md
rename to exercises/14-Create-A-For-Loop/README.md
index 6a1acb10..cbc43ada 100644
--- a/exercises/13-Create-A-For-Loop/README.md
+++ b/exercises/14-Create-A-For-Loop/README.md
@@ -2,7 +2,7 @@
tutorial: "https://www.youtube.com/watch?v=-HQtwsBnbMQ"
---
-# `13` Create A For Loop
+# `14` Create A For Loop
Loops are very useful. You don't have to rewrite the same lines many times.
diff --git a/exercises/13-Create-A-For-Loop/app.py b/exercises/14-Create-A-For-Loop/app.py
similarity index 100%
rename from exercises/13-Create-A-For-Loop/app.py
rename to exercises/14-Create-A-For-Loop/app.py
diff --git a/exercises/13-Create-A-For-Loop/solution.hide.py b/exercises/14-Create-A-For-Loop/solution.hide.py
similarity index 100%
rename from exercises/13-Create-A-For-Loop/solution.hide.py
rename to exercises/14-Create-A-For-Loop/solution.hide.py
diff --git a/exercises/13-Create-A-For-Loop/test.py b/exercises/14-Create-A-For-Loop/test.py
similarity index 100%
rename from exercises/13-Create-A-For-Loop/test.py
rename to exercises/14-Create-A-For-Loop/test.py
From ae109f52157ed5660ac725167d8fb16db6fca153 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charly=20Chac=C3=B3n?=
<107764250+Charlytoc@users.noreply.github.com>
Date: Tue, 27 Feb 2024 16:39:15 -0500
Subject: [PATCH 141/175] Update devcontainer.json
---
.devcontainer/devcontainer.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 3c87dfd9..8c084e45 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -21,7 +21,7 @@
"extensions": ["learn-pack.learnpack-vscode"]
}
},
- "onCreateCommand": "pip3 install pytest==6.2.5 pytest-testdox mock && npm i @learnpack/learnpack@2.1.20 -g && learnpack plugins:install @learnpack/python@1.0.0"
+ "onCreateCommand": "pip3 install pytest==6.2.5 pytest-testdox mock && npm i @learnpack/learnpack@2.1.35 -g && learnpack plugins:install @learnpack/python@1.0.0"
// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},
From ce6faf767bcce0b7c42c442ea21474fb8333f5f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charly=20Chac=C3=B3n?=
<107764250+Charlytoc@users.noreply.github.com>
Date: Tue, 27 Feb 2024 16:39:33 -0500
Subject: [PATCH 142/175] Update learn.json
---
learn.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/learn.json b/learn.json
index 45b4f8c0..2c562bdc 100644
--- a/learn.json
+++ b/learn.json
@@ -20,7 +20,7 @@
"language": "python3",
"editor": {
- "version": "1.0.73"
+ "version": "3.1.9"
}
}
From 49218f6d9a42ed41ef55dd85af425dcc025d0b25 Mon Sep 17 00:00:00 2001
From: Anggie Alava
Date: Sun, 10 Mar 2024 00:50:16 -0500
Subject: [PATCH 143/175] Print more flexible
---
exercises/11-Create-A-New-Function/test.py | 26 ++++++++++++++--------
1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/exercises/11-Create-A-New-Function/test.py b/exercises/11-Create-A-New-Function/test.py
index 2872531b..964a103a 100644
--- a/exercises/11-Create-A-New-Function/test.py
+++ b/exercises/11-Create-A-New-Function/test.py
@@ -7,21 +7,25 @@
import mock
path = os.path.dirname(os.path.abspath(__file__))+'/app.py'
+
@pytest.mark.it('The function generate_random should exist')
def test_function_exists():
try:
from app import generate_random
except ImportError:
- raise ImportError("The function 'generate_random' should exist on app.py")
+ raise ImportError(
+ "The function 'generate_random' should exist on app.py")
+
@pytest.mark.it("The function 'generate_random' should return a random number between 0 and 9")
def test_for_return():
from app import generate_random
result = generate_random()
assert result is not None
- for x in range(0,20):
+ for x in range(0, 20):
result = generate_random()
- assert result <= 9 and result >= 0
+ assert result <= 9 and result >= 0
+
@pytest.mark.it('Use the function randinit() or randrange()')
def test_for_type_random():
@@ -29,12 +33,16 @@ def test_for_type_random():
content = content_file.read()
regex = re.compile(r"random.randint\s*\(")
regex2 = re.compile(r"random.randrange\s*\(")
- assert bool(regex.search(content)) == True or bool(regex2.search(content)) == True
+ assert bool(regex.search(content)) == True or bool(
+ regex2.search(content)) == True
+
@pytest.mark.it('You should print() the output of the function')
def test_function_called_for():
-
- with open(path, 'r') as content_file:
- content = content_file.read()
- regex = re.compile(r"print\s*\(\s*generate_random\s*\(\s*\)\s*\)")
- assert bool(regex.search(content)) == True
+ captured_output = io.StringIO()
+ sys.stdout = captured_output
+ app.generate_random()
+ sys.stdout = sys.__stdout__
+ output = captured_output.getvalue()
+ regex = re.compile(r"\d{0,9}")
+ assert bool(regex.search(output)) == True
From fadae80a83385ee55fbfd5f9b97cf18e8d467f18 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charly=20Chac=C3=B3n?=
<107764250+Charlytoc@users.noreply.github.com>
Date: Mon, 1 Apr 2024 13:45:00 -0500
Subject: [PATCH 144/175] Update devcontainer.json
---
.devcontainer/devcontainer.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 8c084e45..688c6e9d 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -21,7 +21,7 @@
"extensions": ["learn-pack.learnpack-vscode"]
}
},
- "onCreateCommand": "pip3 install pytest==6.2.5 pytest-testdox mock && npm i @learnpack/learnpack@2.1.35 -g && learnpack plugins:install @learnpack/python@1.0.0"
+ "onCreateCommand": "pip3 install pytest==6.2.5 pytest-testdox mock && npm i @learnpack/learnpack@2.1.39 -g && learnpack plugins:install @learnpack/python@1.0.3"
// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},
From f4054396d413c487a631a3ff99d4eb3280c89efa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charly=20Chac=C3=B3n?=
<107764250+Charlytoc@users.noreply.github.com>
Date: Mon, 1 Apr 2024 13:45:17 -0500
Subject: [PATCH 145/175] Update .gitpod.Dockerfile
---
.gitpod.Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile
index 67e29e58..4252a171 100644
--- a/.gitpod.Dockerfile
+++ b/.gitpod.Dockerfile
@@ -25,4 +25,4 @@ RUN echo "unset DATABASE_URL" >> $HOME/.bashrc
RUN echo "export DATABASE_URL" >> $HOME/.bashrc
RUN pip3 install pytest==6.2.5 pytest-testdox mock
-RUN npm i @learnpack/learnpack@2.1.20 -g && learnpack plugins:install @learnpack/python@1.0.0
+RUN npm i @learnpack/learnpack@2.1.39 -g && learnpack plugins:install @learnpack/python@1.0.3
From 89e582e31a6a18ccbd43b02f867d921ff36a5072 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charly=20Chac=C3=B3n?=
<107764250+Charlytoc@users.noreply.github.com>
Date: Mon, 1 Apr 2024 13:45:27 -0500
Subject: [PATCH 146/175] Update learn.json
---
learn.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/learn.json b/learn.json
index 2c562bdc..5715ac2f 100644
--- a/learn.json
+++ b/learn.json
@@ -20,7 +20,7 @@
"language": "python3",
"editor": {
- "version": "3.1.9"
+ "version": "3.1.23"
}
}
From 203a3523b88c4345efae2e734733d38d4cd79135 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charly=20Chac=C3=B3n?=
<107764250+Charlytoc@users.noreply.github.com>
Date: Tue, 2 Apr 2024 12:44:34 -0500
Subject: [PATCH 147/175] Update devcontainer.json
---
.devcontainer/devcontainer.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 688c6e9d..c7b83707 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -21,7 +21,7 @@
"extensions": ["learn-pack.learnpack-vscode"]
}
},
- "onCreateCommand": "pip3 install pytest==6.2.5 pytest-testdox mock && npm i @learnpack/learnpack@2.1.39 -g && learnpack plugins:install @learnpack/python@1.0.3"
+ "onCreateCommand": "sudo apt-get update -y && sudo apt-get install xdg-utils -y && pip3 install pytest==6.2.5 pytest-testdox mock && npm i @learnpack/learnpack@2.1.39 -g && learnpack plugins:install @learnpack/python@1.0.3"
// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},
From f815b82f6e9bd8bc4e1f35cfa04038aeaad9d2c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charly=20Chac=C3=B3n?=
<107764250+Charlytoc@users.noreply.github.com>
Date: Tue, 2 Apr 2024 12:44:43 -0500
Subject: [PATCH 148/175] Update learn.json
---
learn.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/learn.json b/learn.json
index 5715ac2f..e2aaf2ef 100644
--- a/learn.json
+++ b/learn.json
@@ -20,7 +20,7 @@
"language": "python3",
"editor": {
- "version": "3.1.23"
+ "version": "3.1.24"
}
}
From 43cbc9c628ddc47c3fb9716690fb160c28118d01 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charly=20Chac=C3=B3n?=
<107764250+Charlytoc@users.noreply.github.com>
Date: Sun, 7 Apr 2024 14:52:44 -0500
Subject: [PATCH 149/175] Update devcontainer.json
---
.devcontainer/devcontainer.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index c7b83707..1a31f6b3 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -21,7 +21,7 @@
"extensions": ["learn-pack.learnpack-vscode"]
}
},
- "onCreateCommand": "sudo apt-get update -y && sudo apt-get install xdg-utils -y && pip3 install pytest==6.2.5 pytest-testdox mock && npm i @learnpack/learnpack@2.1.39 -g && learnpack plugins:install @learnpack/python@1.0.3"
+ "onCreateCommand": "sudo apt-get update -y && sudo apt-get install xdg-utils -y && pip3 install pytest==6.2.5 pytest-testdox mock && npm i @learnpack/learnpack@2.1.47 -g && learnpack plugins:install @learnpack/python@1.0.3"
// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},
From b9540a3cc3997efa69066a84d1a1083733b44b25 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charly=20Chac=C3=B3n?=
<107764250+Charlytoc@users.noreply.github.com>
Date: Sun, 7 Apr 2024 14:52:58 -0500
Subject: [PATCH 150/175] Update .gitpod.Dockerfile
---
.gitpod.Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile
index 4252a171..25ac192d 100644
--- a/.gitpod.Dockerfile
+++ b/.gitpod.Dockerfile
@@ -25,4 +25,4 @@ RUN echo "unset DATABASE_URL" >> $HOME/.bashrc
RUN echo "export DATABASE_URL" >> $HOME/.bashrc
RUN pip3 install pytest==6.2.5 pytest-testdox mock
-RUN npm i @learnpack/learnpack@2.1.39 -g && learnpack plugins:install @learnpack/python@1.0.3
+RUN npm i @learnpack/learnpack@2.1.47 -g && learnpack plugins:install @learnpack/python@1.0.3
From 6e423ea19e6d649941a67c8873e086533cd7c0d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charly=20Chac=C3=B3n?=
<107764250+Charlytoc@users.noreply.github.com>
Date: Tue, 23 Apr 2024 14:37:01 -0500
Subject: [PATCH 151/175] Update learn.json
---
learn.json | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/learn.json b/learn.json
index e2aaf2ef..a17b4b16 100644
--- a/learn.json
+++ b/learn.json
@@ -19,8 +19,15 @@
"graded": true,
"language": "python3",
- "editor": {
- "version": "3.1.24"
+ "editor": {
+ "version": "3.1.24"
+ },
+ "video": {
+ "intro": {
+ "es": "https://www.youtube.com/watch?v=amyDNhZwGJQ",
+ "en": "https://www.youtube.com/watch?v=amyDNhZwGJQ"
}
+ }
+
}
From 881ac3b79d485386d1f93833e818c44a9ab9ceb2 Mon Sep 17 00:00:00 2001
From: Charlytoc
Date: Tue, 23 Apr 2024 19:21:11 -0500
Subject: [PATCH 152/175] Update with new version of editor and cli
---
.devcontainer/devcontainer.json | 3 +-
learn.json | 62 ++++++++++++++++++---------------
2 files changed, 35 insertions(+), 30 deletions(-)
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 1a31f6b3..bde2cfb1 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -1,3 +1,4 @@
+
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/python
{
@@ -21,7 +22,7 @@
"extensions": ["learn-pack.learnpack-vscode"]
}
},
- "onCreateCommand": "sudo apt-get update -y && sudo apt-get install xdg-utils -y && pip3 install pytest==6.2.5 pytest-testdox mock && npm i @learnpack/learnpack@2.1.47 -g && learnpack plugins:install @learnpack/python@1.0.3"
+ "onCreateCommand": "sudo apt-get update -y && sudo apt-get install xdg-utils -y && pip3 install pytest==6.2.5 pytest-testdox mock && npm i @learnpack/learnpack@2.1.50 -g && learnpack plugins:install @learnpack/python@1.0.3"
// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},
diff --git a/learn.json b/learn.json
index a17b4b16..adf73c71 100644
--- a/learn.json
+++ b/learn.json
@@ -1,33 +1,37 @@
+
{
- "slug": "python-beginner-programming-exercises",
- "title": {
- "us": "Learn Python Interactively (beginner)",
- "es": "Aprende Python Interactivamente (Principiante)"
- },
- "intro": "https://www.youtube.com/watch?v=amyDNhZwGJQ",
- "repository": "https://github.com/4GeeksAcademy/python-beginner-programming-exercises",
- "preview": "https://github.com/4GeeksAcademy/python-beginner-programming-exercises/blob/master/preview.png?raw=true",
- "description": {
- "us": "Python Exercises for beginners, from Hello World to variables, loops and a little bit of functions.",
- "es": "Ejercicios de Python para principiantos, desde Hello World hasta variables, ciclos y un poco de funciones."
- },
- "duration": 10,
- "difficulty": "easy",
- "videoSolutions": true,
- "projectType": "tutorial",
- "bugsLink": "https://github.com/learnpack/learnpack/issues/new",
- "graded": true,
- "language": "python3",
-
- "editor": {
- "version": "3.1.24"
- },
- "video": {
- "intro": {
- "es": "https://www.youtube.com/watch?v=amyDNhZwGJQ",
- "en": "https://www.youtube.com/watch?v=amyDNhZwGJQ"
- }
+"slug": "python-beginner-programming-exercises",
+"title": {
+ "us": "Learn Python Interactively (beginner)",
+ "es": "Aprende Python Interactivamente (Principiante)"
+},
+"intro": "https://www.youtube.com/watch?v=amyDNhZwGJQ",
+"repository": "https://github.com/4GeeksAcademy/python-beginner-programming-exercises",
+"preview": "https://github.com/4GeeksAcademy/python-beginner-programming-exercises/blob/master/preview.png?raw=true",
+"description": {
+ "us": "Python Exercises for beginners, from Hello World to variables, loops and a little bit of functions.",
+ "es": "Ejercicios de Python para principiantos, desde Hello World hasta variables, ciclos y un poco de funciones."
+},
+"duration": 10,
+"difficulty": "easy",
+"videoSolutions": true,
+"projectType": "tutorial",
+"bugsLink": "https://github.com/learnpack/learnpack/issues/new",
+"graded": true,
+"language": "python3",
+
+"editor": {
+ "version": "3.1.36"
+},
+"telemetry": {
+ "batch": "https://breathecode.herokuapp.com/v1/assignment/me/telemetry"
+},
+"video": {
+ "intro": {
+ "es": "https://www.youtube.com/watch?v=amyDNhZwGJQ",
+ "en": "https://www.youtube.com/watch?v=amyDNhZwGJQ"
}
+}
+
-
}
From 7dab94aab3b622b06ea8ae7a9f437b44a5efbaab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charly=20Chac=C3=B3n?=
<107764250+Charlytoc@users.noreply.github.com>
Date: Wed, 15 May 2024 18:58:47 +0000
Subject: [PATCH 153/175] Add videos in Spanish and fix a solution
---
exercises/00-Welcome/README.es.md | 4 ++++
exercises/01-Console/README.es.md | 4 ++++
exercises/02-Declare-Variables/README.es.md | 4 ++++
exercises/03-Print-Variables-In-The-Console/README.es.md | 4 ++++
exercises/04-Multiply-Two-Values/README.es.md | 4 ++++
exercises/05-User-Inputed-Values/README.es.md | 4 ++++
exercises/06-String-Concatenation/README.es.md | 4 ++++
exercises/07-Create-a-Basic-HTML/README.es.md | 4 ++++
exercises/08.1-Your-First-If/README.es.md | 4 ++++
exercises/08.2-How-Much-The-Wedding-Costs/README.es.md | 5 +++++
exercises/09-Random-Numbers/README.es.md | 4 ++++
exercises/10-Calling-Your-First-Function/README.es.md | 4 ++++
exercises/10.1-Creating-Your-First-Function/README.es.md | 4 ++++
exercises/11-Create-A-New-Function/README.es.md | 4 ++++
exercises/12-Rand-From-One-to-Twelve/README.es.md | 4 ++++
exercises/13-Your-First-Loop/README.es.md | 4 ++++
exercises/14-Create-A-For-Loop/README.es.md | 4 ++++
exercises/15-Looping-With-FizzBuzz/README.es.md | 4 ++++
exercises/16-Random-Colors-Loop/README.es.md | 5 +++++
exercises/17-Russian-Roulette/README.es.md | 4 ++++
exercises/18-The-Beatles/README.es.md | 4 ++++
exercises/18-The-Beatles/solution.hide.py | 9 +++++----
exercises/19-Bottles-Of-Milk/README.es.md | 4 ++++
learn.json | 2 +-
24 files changed, 96 insertions(+), 5 deletions(-)
diff --git a/exercises/00-Welcome/README.es.md b/exercises/00-Welcome/README.es.md
index 7b1b9591..3a0f5d91 100644
--- a/exercises/00-Welcome/README.es.md
+++ b/exercises/00-Welcome/README.es.md
@@ -1,3 +1,7 @@
+---
+intro: "https://www.youtube.com/watch?v=IXNSwnN-YqM"
+---
+
# Welcome to the Python Beginner Course!
¡Estamos muy entusiasmados por tenerte aquí! 🎉 😂
diff --git a/exercises/01-Console/README.es.md b/exercises/01-Console/README.es.md
index 46371ece..83181572 100644
--- a/exercises/01-Console/README.es.md
+++ b/exercises/01-Console/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=z6OnN4s__TU"
+---
+
# `01` Console
En Python, usamos **print** para que el computador escriba cualquier cosa que queramos (el contenido de una variable, una string dado, etc.) en algo llamado "la consola".
diff --git a/exercises/02-Declare-Variables/README.es.md b/exercises/02-Declare-Variables/README.es.md
index eaacd6fa..d6d228ac 100644
--- a/exercises/02-Declare-Variables/README.es.md
+++ b/exercises/02-Declare-Variables/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=FeSo8xlnrTI"
+---
+
# `02` Declare Variables
En la programación, usamos variables como si fueran cajas (o contenedores) para guardar diferentes tipos de información. Así es cómo creamos una variable:
diff --git a/exercises/03-Print-Variables-In-The-Console/README.es.md b/exercises/03-Print-Variables-In-The-Console/README.es.md
index 12b5a6fd..fed43da0 100644
--- a/exercises/03-Print-Variables-In-The-Console/README.es.md
+++ b/exercises/03-Print-Variables-In-The-Console/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=SM71mzjuvfA"
+---
+
# `03` Print more Variables in The Console
También puedes imprimir más de una variable en la misma función `print()` separando con una coma `,` las variables a imprimir. De esta manera:
diff --git a/exercises/04-Multiply-Two-Values/README.es.md b/exercises/04-Multiply-Two-Values/README.es.md
index a1f5dd5b..a80a49d4 100644
--- a/exercises/04-Multiply-Two-Values/README.es.md
+++ b/exercises/04-Multiply-Two-Values/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=p4PY8s6asfw"
+---
+
# `04` Multiply Two Values
Cualquier lenguaje de programación te permite realizar operaciones matemáticas básicas como multiplicación, división, etc.
diff --git a/exercises/05-User-Inputed-Values/README.es.md b/exercises/05-User-Inputed-Values/README.es.md
index ecbbf140..b3b5fb59 100644
--- a/exercises/05-User-Inputed-Values/README.es.md
+++ b/exercises/05-User-Inputed-Values/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=pe_DEzC-528"
+---
+
# `05` User Inputed Values
Otra cosa genial de las variables es que no necesitas saber su valor para poder trabajar con ellas.
diff --git a/exercises/06-String-Concatenation/README.es.md b/exercises/06-String-Concatenation/README.es.md
index 56b080d2..e7fcf43e 100644
--- a/exercises/06-String-Concatenation/README.es.md
+++ b/exercises/06-String-Concatenation/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=4y8xYy273f4"
+---
+
# `06` String Concatenation
La concatenación de strings es una tarea común en la programación que implica combinar o unir dos o más strings.
diff --git a/exercises/07-Create-a-Basic-HTML/README.es.md b/exercises/07-Create-a-Basic-HTML/README.es.md
index 0abe48b4..13fe96e8 100644
--- a/exercises/07-Create-a-Basic-HTML/README.es.md
+++ b/exercises/07-Create-a-Basic-HTML/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=zbTM_T6an4k"
+---
+
# `07` Create a Basic HTML
Continuemos concatenando strings para generar un documento HTML básico...
diff --git a/exercises/08.1-Your-First-If/README.es.md b/exercises/08.1-Your-First-If/README.es.md
index b7ea9ac6..53295eda 100644
--- a/exercises/08.1-Your-First-If/README.es.md
+++ b/exercises/08.1-Your-First-If/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=n5skqOQfQ84"
+---
+
# `08.1` Your First If...
La aplicación actual está preguntando cuánto dinero tiene el usuario. Una vez el usuario ingresa la cantidad, debemos 'imprimir' usando **print** una de las siguientes respuestas:
diff --git a/exercises/08.2-How-Much-The-Wedding-Costs/README.es.md b/exercises/08.2-How-Much-The-Wedding-Costs/README.es.md
index 37b763c1..5658a3c0 100644
--- a/exercises/08.2-How-Much-The-Wedding-Costs/README.es.md
+++ b/exercises/08.2-How-Much-The-Wedding-Costs/README.es.md
@@ -1,3 +1,8 @@
+---
+tutorial: "https://www.youtube.com/watch?v=z3_0x8MlpFs"
+---
+
+
# `08.2` How Much The Wedding Costs (if...else)
Aquí tenemos una tabla de precios de una compañía de catering de bodas:
diff --git a/exercises/09-Random-Numbers/README.es.md b/exercises/09-Random-Numbers/README.es.md
index b77ad09e..39fca4cd 100644
--- a/exercises/09-Random-Numbers/README.es.md
+++ b/exercises/09-Random-Numbers/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=9IjotW64sxA"
+---
+
# `09` Random Numbers
Puedes usar la función `randint()` para obtener un número entero aleatorio. `randint()` es una función interna del módulo `random` en Python3.
diff --git a/exercises/10-Calling-Your-First-Function/README.es.md b/exercises/10-Calling-Your-First-Function/README.es.md
index 29bc48a1..c9627071 100644
--- a/exercises/10-Calling-Your-First-Function/README.es.md
+++ b/exercises/10-Calling-Your-First-Function/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=0Jxyc4eClNA"
+---
+
# `10` Calling Your First Function
Las funciones son increíbles por muchas cosas, pero principalmente porque puedes encapsular tu código en piezas y reusar esas piezas muchas veces sin tener que escribir todo el código cada vez.
diff --git a/exercises/10.1-Creating-Your-First-Function/README.es.md b/exercises/10.1-Creating-Your-First-Function/README.es.md
index 978f547f..47665d11 100644
--- a/exercises/10.1-Creating-Your-First-Function/README.es.md
+++ b/exercises/10.1-Creating-Your-First-Function/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=ePn8AzCG57Y"
+---
+
# `10.1` Creating Your First Function
## 📝 Instrucciones:
diff --git a/exercises/11-Create-A-New-Function/README.es.md b/exercises/11-Create-A-New-Function/README.es.md
index 05923095..affe02e8 100644
--- a/exercises/11-Create-A-New-Function/README.es.md
+++ b/exercises/11-Create-A-New-Function/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=6LhV15O9kvQ"
+---
+
# `11` Create a New Function
Como sabes, las funciones son un bloque de código útil que puedes reusar tantas veces como necesites.
diff --git a/exercises/12-Rand-From-One-to-Twelve/README.es.md b/exercises/12-Rand-From-One-to-Twelve/README.es.md
index 995d8094..320f6776 100644
--- a/exercises/12-Rand-From-One-to-Twelve/README.es.md
+++ b/exercises/12-Rand-From-One-to-Twelve/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=tqZIlc1gVi8"
+---
+
# `12` Rand From One to Twelve
## 📝 Instrucciones:
diff --git a/exercises/13-Your-First-Loop/README.es.md b/exercises/13-Your-First-Loop/README.es.md
index 5749d0bd..5cc23101 100644
--- a/exercises/13-Your-First-Loop/README.es.md
+++ b/exercises/13-Your-First-Loop/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=0-vljraNvwE"
+---
+
# `13` Your First Loop
## 📝 Instrucciones:
diff --git a/exercises/14-Create-A-For-Loop/README.es.md b/exercises/14-Create-A-For-Loop/README.es.md
index 4dce8fc3..a7c29fd8 100644
--- a/exercises/14-Create-A-For-Loop/README.es.md
+++ b/exercises/14-Create-A-For-Loop/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=ckSAqxzi5vs"
+---
+
# `14` Create A For Loop
Los bucles o loops son muy útiles. No tienes que reescribir las mismas líneas muchas veces.
diff --git a/exercises/15-Looping-With-FizzBuzz/README.es.md b/exercises/15-Looping-With-FizzBuzz/README.es.md
index fbaa200d..a64bd0fe 100644
--- a/exercises/15-Looping-With-FizzBuzz/README.es.md
+++ b/exercises/15-Looping-With-FizzBuzz/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=VkAccivrOPM"
+---
+
# `15` Looping With FizzBuzz
Esta es una típica prueba de principiante que es exigida para las entrevistas en Google, Facebook y las demás grandes compañías de tecnología.
diff --git a/exercises/16-Random-Colors-Loop/README.es.md b/exercises/16-Random-Colors-Loop/README.es.md
index 493f0c12..85106922 100644
--- a/exercises/16-Random-Colors-Loop/README.es.md
+++ b/exercises/16-Random-Colors-Loop/README.es.md
@@ -1,3 +1,8 @@
+---
+tutorial: "https://www.youtube.com/watch?v=jYK2i0_dtns"
+---
+
+
# `16` Random Colors (Loop)
Hemos creado una función que devuelve un color basado en un número entre 0 y 3 (cualquier otro número retornará el color `black`).
diff --git a/exercises/17-Russian-Roulette/README.es.md b/exercises/17-Russian-Roulette/README.es.md
index 25da2194..54e19d2c 100644
--- a/exercises/17-Russian-Roulette/README.es.md
+++ b/exercises/17-Russian-Roulette/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=KqO8ebdqs5I"
+---
+
# `17` Russian Roulette
¿Has jugado a la ruleta rusa? ¡Es muy divertido! Si no pierdes... (¡¡¡muuuajajajaja!!!).
diff --git a/exercises/18-The-Beatles/README.es.md b/exercises/18-The-Beatles/README.es.md
index d0fa4cf3..e1aee34c 100644
--- a/exercises/18-The-Beatles/README.es.md
+++ b/exercises/18-The-Beatles/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=0Y2mHwwQBGE"
+---
+
# `18` The Beatles
¿A quién no le gusta The Beatles?
diff --git a/exercises/18-The-Beatles/solution.hide.py b/exercises/18-The-Beatles/solution.hide.py
index 49901bf0..c907bc03 100644
--- a/exercises/18-The-Beatles/solution.hide.py
+++ b/exercises/18-The-Beatles/solution.hide.py
@@ -1,12 +1,13 @@
# ✅↓ Write your code here ↓✅
def sing():
+ song = ""
for i in range(11):
if i == 4:
- print("there will be an answer,")
+ song += "there will be an answer,\n"
elif i == 10:
- print("whisper words of wisdom, let it be")
+ song += "whisper words of wisdom, let it be"
else:
- print("let it be,")
- return None
+ song += "let it be,\n"
+ return song
sing()
diff --git a/exercises/19-Bottles-Of-Milk/README.es.md b/exercises/19-Bottles-Of-Milk/README.es.md
index 3df3fb1e..155e476e 100644
--- a/exercises/19-Bottles-Of-Milk/README.es.md
+++ b/exercises/19-Bottles-Of-Milk/README.es.md
@@ -1,3 +1,7 @@
+---
+tutorial: "https://www.youtube.com/watch?v=iLH9Hg4PAmw"
+---
+
# `19` Bottles Of Milk
¿Has escuchado la canción sobre las 99 botellas de leche? Es una gran canción, para nada aburrida...
diff --git a/learn.json b/learn.json
index adf73c71..54c13b78 100644
--- a/learn.json
+++ b/learn.json
@@ -28,7 +28,7 @@
},
"video": {
"intro": {
- "es": "https://www.youtube.com/watch?v=amyDNhZwGJQ",
+ "es": "https://www.youtube.com/watch?v=IXNSwnN-YqM",
"en": "https://www.youtube.com/watch?v=amyDNhZwGJQ"
}
}
From 29f2e70d2a1f660ebf85db885bfb4229b16dd363 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charly=20Chac=C3=B3n?=
<107764250+Charlytoc@users.noreply.github.com>
Date: Mon, 1 Jul 2024 17:33:31 -0500
Subject: [PATCH 154/175] Update devcontainer.json
---
.devcontainer/devcontainer.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index bde2cfb1..b4b2ae8f 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -22,7 +22,7 @@
"extensions": ["learn-pack.learnpack-vscode"]
}
},
- "onCreateCommand": "sudo apt-get update -y && sudo apt-get install xdg-utils -y && pip3 install pytest==6.2.5 pytest-testdox mock && npm i @learnpack/learnpack@2.1.50 -g && learnpack plugins:install @learnpack/python@1.0.3"
+ "onCreateCommand": "sudo apt-get update -y && sudo apt-get install xdg-utils -y && pip3 install pytest==6.2.5 pytest-testdox mock && npm i @learnpack/learnpack@2.1.56 -g && learnpack plugins:install @learnpack/python@1.0.3"
// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},
From 8b2133865ac5f8e7b0a924a17c2ab3ffbd602aee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charly=20Chac=C3=B3n?=
<107764250+Charlytoc@users.noreply.github.com>
Date: Mon, 1 Jul 2024 17:33:58 -0500
Subject: [PATCH 155/175] Update .gitpod.Dockerfile
---
.gitpod.Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile
index 25ac192d..3de43aa2 100644
--- a/.gitpod.Dockerfile
+++ b/.gitpod.Dockerfile
@@ -25,4 +25,4 @@ RUN echo "unset DATABASE_URL" >> $HOME/.bashrc
RUN echo "export DATABASE_URL" >> $HOME/.bashrc
RUN pip3 install pytest==6.2.5 pytest-testdox mock
-RUN npm i @learnpack/learnpack@2.1.47 -g && learnpack plugins:install @learnpack/python@1.0.3
+RUN npm i @learnpack/learnpack@2.1.56 -g && learnpack plugins:install @learnpack/python@1.0.3
From 6224fbb365269140ae2ac81c3389f2140957d08d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charly=20Chac=C3=B3n?=
<107764250+Charlytoc@users.noreply.github.com>
Date: Mon, 1 Jul 2024 17:34:22 -0500
Subject: [PATCH 156/175] Update learn.json
---
learn.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/learn.json b/learn.json
index 54c13b78..d36d3d27 100644
--- a/learn.json
+++ b/learn.json
@@ -21,7 +21,7 @@
"language": "python3",
"editor": {
- "version": "3.1.36"
+ "version": "3.1.40"
},
"telemetry": {
"batch": "https://breathecode.herokuapp.com/v1/assignment/me/telemetry"
From 79f6c0492fe6dd875372bfc689bed6fcfaf23359 Mon Sep 17 00:00:00 2001
From: Tomas Gonzalez
Date: Tue, 9 Jul 2024 12:22:56 -0400
Subject: [PATCH 157/175] Add assets folder
---
.../assets/badge-python-bg.png | Bin
preview.png => .learn/assets/preview.png | Bin
.../assets/python-intro.gif | Bin
.learn/assets/run-exercise.png | Bin 0 -> 93213 bytes
README.es.md | 2 +-
README.md | 2 +-
learn.json | 2 +-
7 files changed, 3 insertions(+), 3 deletions(-)
rename badge-python-bg.png => .learn/assets/badge-python-bg.png (100%)
rename preview.png => .learn/assets/preview.png (100%)
rename python-intro.gif => .learn/assets/python-intro.gif (100%)
create mode 100644 .learn/assets/run-exercise.png
diff --git a/badge-python-bg.png b/.learn/assets/badge-python-bg.png
similarity index 100%
rename from badge-python-bg.png
rename to .learn/assets/badge-python-bg.png
diff --git a/preview.png b/.learn/assets/preview.png
similarity index 100%
rename from preview.png
rename to .learn/assets/preview.png
diff --git a/python-intro.gif b/.learn/assets/python-intro.gif
similarity index 100%
rename from python-intro.gif
rename to .learn/assets/python-intro.gif
diff --git a/.learn/assets/run-exercise.png b/.learn/assets/run-exercise.png
new file mode 100644
index 0000000000000000000000000000000000000000..eb50a61afd98dcf3596cc0258038fb4d8278c7ab
GIT binary patch
literal 93213
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
^;JSLOxXB^R?Nxz0NT8_A8;!gH(a%~1f=LzkXU
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