tabla - sintaxis python
Python Math-TypeError: el objeto ''NoneType'' no es un subĂndice (3)
En este enlace https://docs.python.org/2/tutorial/datastructures.html puede leer este método "Ordenar los elementos de la lista en su lugar" esto significa que el valor del resultado se ordenará y el resultado estará en sí mismo. La función devuelve Ninguno.
Cuando asigna el resultado a "lista" en la línea 14
lista = list.sort(lista)
tu área configurándolo en Ninguno. Ese es el error. Ninguno siempre tiene datos y no puede ser subscriptable. "TypeError: el objeto ''NoneType'' no es un subíndice"
para corregir este error (para ordenar la lista) haga esto en la línea 14:
lista.sort() # this will sort the list in line
Pero hay algunos otros errores: en la línea 18 cuando asignas:
list = [v2, v4]
Si cliqueas este tipo de "lista", obtendrás el siguiente error:
TypeError: ''list'' object is not callable
Para corregir esto haz eso, di:
lista2 = [v2, v4]
Nuevamente en la línea 19 el mismo error de la línea 14. Haga esto para ordenar la otra lista:
lista2.sort()
En la línea 21 está intentando indexar la lista de tipos incorporada. Para corregir esto:
b = lista2[1] = lista2[0]
Con esto tu código funcionará bien. Finalmente todo el código correcto:
import math
print("The format you should consider:")
print str("value 1a")+str(" + ")+str("value 2")+str(" = ")+str("value 3a ")+str("value 4")+str("/n")
print("Do not include the letters in the input, it automatically adds them")
v1 = input("Value 1: ")
v2 = input("Value 2: ")
v3 = input("Value 3: ")
v4 = input("Value 4: ")
lista = [v1, v3]
lista.sort()
a = lista[1] - lista[0]
lista2 = [v2, v4]
lista2.sort()
b = lista2[1] = lista2[0]
print str(a)+str("a")+str(" = ")+str(b)
Estoy haciendo un pequeño programa para matemáticas (sin ninguna razón en particular, solo que quería) y me encontré con el error "TypeError: el objeto ''NoneType'' no se puede subscribir.
Nunca antes había visto este error, así que no tengo idea de lo que significa.
import math
print("The format you should consider:")
print str("value 1a")+str(" + ")+str("value 2")+str(" = ")+str("value 3a ")+str("value 4")+str("/n")
print("Do not include the letters in the input, it automatically adds them")
v1 = input("Value 1: ")
v2 = input("Value 2: ")
v3 = input("Value 3: ")
v4 = input("Value 4: ")
lista = [v1, v3]
lista = list.sort(lista)
a = lista[1] - lista[0]
list = [v2, v4]
list = list.sort(list)
b = list[1] = list[0]
print str(a)+str("a")+str(" = ")+str(b)
El error:
Traceback (most recent call last):
File "C:/Users/Nathan/Documents/Python/New thing", line 16, in <module>
a = lista[1] - lista[0]
TypeError: ''NoneType'' object is not subscriptable
La excepción TypeError: ''NoneType'' object is not subscriptable
porque el valor de lista
es en realidad None
. Puede reproducir TypeError
que obtiene en su código si lo intenta en la línea de comandos de Python:
None[0]
La razón por la que la lista
se establece en Ninguno es porque el valor de retorno de list.sort()
es None
... no devuelve una copia ordenada de la lista original. En cambio, como señala la documentación , la lista se ordena en lugar de hacer una copia (esto es por razones de eficiencia).
Si no quieres alterar la versión original puedes usar
other_list = sorted(lista)
lista = list.sort(lista)
Esto debería ser
lista.sort()
El método .sort()
está en el lugar y devuelve Ninguno. Si desea algo que no está en el lugar, que devuelve un valor, puede usar
sorted_list = sorted(lista)
Aparte # 1: por favor no llame a su list
listas. Eso golpea el tipo de lista incorporada.
Aparte # 2: No estoy seguro de lo que esta línea debe hacer:
print str("value 1a")+str(" + ")+str("value 2")+str(" = ")+str("value 3a ")+str("value 4")+str("/n")
es simplemente
print "value 1a + value 2 = value 3a value 4"
? En otras palabras, no sé por qué estás llamando a las cosas que ya son str.
Aparte # 3: a veces usas print("something")
(sintaxis de Python 3) y otras veces usas print "something"
(Python 2). Este último le daría un SyntaxError en py3, por lo que debe estar ejecutando 2. *, en cuyo caso probablemente no quiera acostumbrarse o terminará imprimiendo tuplas, con paréntesis adicionales. Admito que funcionará bastante bien aquí, porque si solo hay un elemento entre paréntesis no se interpreta como una tupla, pero parece extraño para el ojo pitón.