diff --git a/README.md b/README.md deleted file mode 100644 index 450e7ab..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -#Microsoft Python-Github course - -1. *Descifrado de código y revelación de un secreto con Python y Visual Studio Code -2. *Jupyter note book python diff --git a/decrypt.py b/decrypt.py index 72d3443..3fad2a4 100644 --- a/decrypt.py +++ b/decrypt.py @@ -1,343 +1,343 @@ - -print("Hello, cotosoville!") #Usar 'print' para imprimir texto -#This is a comment that won't be interpreted as a command. -#Associate variable town with the value "contosoville" -town = "Contosoville" #asignar la palabara 'Contosoville' a una variable Town - -#prnt a massage about the secret location -print("The tow I am looking for is " + town) #Imprime la leyenda + la ciudad desde la variable - -#Define a power (function) to chant a phrase -def chant( phrase ): #Define una función tipo chant llamada ('phrase') - #Glue three copies together and prnt it as a massage - print( phrase + phrase + phrase) #Imprime tres veces la función 'phrase' - -# Invoke the power to chant on the phrase "contosoville!" -chant( "Contosoville!") - -def lasso_letter( letter, shift_amoount ): #Define una función llama 'Lasso_letter' (letra, número a sumar) - letter_cod = ord(letter.lower()) #Asigna a la función 'letter_cod = ord(letter.lower()). la función ord() para convertir la letra a a su código ASCII, - - -#Cálculo de un carácter descodificcado: Manera sencilla -'''Ahora es el momento de calcular el nuevo carácter. En primer lugar, revise el ejemplo original. -Si empieza con la letra a y quiere obtener la letra c, siga estos pasos:''' -def lasso_letter( letter, shift_amount ): #Asegúrese de que el valor pasado al parámetro letter está en minúsculas llamando a .lower(). En este caso, la letra que se pasa es a, de modo que .lower() la conservará como a. - letter_code = ord(letter.lower()) #Use la función ord() para convertir la letra a a su código ASCII, 97. Guarde el valor de código 97 en la variable letter_code. - decoded_letter_code = letter_code + shift_amount #Agregue un valor shift_amount de 2 al valor letter_code de 97 para obtener el nuevo valor de número: 99. Almacene el valor 99 en la variable decoded_letter_code. - decoded_letter = chr(decoded_letter_code) #Use la función chr() para descodificar el valor numérico 99 en un carácter para obtener c. (La función chr() simplemente hace lo contrario a la función ord()). Almacene el valor descodificado c en la variable decoded_letter. - return decoded_letter #Devuelva el valor de decoded_letter: c. -#print(lasso_letter('a',2)) #Intente llamar a esta función mediante el ejemplo anterior para ver si funciona como se espera: -'''Aunque este ejemplo funciona, hay un problema al llegar al final del alfabeto. -Veamos lo que sucedería si ejecutara este código con la primera letra del mensaje secreto real, -N, y la cantidad de desplazamiento, 13.''' -#print(lasso_letter('N',13)) - -#Para recorrer el alfabeto de forma sencilla, necesita un operador especial llamado mod, que es el signo de porcentaje (%). -three_two = 3 % 2 -eleven_four = 11 % 4 -five_ten = 5 % 10 - -print(three_two) -print(eleven_four) -print(five_ten) - -''' -#CÁLCULO DE UN CARÁCTER DECODIFICADO: LA MANERA CORRECTA -Con el operador mod en mente, necesita dos variables nuevas: - -a_ascii: contiene el valor de código ASCII de la letra "a". Para obtener este valor, se llama a la función ord('a') y se pasa la letra. -alphabet_size: contiene el número de letras del alfabeto, 26. -Esta es la fórmula para averiguar el valor true_letter_code: - -*** a_ascii + (((letter_code - a_ascii) + shift_amount) % alphabet_size) *** - -Puede revisar esta fórmula con un par de ejemplos. -________________________________________________________________________________________________________ -/* Ejemplo 1: letra "a" y desplazamiento de 2 */ - -Comience con estos dos valores: - -letter = 'a' -shift_amount = 2 - -Variable Fórmula Value -letter "a" -shift_amount 2 -letter_code ord('a') 97 -a_ascii ord('a') 97 -alphabet_size 26 -true_letter_code 97 + (((97 - 97) + 2) % 26) 2 Nota: consulte la explicación detallada de este cálculo después de la tabla. -decoded_letter chr(99) c - -Puede revisar la fórmula de true_letter_code del mismo modo que cualquier otra fórmula matemática. -Siga PEMDAS, donde se evalúa una expresión matemática en el orden de paréntesis, exponentes, multiplicación, -división, suma y resta. - -a_ascii + (((letter_code - a_ascii) + shift_amount) % alphabet_size) - -97 + (((97 - 97) + 2) % 26) -97 + ((0 + 2) % 26) -97 + (2 % 26) -97 + 2 -99 - -decoded_letter chr(99) = 'c' -_______________________________________________________________________________________________________ -/* Ejemplo 1: letra "a" y desplazamiento de 2 */ - -Ejemplo 2: letra "N" y desplazamiento de 13 -Comience con estos dos valores: - -letter = 'N' -shift_amount = 13 - -Variable Fórmula Value -letter 'N' -shift_amount 13 -letter_code ord('n') 110 -a_ascii ord('a') 97 -alphabet_size 26 -true_letter_code 97 + (((110 - 97) + 13) % 26) 97 Nota: consulte la explicación detallada de este cálculo después de la tabla. -decoded_letter chr(97) a - -Puede revisar la fórmula de true_letter_code del mismo modo que cualquier otra fórmula matemática -(acuérdese de PEMDAS): - -a_ascii + (((letter_code - a_ascii) + shift_amount) % alphabet_size) - -97 + (((110 - 97) + 13) % 26) -97 + ((13 + 13) % 26) -97 + (26 % 26) -97 + 0 -97 -''' - -''' -___________________________________________________________________________________________________________ -Código final -Ahora que tiene la fórmula del descodificador, puede colocarla en su función. -''' -# Definir una función para encontrar la verdad cambiando la letra por la cantidad especificada -def lasso_letter( letter, shift_amount ): - - # Invoque la función ord para traducir la letra a su código ASCII - # Guarda el código en la variable letter_code - letter_code = ord(letter.lower()) - - # La representación numérica ASCII de la letra minúscula 'a' - a_ascii = ord('a') - - # El número de letras en el alfabeto - alphabet_size = 26 - - # La fórmula para calcular el número ASCII de la letra decodificada - # Tenga en cuenta el bucle alrededor del alfabeto - true_letter_code = a_ascii + (((letter_code - a_ascii)+ shift_amount) % alphabet_size) - - # Convierte el número ASCII al carácter o letra - decoded_letter = chr(true_letter_code) - - # Devuelve la carta decodificada - return decoded_letter -print(lasso_letter('a', 2)) - -'''_____________________________________________________________________________________________________ -/* Ejercicio: Descodificación de una palabra completa con un cifrado César */ - -Ahora que sabe cómo descodificar una letra dada una cantidad de desplazamiento determinada, -puede descodificar palabras y frases enteras. -Para descifrar una palabra completa, debe invocar la función lasso_letter() para cada letra de la palabra. -A continuación, coloque todas las letras descodificadas en una palabra descodificada. - -Esta vez, escribirá una función denominada lasso_word() que tiene dos parámetros: word y shift_amount. -''' -def lasso_word( word, shift_amount ): - - ''' - Palabras como colecciones de letras - Una manera de pensar en las palabras es que son solo colecciones de letras. - Por ejemplo, puede pensar en la palabra "Hola" como: - - #"H" - "o" - "l" - "a" - - Una variable puede ser un nombre para un fragmento de datos: una palabra, - una letra, una fórmula, una función, y así sucesivamente. Python tiene muchas maneras de representar - colecciones de datos. Una manera es con una lista. - - Una lista es exactamente lo que parece. Una palabra se puede considerar una lista de letras. - Aún mejor: Python tiene una manera de recorrer en bucle cada elemento de una lista de uno en uno. - - Iteración de una lista con un bucle for - Dado que desea invocar la función lasso_letter() en cada letra, - debe recorrer en bucle cada letra de la palabra que está intentando descodificar. - ''' - - '''_____________________________________________________________________________________________________ - Iteración de una lista con un bucle for - Dado que desea invocar la función lasso_letter() en cada letra, debe recorrer en bucle cada letra de la palabra que está intentando descodificar. - - Esta es la sintaxis de un bucle for: - ''' - #La palabra que se pasa como parámetro se puede considerar una lista de letras. De este modo, puede escribir: - for letter in word: - lasso_letter( letter, shift_amount) - - #Ahora que comprende esta funcionalidad de Python, puede hacer algo en cada letra de una palabra, como invocar la función lasso_letter(). - - '''__________________________________________________________________________________________________ -/* Invocación de la función lasso_letter() */ -Es bastante sencillo invocar la función lasso_letter() en cada letra de una palabra:''' - -def lasso_word( word, shift_amount): - for letter in word: - lasso_letter( letter, shift_amount ) - -#Recuerde que cuando escribió la función lasso_letter(), la última línea de código de la función era la siguiente: -'''Recuerde que cuando escribió la función lasso_latter(), la última línea de código de la función era la siguiente: - -# send the decoded letter back -return decoded_letter - -Este código se denomina una instrucción "return". -Esta instrucción devuelve el valor a la línea que invocó la función. -Para capturar ese valor devuelto, lo único que tiene que hacer es usar una variable: -''' -def lasso_word( word, shif_amount): - - for letter in word: - decoded_letter = lasso_letter(letter, shif_amount) -#Ahora va a invocar una función que escribió, lasso_letter(), desde una nueva función que va a escribir ahora: lasso_word(). - -'''___________________________________________________________________________________________________________ - -***Disposición de letras juntas*** -Con el código que acaba de escribir, tendrá un valor en la variable decoded_letter. Cuando el bucle se ejecuta de nuevo, la variable se actualiza. - -Puede realizar un seguimiento del código para ver cómo funciona: - -word = "gdkkn" -shift_amount = 1 - -Loop -iteration Valor de Valor de - letter decoded_letter - -1 'g' 'h' -2 'd' 'e' -3 'k' "l" -4 'k' "l" -5 'n' "o" -Se le deja una variable denominada decoded_letter que tiene un valor solo con la letra "o". -Pero lo que quería era una variable denominada decoded_word para tener el valor hello. Recuerde que, -a partir de los conceptos básicos de Python que hemos revisado anteriormente en este módulo, puede usar -el signo más (+) entre dos palabras o letras para combinarlas. - -''' -''' -def lasso_word( word, shift_amount ): - - decoded_word = "" - - for letter in word: - decoded_letter = lasso_letter(letter, shift_amount) - decoded_word = decoded_word + decoded_letter - - return decoded_word -''' -'''Con esté código la palabra completa se almacena ahora en la variable decoded_word. -Puede devolver este valor a la línea donde se invocó esta función. Puede realizar un seguimiento del -código como antes: - -Loop Valor de Valor de Valor de -iteration letter decoded_letter decoded_word -1 'g' 'h' "h" -2 'd' 'e' "he" -3 'k' "l" "hel" -4 'k' "l" "hell" -5 'n' "o" "Hola" -''' -'''__________________________________________________________________________________________________________ -***Creación de comentarios en el código*** - -No olvide agregar comentarios al código, para que sepa exactamente lo que sucede. -(Si vuelve a este ejercicio más adelante, no querrá tener que descifrar su propio código). - -''' - -'''__________________________________________________________________________________________________________ -***Revisión del archivo completo*** -Ahora que ha escrito dos funciones lasso, el archivo completo decrypt.py debe tener este aspecto: -''' - -# Definir una función para encontrar la verdad en un mensaje secreto -# Cambia las letras de una palabra en una cantidad específica para descubrir la palabra oculta - -# Define a function to find the truth by shifting the letter by a specified amount -def lasso_letter( letter, shift_amount ): - # Invoque la función ord para traducir la letra a su código ASCII - # Guarda el valor del código en la variable llamada letter_code - letter_code = ord(letter.lower()) - - # La representación numérica ASCII de la letra a minúscula - a_ascii = ord('a') - - # El número de letras en el alfabeto - alphabet_size = 26 - - # La fórmula para calcular el número ASCII de la letra decodificada - # Tenga en cuenta el bucle alrededor del alfabeto - true_letter_code = a_ascii + (((letter_code - a_ascii) + shift_amount) % alphabet_size) - - # Convierte el número ASCII al carácter o letra - decoded_letter = chr(true_letter_code) - - # Devuelve la carta decodificada - return decoded_letter - -# Definir una función para encontrar la verdad en un mensaje secreto -# Cambia las letras de una palabra en una cantidad específica para descubrir la palabra oculta -def lasso_word( word, shift_amount ): - - # Esta variable se actualiza cada vez que se decodifica otra letra - decoded_word = "" - - # Este ciclo for itera a través de cada letra en el parámetro de palabra - for letter in word: - # La función lasso_letter() se invoca con cada letra y la cantidad de cambio - # El resultado (la letra decodificada) se almacena en una variable llamada decoded_letter - decoded_letter = lasso_letter(letter, shift_amount) - - # El valor decoded_letter se agrega al final del valor decoded_word - decoded_word = decoded_word + decoded_letter - - # La palabra decodificada se devuelve a la línea de código que invocó esta función - return decoded_word - -# Intenta decodificar la palabra "terra" -print( "Shifting terra by 13 gives: \n" + lasso_word( "terra", 13 ) ) - -'''__________________________________________________________________________________________________________ -***EJERCICIO: USO DEL DESCODIFICADOR Lasso PARA MOSTRAR EL MENSAJE SECRETO+++ -Este es el mensaje secreto que debe descifrar: -(Vease la imagen en la carpeta de archivos en el repositorio) - -Después de nuestro análisis en este módulo, esto es lo que debe hacer para descodificar el mensaje: - -La palabra "Ncevy" debe desplazarse 13 veces. -La palabra "gpvsui" debe desplazarse 25 veces. -La palabra "ugflgkg" debe desplazarse 18 veces. -La palabra "wjmmf" debe desplazarse 1 vez. - -***Adición de instrucciones print*** - -Al igual que cuando probó la función lasso_word() en la palabra "terra" y la desplazó 13 veces, -puede agregar instrucciones print() a la parte inferior del archivo decrypt.py para imprimir todas las palabras descodificadas. -''' - -print( "Shifting Ncevy by 13 gives: \n" + lasso_word( "Ncevy", 13 ) ) -print( "Shifting gpvsui by 25 gives: \n" + lasso_word( "gpvsui", 25 ) ) -print( "Shifting ugflgkg by -18 gives: \n" + lasso_word( "ugflgkg", -18 ) ) -print( "Shifting wjmmf by -1 gives: \n" + lasso_word( "wjmmf", -1 ) ) - + +print("Hello, cotosoville!") #Usar 'print' para imprimir texto +#This is a comment that won't be interpreted as a command. +#Associate variable town with the value "contosoville" +town = "Contosoville" #asignar la palabara 'Contosoville' a una variable Town + +#prnt a massage about the secret location +print("The tow I am looking for is " + town) #Imprime la leyenda + la ciudad desde la variable + +#Define a power (function) to chant a phrase +def chant( phrase ): #Define una función tipo chant llamada ('phrase') + #Glue three copies together and prnt it as a massage + print( phrase + phrase + phrase) #Imprime tres veces la función 'phrase' + +# Invoke the power to chant on the phrase "contosoville!" +chant( "Contosoville!") + +def lasso_letter( letter, shift_amoount ): #Define una función llama 'Lasso_letter' (letra, número a sumar) + letter_cod = ord(letter.lower()) #Asigna a la función 'letter_cod = ord(letter.lower()). la función ord() para convertir la letra a a su código ASCII, + + +#Cálculo de un carácter descodificcado: Manera sencilla +'''Ahora es el momento de calcular el nuevo carácter. En primer lugar, revise el ejemplo original. +Si empieza con la letra a y quiere obtener la letra c, siga estos pasos:''' +def lasso_letter( letter, shift_amount ): #Asegúrese de que el valor pasado al parámetro letter está en minúsculas llamando a .lower(). En este caso, la letra que se pasa es a, de modo que .lower() la conservará como a. + letter_code = ord(letter.lower()) #Use la función ord() para convertir la letra a a su código ASCII, 97. Guarde el valor de código 97 en la variable letter_code. + decoded_letter_code = letter_code + shift_amount #Agregue un valor shift_amount de 2 al valor letter_code de 97 para obtener el nuevo valor de número: 99. Almacene el valor 99 en la variable decoded_letter_code. + decoded_letter = chr(decoded_letter_code) #Use la función chr() para descodificar el valor numérico 99 en un carácter para obtener c. (La función chr() simplemente hace lo contrario a la función ord()). Almacene el valor descodificado c en la variable decoded_letter. + return decoded_letter #Devuelva el valor de decoded_letter: c. +#print(lasso_letter('a',2)) #Intente llamar a esta función mediante el ejemplo anterior para ver si funciona como se espera: +'''Aunque este ejemplo funciona, hay un problema al llegar al final del alfabeto. +Veamos lo que sucedería si ejecutara este código con la primera letra del mensaje secreto real, +N, y la cantidad de desplazamiento, 13.''' +#print(lasso_letter('N',13)) + +#Para recorrer el alfabeto de forma sencilla, necesita un operador especial llamado mod, que es el signo de porcentaje (%). +three_two = 3 % 2 +eleven_four = 11 % 4 +five_ten = 5 % 10 + +print(three_two) +print(eleven_four) +print(five_ten) + +''' +#CÁLCULO DE UN CARÁCTER DECODIFICADO: LA MANERA CORRECTA +Con el operador mod en mente, necesita dos variables nuevas: + +a_ascii: contiene el valor de código ASCII de la letra "a". Para obtener este valor, se llama a la función ord('a') y se pasa la letra. +alphabet_size: contiene el número de letras del alfabeto, 26. +Esta es la fórmula para averiguar el valor true_letter_code: + +*** a_ascii + (((letter_code - a_ascii) + shift_amount) % alphabet_size) *** + +Puede revisar esta fórmula con un par de ejemplos. +________________________________________________________________________________________________________ +/* Ejemplo 1: letra "a" y desplazamiento de 2 */ + +Comience con estos dos valores: + +letter = 'a' +shift_amount = 2 + +Variable Fórmula Value +letter "a" +shift_amount 2 +letter_code ord('a') 97 +a_ascii ord('a') 97 +alphabet_size 26 +true_letter_code 97 + (((97 - 97) + 2) % 26) 2 Nota: consulte la explicación detallada de este cálculo después de la tabla. +decoded_letter chr(99) c + +Puede revisar la fórmula de true_letter_code del mismo modo que cualquier otra fórmula matemática. +Siga PEMDAS, donde se evalúa una expresión matemática en el orden de paréntesis, exponentes, multiplicación, +división, suma y resta. + +a_ascii + (((letter_code - a_ascii) + shift_amount) % alphabet_size) + +97 + (((97 - 97) + 2) % 26) +97 + ((0 + 2) % 26) +97 + (2 % 26) +97 + 2 +99 + +decoded_letter chr(99) = 'c' +_______________________________________________________________________________________________________ +/* Ejemplo 1: letra "a" y desplazamiento de 2 */ + +Ejemplo 2: letra "N" y desplazamiento de 13 +Comience con estos dos valores: + +letter = 'N' +shift_amount = 13 + +Variable Fórmula Value +letter 'N' +shift_amount 13 +letter_code ord('n') 110 +a_ascii ord('a') 97 +alphabet_size 26 +true_letter_code 97 + (((110 - 97) + 13) % 26) 97 Nota: consulte la explicación detallada de este cálculo después de la tabla. +decoded_letter chr(97) a + +Puede revisar la fórmula de true_letter_code del mismo modo que cualquier otra fórmula matemática +(acuérdese de PEMDAS): + +a_ascii + (((letter_code - a_ascii) + shift_amount) % alphabet_size) + +97 + (((110 - 97) + 13) % 26) +97 + ((13 + 13) % 26) +97 + (26 % 26) +97 + 0 +97 +''' + +''' +___________________________________________________________________________________________________________ +Código final +Ahora que tiene la fórmula del descodificador, puede colocarla en su función. +''' +# Definir una función para encontrar la verdad cambiando la letra por la cantidad especificada +def lasso_letter( letter, shift_amount ): + + # Invoque la función ord para traducir la letra a su código ASCII + # Guarda el código en la variable letter_code + letter_code = ord(letter.lower()) + + # La representación numérica ASCII de la letra minúscula 'a' + a_ascii = ord('a') + + # El número de letras en el alfabeto + alphabet_size = 26 + + # La fórmula para calcular el número ASCII de la letra decodificada + # Tenga en cuenta el bucle alrededor del alfabeto + true_letter_code = a_ascii + (((letter_code - a_ascii)+ shift_amount) % alphabet_size) + + # Convierte el número ASCII al carácter o letra + decoded_letter = chr(true_letter_code) + + # Devuelve la carta decodificada + return decoded_letter +print(lasso_letter('a', 2)) + +'''_____________________________________________________________________________________________________ +/* Ejercicio: Descodificación de una palabra completa con un cifrado César */ + +Ahora que sabe cómo descodificar una letra dada una cantidad de desplazamiento determinada, +puede descodificar palabras y frases enteras. +Para descifrar una palabra completa, debe invocar la función lasso_letter() para cada letra de la palabra. +A continuación, coloque todas las letras descodificadas en una palabra descodificada. + +Esta vez, escribirá una función denominada lasso_word() que tiene dos parámetros: word y shift_amount. +''' +def lasso_word( word, shift_amount ): + + ''' + Palabras como colecciones de letras + Una manera de pensar en las palabras es que son solo colecciones de letras. + Por ejemplo, puede pensar en la palabra "Hola" como: + + #"H" - "o" - "l" - "a" + + Una variable puede ser un nombre para un fragmento de datos: una palabra, + una letra, una fórmula, una función, y así sucesivamente. Python tiene muchas maneras de representar + colecciones de datos. Una manera es con una lista. + + Una lista es exactamente lo que parece. Una palabra se puede considerar una lista de letras. + Aún mejor: Python tiene una manera de recorrer en bucle cada elemento de una lista de uno en uno. + + Iteración de una lista con un bucle for + Dado que desea invocar la función lasso_letter() en cada letra, + debe recorrer en bucle cada letra de la palabra que está intentando descodificar. + ''' + + '''_____________________________________________________________________________________________________ + Iteración de una lista con un bucle for + Dado que desea invocar la función lasso_letter() en cada letra, debe recorrer en bucle cada letra de la palabra que está intentando descodificar. + + Esta es la sintaxis de un bucle for: + ''' + #La palabra que se pasa como parámetro se puede considerar una lista de letras. De este modo, puede escribir: + for letter in word: + lasso_letter( letter, shift_amount) + + #Ahora que comprende esta funcionalidad de Python, puede hacer algo en cada letra de una palabra, como invocar la función lasso_letter(). + + '''__________________________________________________________________________________________________ +/* Invocación de la función lasso_letter() */ +Es bastante sencillo invocar la función lasso_letter() en cada letra de una palabra:''' + +def lasso_word( word, shift_amount): + for letter in word: + lasso_letter( letter, shift_amount ) + +#Recuerde que cuando escribió la función lasso_letter(), la última línea de código de la función era la siguiente: +'''Recuerde que cuando escribió la función lasso_latter(), la última línea de código de la función era la siguiente: + +# send the decoded letter back +return decoded_letter + +Este código se denomina una instrucción "return". +Esta instrucción devuelve el valor a la línea que invocó la función. +Para capturar ese valor devuelto, lo único que tiene que hacer es usar una variable: +''' +def lasso_word( word, shif_amount): + + for letter in word: + decoded_letter = lasso_letter(letter, shif_amount) +#Ahora va a invocar una función que escribió, lasso_letter(), desde una nueva función que va a escribir ahora: lasso_word(). + +'''___________________________________________________________________________________________________________ + +***Disposición de letras juntas*** +Con el código que acaba de escribir, tendrá un valor en la variable decoded_letter. Cuando el bucle se ejecuta de nuevo, la variable se actualiza. + +Puede realizar un seguimiento del código para ver cómo funciona: + +word = "gdkkn" +shift_amount = 1 + +Loop +iteration Valor de Valor de + letter decoded_letter + +1 'g' 'h' +2 'd' 'e' +3 'k' "l" +4 'k' "l" +5 'n' "o" +Se le deja una variable denominada decoded_letter que tiene un valor solo con la letra "o". +Pero lo que quería era una variable denominada decoded_word para tener el valor hello. Recuerde que, +a partir de los conceptos básicos de Python que hemos revisado anteriormente en este módulo, puede usar +el signo más (+) entre dos palabras o letras para combinarlas. + +''' +''' +def lasso_word( word, shift_amount ): + + decoded_word = "" + + for letter in word: + decoded_letter = lasso_letter(letter, shift_amount) + decoded_word = decoded_word + decoded_letter + + return decoded_word +''' +'''Con esté código la palabra completa se almacena ahora en la variable decoded_word. +Puede devolver este valor a la línea donde se invocó esta función. Puede realizar un seguimiento del +código como antes: + +Loop Valor de Valor de Valor de +iteration letter decoded_letter decoded_word +1 'g' 'h' "h" +2 'd' 'e' "he" +3 'k' "l" "hel" +4 'k' "l" "hell" +5 'n' "o" "Hola" +''' +'''__________________________________________________________________________________________________________ +***Creación de comentarios en el código*** + +No olvide agregar comentarios al código, para que sepa exactamente lo que sucede. +(Si vuelve a este ejercicio más adelante, no querrá tener que descifrar su propio código). + +''' + +'''__________________________________________________________________________________________________________ +***Revisión del archivo completo*** +Ahora que ha escrito dos funciones lasso, el archivo completo decrypt.py debe tener este aspecto: +''' + +# Definir una función para encontrar la verdad en un mensaje secreto +# Cambia las letras de una palabra en una cantidad específica para descubrir la palabra oculta + +# Define a function to find the truth by shifting the letter by a specified amount +def lasso_letter( letter, shift_amount ): + # Invoque la función ord para traducir la letra a su código ASCII + # Guarda el valor del código en la variable llamada letter_code + letter_code = ord(letter.lower()) + + # La representación numérica ASCII de la letra a minúscula + a_ascii = ord('a') + + # El número de letras en el alfabeto + alphabet_size = 26 + + # La fórmula para calcular el número ASCII de la letra decodificada + # Tenga en cuenta el bucle alrededor del alfabeto + true_letter_code = a_ascii + (((letter_code - a_ascii) + shift_amount) % alphabet_size) + + # Convierte el número ASCII al carácter o letra + decoded_letter = chr(true_letter_code) + + # Devuelve la carta decodificada + return decoded_letter + +# Definir una función para encontrar la verdad en un mensaje secreto +# Cambia las letras de una palabra en una cantidad específica para descubrir la palabra oculta +def lasso_word( word, shift_amount ): + + # Esta variable se actualiza cada vez que se decodifica otra letra + decoded_word = "" + + # Este ciclo for itera a través de cada letra en el parámetro de palabra + for letter in word: + # La función lasso_letter() se invoca con cada letra y la cantidad de cambio + # El resultado (la letra decodificada) se almacena en una variable llamada decoded_letter + decoded_letter = lasso_letter(letter, shift_amount) + + # El valor decoded_letter se agrega al final del valor decoded_word + decoded_word = decoded_word + decoded_letter + + # La palabra decodificada se devuelve a la línea de código que invocó esta función + return decoded_word + +# Intenta decodificar la palabra "terra" +print( "Shifting terra by 13 gives: \n" + lasso_word( "terra", 13 ) ) + +'''__________________________________________________________________________________________________________ +***EJERCICIO: USO DEL DESCODIFICADOR Lasso PARA MOSTRAR EL MENSAJE SECRETO+++ +Este es el mensaje secreto que debe descifrar: +(Vease la imagen en la carpeta de archivos en el repositorio) + +Después de nuestro análisis en este módulo, esto es lo que debe hacer para descodificar el mensaje: + +La palabra "Ncevy" debe desplazarse 13 veces. +La palabra "gpvsui" debe desplazarse 25 veces. +La palabra "ugflgkg" debe desplazarse 18 veces. +La palabra "wjmmf" debe desplazarse 1 vez. + +***Adición de instrucciones print*** + +Al igual que cuando probó la función lasso_word() en la palabra "terra" y la desplazó 13 veces, +puede agregar instrucciones print() a la parte inferior del archivo decrypt.py para imprimir todas las palabras descodificadas. +''' + +print( "Shifting Ncevy by 13 gives: \n" + lasso_word( "Ncevy", 13 ) ) +print( "Shifting gpvsui by 25 gives: \n" + lasso_word( "gpvsui", 25 ) ) +print( "Shifting ugflgkg by -18 gives: \n" + lasso_word( "ugflgkg", -18 ) ) +print( "Shifting wjmmf by -1 gives: \n" + lasso_word( "wjmmf", -1 ) ) + '''Este código pertenece a Descifrado de código y revelación de un secreto con Python y Visual Studio Code de Learn Microsoft''' \ No newline at end of file diff --git a/ship-manual.ipynb b/ship-manual.ipynb deleted file mode 100644 index ac1a9d3..0000000 --- a/ship-manual.ipynb +++ /dev/null @@ -1,355 +0,0 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Ship's Instruction Manual" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "e5918d4047234338ae86732c073c91f1", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "ToggleButton(value=False, button_style='success', description='Start Engine', icon='rocket', tooltip='Engage y…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "a69dd1f5d02c48ea8a6324e06f4b8a8c", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Output()" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import ipywidgets as widgets\n", - "\n", - "ignition = widgets.ToggleButton(\n", - " value=False,\n", - " description='Start Engine',\n", - " button_style='success',\n", - " tooltip='Engage your Engine',\n", - " icon='rocket'\n", - ")\n", - "\n", - "output = widgets.Output()\n", - "\n", - "display(ignition, output)\n", - "\n", - "def on_value_change(change):\n", - " with output:\n", - " if change['new'] == True:\n", - " print(\"engine started!\")\n", - " else: \n", - " print(\"engine stopped\")\n", - "\n", - "ignition.observe(on_value_change, names='value')" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Oxygen levels\n", - "\n", - "Display ten minutes of oxygen levels in your ship." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGdCAYAAABO2DpVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAATdUlEQVR4nO3df6jVhf3H8bde5/Eurs7crlPUdDEwf7R0V2NeaBtJIzQWjLbAQAzG2K6pCbJ7N0zE6dWxiaCbpmxNmGbBkFpRQxzpXBN/ZSTbdCNqF8NsLO4tg7O493z/2L6X3czqXN/3ns7x8YDPH/fTOZ5Xh4s++Zxz7xlSKpVKAQCQYGilBwAAtUNYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphg32A/b09MRrr70WDQ0NMWTIkMF+eACgH0qlUrz11lsxfvz4GDr0ytclBj0sXnvttZg4ceJgPywAkKCjoyMmTJhwxf8+6GHR0NAQEf8ZNnLkyMF+eACgH7q6umLixIm9/45fyaCHxf+//DFy5EhhAQBV5sPexuDNmwBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQZ9I9NB4D3mtz6dKUnXOaVjQsqPaEquWIBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAGmEBAKQRFgBAmrLCoru7O1avXh1TpkyJ+vr6uPHGG2PdunVRKpUGah8AUEWGlXPjTZs2xfbt22P37t0xffr0OHHiRCxZsiRGjRoVy5YtG6iNAECVKCssnn/++fj6178eCxYsiIiIyZMnx6OPPhrHjh0bkHEAQHUp66WQefPmxcGDB+PcuXMREfHiiy/GkSNH4s4777zifYrFYnR1dfU5AIDaVNYVi9bW1ujq6oqpU6dGXV1ddHd3x/r162PRokVXvE97e3usXbv2qocCAB9/ZV2xePzxx2PPnj2xd+/eOHXqVOzevTt+8pOfxO7du694n7a2tujs7Ow9Ojo6rno0APDxVNYVi1WrVkVra2vce++9ERExc+bMePXVV6O9vT0WL178vvcpFApRKBSufikA8LFX1hWLd955J4YO7XuXurq66OnpSR0FAFSnsq5Y3HXXXbF+/fqYNGlSTJ8+PV544YXYvHlz3H///QO1DwCoImWFxdatW2P16tXxve99Ly5evBjjx4+P73znO/HQQw8N1D4AoIqUFRYNDQ2xZcuW2LJlywDNAQCqmc8KAQDSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSDKv0AKrX5NanKz3hMq9sXFDpCbyH7xO4trhiAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkKTsszp8/H/fdd1+MGTMm6uvrY+bMmXHixImB2AYAVJlh5dz4zTffjObm5vjqV78azzzzTHzmM5+Jv/3tbzF69OiB2gcAVJGywmLTpk0xceLEeOSRR3rPTZkyJX0UAFCdynop5Mknn4ympqa45557orGxMWbNmhW7du0aqG0AQJUpKyxefvnl2L59e3z+85+P3/3ud/Hd7343li1bFrt3777ifYrFYnR1dfU5AIDaVNZLIT09PdHU1BQbNmyIiIhZs2bFmTNnYseOHbF48eL3vU97e3usXbv26pd+BJNbnx6UxynHKxsXVHoC0A/V+vdJte6mdpR1xWLcuHExbdq0Puduuumm+Mc//nHF+7S1tUVnZ2fv0dHR0b+lAMDHXllXLJqbm+Ps2bN9zp07dy5uuOGGK96nUChEoVDo3zoAoKqUdcXiwQcfjKNHj8aGDRvi73//e+zduzd27twZLS0tA7UPAKgiZYXFnDlzYv/+/fHoo4/GjBkzYt26dbFly5ZYtGjRQO0DAKpIWS+FREQsXLgwFi5cOBBbAIAq57NCAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASCMsAIA0wgIASHNVYbFx48YYMmRIrFixImkOAFDN+h0Wx48fj4cffjhuvvnmzD0AQBXrV1i8/fbbsWjRoti1a1eMHj06exMAUKX6FRYtLS2xYMGCmD9//ofetlgsRldXV58DAKhNw8q9w759++LUqVNx/Pjxj3T79vb2WLt2bdnDAIDqU9YVi46Ojli+fHns2bMnRowY8ZHu09bWFp2dnb1HR0dHv4YCAB9/ZV2xOHnyZFy8eDFmz57de667uzsOHz4c27Zti2KxGHV1dX3uUygUolAo5KwFAD7WygqL22+/PV566aU+55YsWRJTp06N73//+5dFBQBwbSkrLBoaGmLGjBl9zl133XUxZsyYy84DANcev3kTAEhT9k+FvNdzzz2XMAMAqAWuWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBmWKUHwGCb3Pp0pSdc5pWNCyo9AegHf59czhULACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0ggLACCNsAAA0pQVFu3t7TFnzpxoaGiIxsbGuPvuu+Ps2bMDtQ0AqDJlhcWhQ4eipaUljh49GgcOHIh333037rjjjrh06dJA7QMAqsiwcm787LPP9vn6V7/6VTQ2NsbJkyfjtttuSx0GAFSfssLivTo7OyMi4vrrr7/ibYrFYhSLxd6vu7q6ruYhAYCPsX6HRU9PT6xYsSKam5tjxowZV7xde3t7rF27tr8Pc02Y3Pp0pSdc5pWNCyo9gffwfQJUg37/VEhLS0ucOXMm9u3b94G3a2tri87Ozt6jo6Ojvw8JAHzM9euKxdKlS+Opp56Kw4cPx4QJEz7wtoVCIQqFQr/GAQDVpaywKJVK8cADD8T+/fvjueeeiylTpgzULgCgCpUVFi0tLbF379544oknoqGhIS5cuBAREaNGjYr6+voBGQgAVI+y3mOxffv26OzsjK985Ssxbty43uOxxx4bqH0AQBUp+6UQAIAr8VkhAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAECafoXFz372s5g8eXKMGDEibr311jh27Fj2LgCgCpUdFo899lisXLky1qxZE6dOnYovfOEL8bWvfS0uXrw4EPsAgCpSdlhs3rw5vv3tb8eSJUti2rRpsWPHjvjkJz8Zv/zlLwdiHwBQRYaVc+N///vfcfLkyWhra+s9N3To0Jg/f3786U9/et/7FIvFKBaLvV93dnZGRERXV1d/9n6gnuI76X/m1foo/59257F7cNk9uOweXLW8+2r+3FKp9ME3LJXh/PnzpYgoPf/8833Or1q1qjR37tz3vc+aNWtKEeFwOBwOh6MGjo6Ojg9shbKuWPRHW1tbrFy5svfrnp6e+Ne//hVjxoyJIUOGDPTD90tXV1dMnDgxOjo6YuTIkZWeU/M834PL8z24PN+Dy/M9cEqlUrz11lsxfvz4D7xdWWHx6U9/Ourq6uL111/vc/7111+Pz372s+97n0KhEIVCoc+5T33qU+U8bMWMHDnSN+Yg8nwPLs/34PJ8Dy7P98AYNWrUh96mrDdvDh8+PL74xS/GwYMHe8/19PTEwYMH40tf+lL5CwGAmlL2SyErV66MxYsXR1NTU8ydOze2bNkSly5diiVLlgzEPgCgipQdFt/61rfijTfeiIceeiguXLgQt9xySzz77LMxduzYgdhXEYVCIdasWXPZSzgMDM/34PJ8Dy7P9+DyfFfekNKH/twIAMBH47NCAIA0wgIASCMsAIA0wgIASCMs3sNHwg+O9vb2mDNnTjQ0NERjY2Pcfffdcfbs2UrPumZs3LgxhgwZEitWrKj0lJp1/vz5uO+++2LMmDFRX18fM2fOjBMnTlR6Vk3q7u6O1atXx5QpU6K+vj5uvPHGWLdu3Yd/pgUDQlj8Dx8JP3gOHToULS0tcfTo0Thw4EC8++67cccdd8SlS5cqPa3mHT9+PB5++OG4+eabKz2lZr355pvR3Nwcn/jEJ+KZZ56JP//5z/HTn/40Ro8eXelpNWnTpk2xffv22LZtW/zlL3+JTZs2xY9//OPYunVrpaddk/y46f+49dZbY86cObFt27aI+M9vFZ04cWI88MAD0draWuF1te2NN96IxsbGOHToUNx2222VnlOz3n777Zg9e3b8/Oc/jx/96Edxyy23xJYtWyo9q+a0trbGH//4x/jDH/5Q6SnXhIULF8bYsWPjF7/4Re+5b3zjG1FfXx+//vWvK7js2uSKxX/9/0fCz58/v/fch30kPHk6OzsjIuL666+v8JLa1tLSEgsWLOjzfU6+J598MpqamuKee+6JxsbGmDVrVuzatavSs2rWvHnz4uDBg3Hu3LmIiHjxxRfjyJEjceedd1Z42bVpwD/dtFr885//jO7u7st+g+jYsWPjr3/9a4VWXRt6enpixYoV0dzcHDNmzKj0nJq1b9++OHXqVBw/frzSU2reyy+/HNu3b4+VK1fGD37wgzh+/HgsW7Yshg8fHosXL670vJrT2toaXV1dMXXq1Kirq4vu7u5Yv359LFq0qNLTrknCgopraWmJM2fOxJEjRyo9pWZ1dHTE8uXL48CBAzFixIhKz6l5PT090dTUFBs2bIiIiFmzZsWZM2dix44dwmIAPP7447Fnz57Yu3dvTJ8+PU6fPh0rVqyI8ePHe74rQFj8V38+Ep6rt3Tp0njqqafi8OHDMWHChErPqVknT56MixcvxuzZs3vPdXd3x+HDh2Pbtm1RLBajrq6uggtry7hx42LatGl9zt10003xm9/8pkKLatuqVauitbU17r333oiImDlzZrz66qvR3t4uLCrAeyz+y0fCD65SqRRLly6N/fv3x+9///uYMmVKpSfVtNtvvz1eeumlOH36dO/R1NQUixYtitOnT4uKZM3NzZf9+PS5c+fihhtuqNCi2vbOO+/E0KF9/zmrq6uLnp6eCi26trli8T98JPzgaWlpib1798YTTzwRDQ0NceHChYiIGDVqVNTX11d4Xe1paGi47P0r1113XYwZM8b7WgbAgw8+GPPmzYsNGzbEN7/5zTh27Fjs3Lkzdu7cWelpNemuu+6K9evXx6RJk2L69OnxwgsvxObNm+P++++v9LRrU4k+tm7dWpo0aVJp+PDhpblz55aOHj1a6Uk1KSLe93jkkUcqPe2a8eUvf7m0fPnySs+oWb/97W9LM2bMKBUKhdLUqVNLO3furPSkmtXV1VVavnx5adKkSaURI0aUPve5z5V++MMflorFYqWnXZP8HgsAII33WAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJDm/wCS/qyOqhi02wAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "data = np.random.default_rng(12345)\n", - "oxy_nums = data.integers(low=0, high=10, size=10)\n", - "\n", - "plt.bar(range(len(oxy_nums)), oxy_nums)\n", - "plt.show()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Ship's velocity\n", - "\n", - "Show the seconds needed to get from 0 to 60 meters per second, given the ship's acceleration in meters per second." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Time to reach desired velocity = 60.0\n" - ] - } - ], - "source": [ - "endVelocity = 600\n", - "starVelocity = 0\n", - "acceleration = 10\n", - "\n", - "time = (endVelocity - starVelocity) / acceleration\n", - "print(\"Time to reach desired velocity =\", time)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collecting matplotlib\n", - " Downloading matplotlib-3.7.1-cp311-cp311-win_amd64.whl (7.6 MB)\n", - " ---------------------------------------- 7.6/7.6 MB 730.9 kB/s eta 0:00:00\n", - "Collecting contourpy>=1.0.1\n", - " Downloading contourpy-1.0.7-cp311-cp311-win_amd64.whl (162 kB)\n", - " ------------------------------------ 163.0/163.0 kB 574.2 kB/s eta 0:00:00\n", - "Collecting cycler>=0.10\n", - " Downloading cycler-0.11.0-py3-none-any.whl (6.4 kB)\n", - "Collecting fonttools>=4.22.0\n", - " Downloading fonttools-4.39.3-py3-none-any.whl (1.0 MB)\n", - " ---------------------------------------- 1.0/1.0 MB 1.2 MB/s eta 0:00:00\n", - "Collecting kiwisolver>=1.0.1\n", - " Downloading kiwisolver-1.4.4-cp311-cp311-win_amd64.whl (55 kB)\n", - " -------------------------------------- 55.4/55.4 kB 180.6 kB/s eta 0:00:00\n", - "Requirement already satisfied: numpy>=1.20 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from matplotlib) (1.24.2)\n", - "Requirement already satisfied: packaging>=20.0 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from matplotlib) (23.0)\n", - "Collecting pillow>=6.2.0\n", - " Downloading Pillow-9.5.0-cp311-cp311-win_amd64.whl (2.5 MB)\n", - " ---------------------------------------- 2.5/2.5 MB 1.3 MB/s eta 0:00:00\n", - "Collecting pyparsing>=2.3.1\n", - " Downloading pyparsing-3.0.9-py3-none-any.whl (98 kB)\n", - " -------------------------------------- 98.3/98.3 kB 800.9 kB/s eta 0:00:00\n", - "Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from matplotlib) (2.8.2)\n", - "Requirement already satisfied: six>=1.5 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n", - "Installing collected packages: pyparsing, pillow, kiwisolver, fonttools, cycler, contourpy, matplotlib\n", - "Successfully installed contourpy-1.0.7 cycler-0.11.0 fonttools-4.39.3 kiwisolver-1.4.4 matplotlib-3.7.1 pillow-9.5.0 pyparsing-3.0.9\n", - "Note: you may need to restart the kernel to use updated packages.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "[notice] A new release of pip available: 22.3.1 -> 23.0.1\n", - "[notice] To update, run: C:\\Users\\addi_\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\\python.exe -m pip install --upgrade pip\n" - ] - } - ], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "pip install matplotlib" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "pip install numpy" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: ipywidgets in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (8.0.6)\n", - "Requirement already satisfied: ipykernel>=4.5.1 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipywidgets) (6.22.0)\n", - "Requirement already satisfied: ipython>=6.1.0 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipywidgets) (8.12.0)\n", - "Requirement already satisfied: traitlets>=4.3.1 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipywidgets) (5.9.0)\n", - "Requirement already satisfied: widgetsnbextension~=4.0.7 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipywidgets) (4.0.7)\n", - "Requirement already satisfied: jupyterlab-widgets~=3.0.7 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipywidgets) (3.0.7)\n", - "Requirement already satisfied: comm>=0.1.1 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (0.1.3)\n", - "Requirement already satisfied: debugpy>=1.6.5 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (1.6.6)\n", - "Requirement already satisfied: jupyter-client>=6.1.12 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (8.1.0)\n", - "Requirement already satisfied: jupyter-core!=5.0.*,>=4.12 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (5.3.0)\n", - "Requirement already satisfied: matplotlib-inline>=0.1 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (0.1.6)\n", - "Requirement already satisfied: nest-asyncio in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (1.5.6)\n", - "Requirement already satisfied: packaging in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (23.0)\n", - "Requirement already satisfied: psutil in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (5.9.4)\n", - "Requirement already satisfied: pyzmq>=20 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (25.0.2)\n", - "Requirement already satisfied: tornado>=6.1 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (6.2)\n", - "Requirement already satisfied: backcall in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (0.2.0)\n", - "Requirement already satisfied: decorator in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\n", - "Requirement already satisfied: jedi>=0.16 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (0.18.2)\n", - "Requirement already satisfied: pickleshare in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (0.7.5)\n", - "Requirement already satisfied: prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (3.0.38)\n", - "Requirement already satisfied: pygments>=2.4.0 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (2.14.0)\n", - "Requirement already satisfied: stack-data in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (0.6.2)\n", - "Requirement already satisfied: colorama in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (0.4.6)\n", - "Requirement already satisfied: parso<0.9.0,>=0.8.0 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\n", - "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets) (2.8.2)\n", - "Requirement already satisfied: platformdirs>=2.5 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from jupyter-core!=5.0.*,>=4.12->ipykernel>=4.5.1->ipywidgets) (3.2.0)\n", - "Requirement already satisfied: pywin32>=300 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from jupyter-core!=5.0.*,>=4.12->ipykernel>=4.5.1->ipywidgets) (306)\n", - "Requirement already satisfied: wcwidth in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30->ipython>=6.1.0->ipywidgets) (0.2.6)\n", - "Requirement already satisfied: executing>=1.2.0 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (1.2.0)\n", - "Requirement already satisfied: asttokens>=2.1.0 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.2.1)\n", - "Requirement already satisfied: pure-eval in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\n", - "Requirement already satisfied: six in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from asttokens>=2.1.0->stack-data->ipython>=6.1.0->ipywidgets) (1.16.0)\n", - "Note: you may need to restart the kernel to use updated packages.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "[notice] A new release of pip available: 22.3.1 -> 23.0.1\n", - "[notice] To update, run: C:\\Users\\addi_\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\\python.exe -m pip install --upgrade pip\n" - ] - } - ], - "source": [ - "pip install ipywidgets" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collecting ipywidgetsNote: you may need to restart the kernel to use updated packages.\n", - "\n", - " Downloading ipywidgets-8.0.6-py3-none-any.whl (138 kB)\n", - " ------------------------------------ 138.3/138.3 kB 684.8 kB/s eta 0:00:00\n", - "Requirement already satisfied: ipykernel>=4.5.1 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipywidgets) (6.22.0)\n", - "Requirement already satisfied: ipython>=6.1.0 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipywidgets) (8.12.0)\n", - "Requirement already satisfied: traitlets>=4.3.1 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipywidgets) (5.9.0)\n", - "Collecting widgetsnbextension~=4.0.7\n", - " Downloading widgetsnbextension-4.0.7-py3-none-any.whl (2.1 MB)\n", - " ---------------------------------------- 2.1/2.1 MB 1.3 MB/s eta 0:00:00\n", - "Collecting jupyterlab-widgets~=3.0.7\n", - " Downloading jupyterlab_widgets-3.0.7-py3-none-any.whl (198 kB)\n", - " -------------------------------------- 198.2/198.2 kB 1.2 MB/s eta 0:00:00\n", - "Requirement already satisfied: comm>=0.1.1 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (0.1.3)\n", - "Requirement already satisfied: debugpy>=1.6.5 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (1.6.6)\n", - "Requirement already satisfied: jupyter-client>=6.1.12 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (8.1.0)\n", - "Requirement already satisfied: jupyter-core!=5.0.*,>=4.12 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (5.3.0)\n", - "Requirement already satisfied: matplotlib-inline>=0.1 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (0.1.6)\n", - "Requirement already satisfied: nest-asyncio in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (1.5.6)\n", - "Requirement already satisfied: packaging in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (23.0)\n", - "Requirement already satisfied: psutil in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (5.9.4)\n", - "Requirement already satisfied: pyzmq>=20 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (25.0.2)\n", - "Requirement already satisfied: tornado>=6.1 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipykernel>=4.5.1->ipywidgets) (6.2)\n", - "Requirement already satisfied: backcall in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (0.2.0)\n", - "Requirement already satisfied: decorator in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\n", - "Requirement already satisfied: jedi>=0.16 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (0.18.2)\n", - "Requirement already satisfied: pickleshare in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (0.7.5)\n", - "Requirement already satisfied: prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (3.0.38)\n", - "Requirement already satisfied: pygments>=2.4.0 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (2.14.0)\n", - "Requirement already satisfied: stack-data in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (0.6.2)\n", - "Requirement already satisfied: colorama in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from ipython>=6.1.0->ipywidgets) (0.4.6)\n", - "Requirement already satisfied: parso<0.9.0,>=0.8.0 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\n", - "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets) (2.8.2)\n", - "Requirement already satisfied: platformdirs>=2.5 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from jupyter-core!=5.0.*,>=4.12->ipykernel>=4.5.1->ipywidgets) (3.2.0)\n", - "Requirement already satisfied: pywin32>=300 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from jupyter-core!=5.0.*,>=4.12->ipykernel>=4.5.1->ipywidgets) (306)\n", - "Requirement already satisfied: wcwidth in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30->ipython>=6.1.0->ipywidgets) (0.2.6)\n", - "Requirement already satisfied: executing>=1.2.0 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (1.2.0)\n", - "Requirement already satisfied: asttokens>=2.1.0 in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.2.1)\n", - "Requirement already satisfied: pure-eval in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\n", - "Requirement already satisfied: six in c:\\users\\addi_\\appdata\\local\\packages\\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\\localcache\\local-packages\\python311\\site-packages (from asttokens>=2.1.0->stack-data->ipython>=6.1.0->ipywidgets) (1.16.0)\n", - "Installing collected packages: widgetsnbextension, jupyterlab-widgets, ipywidgets\n", - "Successfully installed ipywidgets-8.0.6 jupyterlab-widgets-3.0.7 widgetsnbextension-4.0.7\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "[notice] A new release of pip available: 22.3.1 -> 23.0.1\n", - "[notice] To update, run: C:\\Users\\addi_\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\\python.exe -m pip install --upgrade pip\n" - ] - } - ], - "source": [ - "pip install ipywidgets" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.2" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy