<jupyter_start><jupyter_text>Variables, expresiones y sentencias Una de las características más poderosas en un lenguaje de programación es la capacidad de manipular variables. Una variable es un nombre que se refiere a un valor.La sentencia de asignación crea nuevas variables y les da valores: Este ejemplo hace tres asignaciones. La primera asigna la cadena "¿Que Onda?" a una nueva variable denominada mensaje. La segunda le asigna el entero 17 a n, y la tercera le da el número de punto flotante 3.14159 a pi. No debe confundirse el operador de asignación, =, con el signo de igualdad (aún y cuando se usa el mismo símbolo). El operador de asignación enlaza un nombre, en el lado izquierdo del operador, con un valor en el lado derecho.  Para evaluar una variable, se producirá el valor que está vinculado a la variable:<jupyter_code>print()
print()<jupyter_output><empty_output><jupyter_text>Las variables también tienen tipos; nuevamente, le podemos preguntar al intérprete cuáles son.<jupyter_code>print()
print(type())<jupyter_output><empty_output><jupyter_text>Usamos las variables en un programa para “recordar” las cosas, al igual que la punctuación actual en el partido de fútbol. Sin embargo, las variables son variables. Esto significa que pueden cambiar con el tiempo, al igual que el marcador de un partido de fútbol. Se puede asignar un valor a una variable, y luego asignar un valor diferente a la misma variable. Nombres de variables válidos en Python debe ajustarse a las siguientes tres simples reglas:Son secuencias arbitrariamente largas de letras y dígitos.La secuencia debe empezar con una letra.Además de a..z, y A..Z, el guión bajo (_) es una letra.**Los programadores generalmente escogen nombres significativos para sus variables — que especifiquen para qué se usa la variable.** Nota: Recuerde que las letras mayúsculas importan, Nombre y nombre son variables diferentes.<jupyter_code>Nombre = "Pedro"
nombre = "pedro"
print<jupyter_output><empty_output><jupyter_text>El carácter subrayado (_) puede aparecer en un nombre. A menudo se usa en nombres con múltiples palabras, tales como **mi_nombre** ́ó **precio_de_la_porcelana_en_china.****Hay algunas situaciones en las que los nombres que comienzan con un guión tienen un significado especial,** por lo que una regla segura para los principiantes es empezar todos los nombres con una letra que no sea un guión.<jupyter_code>#Si usted le da un nombre inválido a una variable obtendrá un error de sintaxis:
76trombones = "gran desfile"<jupyter_output><empty_output><jupyter_text>Python tiene treinta y tantas palabras clave ( y todas son mejoradas de vez en cuando para que Python introdusca o elimine una o dos):![image.png](attachment:image.png) Si el intéprete se queja por alguno de sus nombres de variables, y usted no sabe por qué, búsquelo en esta lista. **Caution:**Los principiantes a veces se confunden “con sentido para los lectores humanos” con “significativo de la computadora”. Por lo que ellos erróneamente piensan que porque han llamado algunas variable promedio o pi, de alguna manera automágicamente calcula un promedio, o automágicamente asocia la variable pi con el valor de 3,14159. ¡No! La computadora no se fija el significado semántico de los nombres de las variables.  Evaluación de expresionesUna expresión es una combinación de valores, variables, operadores, y llamadas funciones. Si escribe una expresión en la línea de comandos de python, el intérprete la evalúa y despliega el resultado:<jupyter_code>1+1<jupyter_output><empty_output><jupyter_text>En este ejemplo len es una función integrada de Python que devuelve el número de caracteres de una cadena. Hemos visto anteriormente las funciones de print y el type, por lo que este es nuestro tercer ejemplo de una llamada a función!<jupyter_code>17
y=3.14
x = len("hello")
print()
print()<jupyter_output><empty_output><jupyter_text>Operadores y operandosLos operadores son símbolos especiales que representan cómputos como la suma y la multiplicación. Los valores que el operador usa se denominan operandos.Los siguientes son expresiones válidas en Python cuyo significado es más o menos claro:<jupyter_code>print(  )
print( )
print( )
print(  )
print(  )
print( )<jupyter_output><empty_output><jupyter_text>Los símbolos +, - y *, y los paréntesis para agrupar, significan en Python lo mismo que en matemáticas. El asterisco (*) es el símbolo para la multiplicación, y ** es el símbolo para la potenciación.<jupyter_code>2 ** 3
3**2<jupyter_output><empty_output><jupyter_text>Cuando el nombre de una variable aparece en la posición de un operando, se reemplaza por su valor antes de realizar la operación.La suma, resta, multiplicación y potenciación realizan lo que usted esperaría.  **Ejemplo: convertir 645 minutos en horas:** ¡Uy! En Python 3, el operador de división / siempre da un resultado de punto flotante (float). Lo que hubiera querido saber cuantas horas enteras hay y cuantos minutos quedan. Python nos da dos versiones diferentes del operador de división. La segunda, es llamada división entera utilizando el símbolo //. Siempre se trunca su resultado hasta el número entero inmediatamente inferior (a la izquierda en la recta numérica).<jupyter_code>7 / 4
7 // 4<jupyter_output><empty_output><jupyter_text>Funciones de tipo convertidorAquí vamos a ver otras tres funciones de Python como int, float, y str. que (intenta de) convertir sus argumentos en tipos int, float y str respectivamente. Nostros llamamos funciones de tipo convertidor.La función int puede tomar un número de punto flotante o una cadena, y convertirlo en un int. Para los números de punto flotante, descarta la parte decimal del número - un proceso que llamamos truncamiento a cero en la recta numérica. Vamos a ver esto en acción:<jupyter_code>int(3.14)
int(3.9999) 
 int(3.0)
int(-3.999)
int(minutos/60) #la variable aun conserva el valor. minutos -> 645
int("2345")
int(17)
int("23 bottles")<jupyter_output><empty_output><jupyter_text>El ultimo caso muestra que una cadena tiene que ser un número sintácticamente legal, de lo contrario obtendrá uno de esos molestos errores de ejecución.El convertidor de tipo float puede convertir un número entero, en floar, o una cadena sintácticamente en un float.<jupyter_code>float(17)
float("123.45")

str(17)
str(123.45)<jupyter_output><empty_output><jupyter_text>Orden de las operacionesCuando hay más de un operador en una expresión, el orden de evaluación depende de las reglas de precedencia. Python sigue las mismas reglas de precedencia a las que estamos acostumbrados para sus operadores matemáticos. El acrónimo PPMDAS es útil para recordar el orden de las operaciones:- Los Paréntesis tienen la precedencia más alta y pueden usarse para forzar la evaluación de una expresión en el orden que usted desee. Ya que las expresiones en paréntesis se evalúan primero , 2 * (3-1) es 4, y (1+1)\*\*(5-2) es 8. También puede usar paréntesis para que una expresión quede más legible, como en (minute * 100) / 60, aunque esto no cambie el resultado.- La Exponenciación tiene la siguiente precedencia más alta, así que 2*\*1+1 es 3 y no 4, y 3*1*\*3 es 3 y no 27.- La Multiplicación y División tienen las misma precedencia, que es más alta que la de la Adición y la Subtracción, que también tienen la misma precedencia. Así que 2*3-1 da 5 en lugar de 4, y 5-2*2 es 1, no 6.- Los operadores con la misma precedencia se evalúan de izquierda a derecha. En álgebra nos dicen que están asociados por la izquierda. Así, que en la expresión 6-3+2, la resta se hace primero, produciendo 3. A continuacion, añadiremos 2 para obtener el número 5. Si las operaciones había sido evaluada de derecha a izquierda, el resultado habría sido 6-(3 + 2), que es 1. (La siglas PEDMAS podría inducir un error a pensar que la división tiene mayor precedencia que la multiplicación, y además se lleva a cabo antes de la sustracción - No se deje engañar suma y resta se encuentran en la misma precendencia, y se aplica la regla de izquierda a derecha.)  Operaciones sobre cadenasEn general, usted no puede realizar operaciones matemáticas sobre cadenas, incluso si las cadenas están compuestas por números. Las siguientes operaciones son **inválidas** (suponiendo que mensaje tiene el tipo cadena):<jupyter_code>mensaje="hola"
mensaje-1
"Hola"/123
mensaje*"Hola"
"15"+2<jupyter_output><empty_output><jupyter_text>Sin embargo, el operador + funciona con cadenas, aunque no calcula lo que usted esperaría. Para las cadenas el operador + representa la operación de concatenación, que significa unir los dos operandos enlazándolos en el orden en que aparecen. Por ejemplo:<jupyter_code>bien_cocinado = "pan de nuez y"
fruta = "plátano"
print(bien_cocinado + fruta)<jupyter_output><empty_output><jupyter_text>El operador * también funciona con las cadenas; hace una operación de repetición. Por ejemplo, 'Ja'$*$ 3 resulta en 'JaJaJa'. Uno de los operandos tiene que ser una cadena, el otro tiene que ser un entero.  ComposiciónHasta aquí hemos visto aisladamente los elementos de un programa — variables, expresiones, y sentencias — sin especificar cómo combinarlos.Una de las características más útiles de los lenguajes de programación es su capacidad de tomar pequeños bloques para componer con ellos.Por ejemplo, sabemos cómo hacer que el usuario introduzca alguna entrada (input), sabemos cómo convertir la cadena de entrada en un flotador (float), que sabemos cómo escribir una expresión compleja, y tambien sabemos cómo imprimir los valores. Vamos a poner las fotos en un pequeño programa de cuatro pasos que le pide al usuario que introduzca un valor para el radio de un círculo, y luego calcular el área del círculo de la fórmula$$Area = \pi r^2 $$ En primer lugar, vamos a hacer los cuatro pasos de uno en uno: Ahora vamos a componer las primeras dos líneas en una sola línea de código, y componer las segundas dos líneas en otra línea de código. Si de verdad queremos que se ha complicado, se podría escribir todo en un solo comunicado: Como el código campacto no podrá ser más comprensible para los seres humanos, pero sirve para ilustrar cómo se puede componer grandes pedazos de bloques de nuestro efificio.Si alguna vez le entra la duda sobre si se debe escribir código o fragmento en pasos más pequeños, trate de hacerlo lo más simple posible para el ser humano pueda seguirlo. Mi elección sería el primer caso, con cuatro pasos separados. Ejercicios: - Tome la siguiente oración: *Sólo trabajo y nada de juegos hacen de Juan un niño aburrido.* Almacene cada palabra en variables separadas, después muestre la oración en una sola línea usando la sentencia print.- Incluya paréntesis a la expresión 6 * 1 - 2 para cambiar su resultado de 4 a -6.- Coloque un comentario antes de una línea de código donde había trabajado, y grabe lo que sucede cuando se vuelve a ejecutar el programa.- Inicie el intérprete de Python y escriba bruno + 4 en el indicador. Esto dará un error: Asigne un valor a bruno tal que bruno + 4 de 10. - La fórmula para calcular el importe final si se está ganando el interés compuesto es:![image.png](attachment:image.png)Escriba un programa en Python que asigna la cantidad principal de $100 a la variable p, asigna a n el valor de 12, y asigna a r la tasa de interés del 8% (como un flotador). Luego que el programa pide al usuario el número de años, t, para lo cual se suma el dinero. Calcule e imprimala cantidad final después de t años.<jupyter_code>!open .<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.05223750652968832, 'fraction_numerical': 0.01262406407800801, 'mean_word_length': 5.087440381558029, 'pattern_counts': {'":': 0, '<': 57, '<?xml version=': 0, '>': 58, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '14', 'dir': 'jupyter-structured-clean-dedup', 'id': '471850', 'license': 'MIT', 'n_tokens_mistral': 3738, 'n_tokens_neox': 3690, 'n_words': 1696, 'path': 'Python/02_Variables/VariablesMod.ipynb', 'repo_name': 'RoboticaIndustrial/Robotica_2020', 'size': '11486'}