Está en la página 1de 6

=> ValueError:

demasiados valores para descomprimir

El error del último ejemplo se puede evitar asignando los valores restantes a un número igual de
variables arbitrarias.

Esta variable ficticia puede tener cualquier nombre, pero es convencional utilizar el guión bajo (_)
para asignar valores no deseados:

a, b, _ = 1, 2, 3 imprimir(a, b)

# Salida: 1, 2

Tenga en cuenta que el número de _ y el número de valores restantes debe ser igual. De lo
contrario, 'demasiados valores para descomprimir error' se arroja como arriba:

a, b, _ = 1,2,3,4

=>Rastreo (última llamada más reciente): =>Archivo "nombre.py", línea N, en <módulo > =>a, b, _
= 1,2

,3,4 =>ValueError:

Demasiados valores para descomprimir (se esperaban 3)

También puedes asignar un único valor a varias variables simultáneamente.

imprimir(a, b, c)

# Salida: 1 1 1

Cuando se utiliza dicha asignación en cascada, es importante tener en cuenta que las tres variables
a , byc se refieren al mismo objeto en la memoria, un objeto int con el valor de 1. En otras
palabras, a , byc son tres nombres diferentes . dado al mismo objeto int. Asignar posteriormente
un objeto diferente a uno de ellos no cambia los demás, tal como se esperaba:

a = b = c = 1 imprimir(a, b, c)

# Salida: 1 1 1 b = 2 print(a,

b, c)

# los tres nombres a, byc se refieren al mismo objeto int con valor 1

# b ahora se refiere a otro objeto int, uno con un valor de 2

# Salida: 1 2 1 # por lo que la salida es la esperada.

Lo anterior también es válido para tipos mutables (como list, dict, etc.), al igual que para tipos
inmutables (como int, string, tuple, etc.):
x = y = [7, 8, 9] # xey se refieren al mismo objeto de lista recién creado, [7, 8, 9] x = [13, 8, 9] # x
ahora se refiere a un objeto de lista diferente creado, [13, 8, 9] print(y) # y todavía se refiere a la
lista a la que se le asignó por primera vez

# Salida: [7, 8, 9]

Hasta ahora, todo bien. Las cosas son un poco diferentes cuando se trata de modificar el objeto (en
contraste con asignar el nombre a un objeto diferente, lo que hicimos anteriormente) cuando la
asignación en cascada se usa para tipos mutables. Echa un vistazo a continuación y lo verás de
primera mano:

x = y = [7, 8, 9] 8, 9] x[0] =

13 en este caso print(y) #

# xey son dos nombres diferentes para el mismo objeto de lista recién creado, [7,

# estamos actualizando el valor de la lista [7, 8, 9] a través de uno de sus nombres, x

imprimiendo el valor de la lista usando su otro nombre

# Salida: [13, 8, 9] # por lo tanto, naturalmente el cambio se refleja

Las listas anidadas también son válidas en Python. Esto significa que una lista puede contener otra
lista como elemento.

x = [1, 2, [3, 4, 5], 6, 7] # esta es una lista anidada print x[2]

# Salida: [3, 4, 5] imprimir x[2][1]

# Salida: 4

Por último, las variables en Python no tienen que permanecer del mismo tipo que se definieron
por primera vez; simplemente puede usar = para asignar un nuevo valor a una variable, incluso si
ese valor es de un tipo diferente.

un = 2

imprimir(un)

# Salida: 2

a = "Nuevo valor" print(a)

# Salida: Nuevo valor

Si esto te molesta, piensa en el hecho de que lo que hay a la izquierda de = es sólo el nombre de un
objeto. Primero llamas al objeto int con valor 2 a, luego cambias de opinión y decides darle el
nombre a a un objeto de cadena, que tiene el valor 'Nuevo valor'. Sencillo, ¿verdad?
>>> capitales_estado['Alabama'] Rastreo (llamadas recientes más última):

Archivo "<ipythoninput61236329695e6f>", línea 1, en <módulo> state_capitals['Alabama']

Error clave: 'Alabama'

Intentemos con un defaultdict. Se puede encontrar en el módulo de colecciones.

>>> de colecciones importar defaultdict >>> state_capitals = defaultdict(lambda: 'Boston')

Lo que hicimos aquí es establecer un valor predeterminado (Boston) en caso de que la clave
proporcionada no exista. Ahora complete el dict como antes:

>>> state_capitals['Arkansas'] = 'Little Rock' >>> state_capitals['California'] = 'Sacramento' >>>


state_capitals['Colorado'] = 'Denver' >>> state_capitals['Georgia'] = 'Atlanta'

Si intentamos acceder al dict con una clave inexistente, Python nos devolverá el valor
predeterminado, es decir, Boston.

>>> capitales_estado['Alabama'] 'Bostón'

y devuelve los valores creados para la clave existente como un diccionario normal

>>> capitales_estado['Arkansas']

'Roca pequeña'

Sección 1.6: IDLE GUI de Python

IDLE es el entorno integrado de desarrollo y aprendizaje de Python y es una alternativa a la línea


de comandos. Como su nombre lo indica, IDLE es muy útil para desarrollar código nuevo o
aprender Python. En Windows, esto viene con el intérprete de Python, pero en otros sistemas
operativos es posible que necesites instalarlo a través del administrador de paquetes.

Los principales propósitos de IDLE son:

Editor de texto de múltiples ventanas con resaltado de sintaxis, autocompletado y sangría


inteligente Shell de Python con resaltado de sintaxis

Depurador integrado con pasos, puntos de interrupción persistentes y visibilidad de la pila de


llamadas Sangría automática (útil para principiantes que aprenden sobre la sangría de Python)

Guarde el programa Python como archivos .py, ejecútelos y edítelos más tarde en cualquier lugar
usando IDLE.
En IDLE, presione F5 o ejecute Python Shell para iniciar un intérprete. Usar IDLE puede ser una
mejor experiencia de aprendizaje para los nuevos usuarios porque el código se interpreta a medida
que el usuario escribe.

Tenga en cuenta que hay muchas alternativas; consulte, por ejemplo, esta discusión. o esta lista.

Solución de problemas

ventanas

Si estás en Windows, el comando predeterminado es Python. Si recibe un error "No se reconoce


'python'" , la causa más probable es que la ubicación de Python no esté en la variable de entorno
PATH de su sistema . Se puede acceder a él haciendo clic derecho en "Mi PC" y seleccionando
"Propiedades" o navegando a "Sistema" a través del "Panel de control". Haga clic en 'Configuración
avanzada del sistema'

y luego en 'Variables de entorno...'. Edite la variable PATH para incluir el directorio de su instalación
de Python, así como la carpeta Script (generalmente C:\Python27;C:\Python27\Scripts). Esto
requiere privilegios administrativos y puede requerir un

reinicio.

Cuando se utilizan varias versiones de Python en la misma máquina, una posible solución es
cambiar el nombre de uno de los archivos python.exe . Por ejemplo, nombrar una versión
python27.exe haría que python27 se convirtiera en el comando de Python para esa versión.

También puede utilizar Python Launcher para Windows, que está disponible a través del instalador
y viene de forma predeterminada. Le permite seleccionar la versión de Python para ejecutar
usando py [xy] en lugar de python[xy]. Puede utilizar la última versión de Python 2 ejecutando
scripts con py 2 y la última versión de Python 3 ejecutando scripts con py 3.

Debian/Ubuntu/MacOS

Esta sección asume que la ubicación del ejecutable de Python se ha agregado a la variable de
entorno PATH .

Si está en Debian/Ubuntu/MacOS, abra la terminal y escriba python para Python 2.x o python3
para Python 3.x.

Escriba qué Python para ver qué intérprete de Python se utilizará.

Arco Linux

El Python predeterminado en Arch Linux (y descendientes) es Python 3, así que use python o
python3 para Python 3.x y python2 para Python 2.x.

Otros sistemas

Python 3 a veces está vinculado a python en lugar de python3. Para usar Python 2 en estos
sistemas donde está instalado, puede usar python2.
Sección 1.7: Entrada del usuario

Entrada interactiva

Para obtener información del usuario, use la función de entrada (nota: en Python 2.x, la función se
llama raw_input , aunque Python 2.x tiene su propia versión de entrada eso es completamente
diferente):

Python 2.x Versión 2.3 nombre

= raw_input("¿Cuál es tu nombre? ")

# Fuera: ¿Cómo te llamas? _

Observación de seguridad No utilice input() en Python2: el texto ingresado se evaluará como si


fuera una expresión de Python (equivalente a eval(input()) en Python3), lo que podría convertirse
fácilmente en una vulnerabilidad.

Ver este artículo para obtener más información sobre los riesgos de utilizar esta función.

Python 3.x Versión 3.0 nombre

= entrada ("¿Cuál es tu nombre? ")

# Fuera: ¿Cómo te llamas? _

El resto de este ejemplo utilizará la sintaxis de Python 3.

La función toma un argumento de cadena, que lo muestra como un mensaje y devuelve una
cadena. El código anterior proporciona un mensaje, esperando que el usuario ingrese.

nombre = entrada("¿Cuál es tu nombre? ") # Fuera: ¿Cómo te llamas?

Si el usuario escribe "Bob" y presiona Enter, el nombre de la variable se asignará a la cadena "Bob":

nombre = entrada("¿Cuál es tu nombre? ") # Fuera: ¿Cómo te llamas? Bob imprimir (nombre)

# Fuera: Bob

Tenga en cuenta que la entrada siempre es de tipo str, lo cual es importante si desea que el usuario
ingrese números. Por lo tanto, necesitas convertir la cadena antes de intentar usarla como un
número:

x = entrada("Escribe un número:")

# Salida: Escribe un número: 10 x / 2 # Salida:

TypeError: tipos de operandos no admitidos para /: 'str' y 'int' float(x) / 2 # Salida: 5.0
NB: Se recomienda utilizar bloques try/except para detectar excepciones al tratar con entradas de
usuario. Por ejemplo, si su código quiere convertir un raw_input en un int, y lo que el usuario
escribe no se puede convertir, genera un ValueError.

Sección 1.8: Módulos y funciones integrados

Un módulo es un archivo que contiene definiciones y declaraciones de Python. La función es un


fragmento de código que ejecuta cierta lógica.

>>> potencia(2,3) #8

Para verificar la función incorporada en Python podemos usar dir(). Si se llama sin argumento,
devuelve los nombres en el ámbito actual. De

También podría gustarte