0% encontró este documento útil (0 votos)
42 vistas

Python 2 Vs Python 3

Este documento compara las principales diferencias entre Python 2 y Python 3. En Python 3, la división entre enteros siempre devuelve un decimal, print es una función, se usa codificación Unicode por defecto, y la función input recibe toda entrada como texto. Estos cambios han mejorado Python pero también han introducido incompatibilidades al migrar código de Python 2 a Python 3.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
42 vistas

Python 2 Vs Python 3

Este documento compara las principales diferencias entre Python 2 y Python 3. En Python 3, la división entre enteros siempre devuelve un decimal, print es una función, se usa codificación Unicode por defecto, y la función input recibe toda entrada como texto. Estos cambios han mejorado Python pero también han introducido incompatibilidades al migrar código de Python 2 a Python 3.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 3

Universidad de Chile

Facultad de Ciencias Físicas y Matemáticas


Departamento de Ciencias de la Computación
CC3001 - Algoritmos y Estructuras de Datos

Python 2 vs Python 3
¿Qué ha cambiado?

Profesores: Jérémy Barbay, Nelson Baloian, Patricio Poblete


Auxiliares: Felipe Lizama, F. Giovanni Sanguineti,
Matías Ramírez, Sven Reisenegger

Para el curso de Introducción a la Programación, trabajamos utilizando Python 2. Esta versión


del lenguaje de programación, que lleva sin actualizarse desde 2018, dejará de tener soporte a contar
del 1 de enero de 2020. La nueva versión de Python, la 3, introdujo una serie de cambios y mejoras
que han hecho cambiar ligeramente la forma en la que escribimos código. En este documento seña-
laremos las más relevantes, para tenerlas en consideración en nuestro trabajo durante el semestre.
Si bien hay varios cambios más de los que se mencionan en este documento, el resto exceden la
utilidad de este curso, por lo que no los abordaremos.

Cambios en la división de enteros


En Python 2, cuando dividíamos dos números enteros entre sí, el resultado siempre era un
entero. En el siguiente ejemplo vemos qué pasa si dividimos 10 entre 3:
1 >>> 10 / 3
2 3

Si queríamos obtener el resultado como un decimal, teníamos que agregar un .0 al número o castearlo
a float.
1 >>> a = 3
2 >>> float (a) / 2
3 1.5
4 >>> 10.0 / 3
5 3.33333333

En Python 3 se ha superado esto: ahora la división entre enteros siempre retornará el resultado
correcto como un decimal.
1 >>> 3 / 2
2 1.5
3 >>> 10 / 3
4 3.33333333

Recuerda que existe la división entera, que nos garantiza obtener siempre un entero truncado
de la división realizada.

Python 2 vs Python 3 1
1 >>> 6 // 7
2 0

Esta diferencia en la división entera es una de las que produce mayores incompatibilidades al portar
aplicaciones escritas en Python 2 a Python 3.

Unicode por defecto


¿Recuerdas que en Python 2 no podías escribir tildes, la letra ’ñ’ y otros caracteres especiales
porque el código no compilaba? Esto se debía a que el tipo de codificación que utilizaba esta versión
de Python, ASCII, no admitía estos caracteres especiales. Ahora, la versión 3 de Python utiliza
la codificación Unicode, que nos permite escribir todas las tildes, eñes, números romanos y emojis
que queramos. Si te interesa revisar la infinidad de caracteres que posee la codificación Unicode,
puedes revisar este enlace.

La función print()
En Python 2, para imprimir, lo hacíamos utilizando print como una declaración o state-
ment:
1 >>> print "La respuesta es" , 2*2
2 La respuesta es 4

En Python 3, esto ha cambiado: ahora print es una función:


1 >>> print("La respuesta es" , 2*2)
2 La respuesta es 4

Puede parecer sencillo, pero ojo, en algunos casos puede ser un poco más complejo. Veamos el
siguiente caso en Python 2:
1 >>> x = 2
2 >>> y = 3
3 >>> print(x,y)
4 (2,3)
5 >>> print x,y
6 2 3

En cambio, en Python 3 tenemos lo siguiente:


1 >>> print(x,y)
2 2 3
3 >>> print ((x,y))
4 (2,3)

Finalmente, podemos introducir separadores de la siguiente forma:


1 >>> print("somos", 55, "personas", sep=" ")
2 somos 55 personas
3 >>> print("somos", 55, "personas", sep="_ ")
4 somos_55_personas

Python 2 vs Python 3 2
input()
¿Recuerdas cómo recibir una entrada desde el usuario de tu programa? Utilizábamos la función
input(), que recibía de forma literal la entrada y la evaluaba en función de su tipo. Esto hacía que
si un usuario tenía que escribir un texto, necesariamente tenía que hacerlo utilizando comillas, o se
producía un error.
1 >>> a = input()
2 hola
3 Traceback (most recent call last ) :
4 File "<stdin>", line 1, in <module>
5 File "<string>", line 1, in <module>
6 NameError: name ’hola’ is not defined
7 >>> a = input()
8 "hola"
9 >>> print a
10 hola

Para evitar estos problemas y otros, utilizábamos otra función: raw_input(), la que trabajaba
toda entrada como texto.
1 >>> a = raw_input()
2 hola
3 >>> print a
4 hola

Por suerte para nosotros, en Python 3 se ha eliminado raw_input(), pero se le ha dado su


funcionalidad al input() normal: ahora input() recibe toda entrada como texto. Si queremos extraer
un número, debemos castearlo.
1 >>> a = input()
2 hola
3 >>> print(a)
4 hola
5 >>> b = input()
6 1234
7 >>> type(b)
8 < class ’ str ’>
9 >>> b + 5
10 Traceback (most recent call last ) :
11 File "<pyshell#3>", line 1, in <module>
12 b+5
13 TypeError: can only concatenate str (not " int ") to str
14 >>> b = int(b) + 5
15 >>> print(b)
16 1239

Python 2 vs Python 3 3

También podría gustarte