Temas obsoletos

Estas son las lecciones que tratan aspectos de Python que he dejado de explicar en clase porque han quedado "viejos" o se pueden abordar de una forma más "moderna".

La función print() con varios argumentos

La función print() muestra los argumentos separados por espacios, lo que a veces no es conveniente. En el ejemplo siguiente el signo de exclamación se muestra separado de la palabra.

nombre = "Pepe"
print("¡Hola,", nombre, "!")
¡Hola, Pepe !

Antes de Python 3.6, que introdujo las cadenas "f", para eliminar ese espacio, se tenía que (y se puede seguir haciendo) concatenar texto y variables con el operador suma (+):

nombre = "Pepe"
print("¡Hola,", nombre + "!")
print("¡Hola, " + nombre + "!")
¡Hola, Pepe!
¡Hola, Pepe!

Pero hay que tener cuidado, porque no se pueden concatenar cadenas y números con el operador suma (+):

fecha = 2017
print("¡Feliz " + fecha + "!")
Traceback (most recent call last):
  File "ejemplo.py", line 2, in <module>
    print("¡Feliz " + fecha + "!")
TypeError: Can't convert 'int' object to str
implicitly

En este caso, hay que convertir los números a cadenas con la función str() antes de concatenarlos:

fecha = 2017
print("¡Feliz", fecha, "!")
print("¡Feliz", str(fecha) + "!")
print("¡Feliz " + str(fecha) + "!")
¡Feliz 2017 !
¡Feliz 2017!
¡Feliz 2017!

Incluir variables como argumento de la función input()

La función input() sólo puede tener un argumento. En versiones de Python anteriores a la versión 3.6 esto causaba problemas como en el ejemplo siguiente, en el que se quiere mostrar la respuesta de la primera instrucción en la segunda pregunta:

nombre = input("Dígame su nombre: ")
apellido = input("Dígame su apellido, ", nombre, ": ")
print("Me alegro de conocerle,", nombre, apellido)
Dígame su nombre: Pepito
Traceback (most recent call last):
  File "ejemplo.py", line 2, in <module>
    apellido = input("Dígame su apellido, ", nombre, ": ")
TypeError: input expected at most 1 arguments, got 3

Este problema se puede resolver de varias maneras: