
Jhojan Rivera
PreguntaAyuda. Alguien puede decirme por qué en este código es necesario colocar -1 en len(lista)
<def busqueda_binaria(lista, valor): primero = 0 ultimo = len(lista) -1 encontrado = False while primero <= ultimo and not encontrado: mitad = (primero + ultimo) // 2 if lista[mitad] == valor: encontrado = True else: if valor < lista[mitad]: ultimo = mitad - 1 else: primero = mitad + 1 return encontrado numeros = [2, 3, 5, 7, 11, 13, 17, 19] llave = 13 print(busqueda_binaria(numeros, llave)) >

Juan Teixeira
Jhojan, una lista en Python en un array como comunmente se conoce. Te dare un ejemplo que se podra entender mejor.
MiArray = [ 1, 2 , 3 , 4 ] si quieres saber la longitud del array usas longitud = len(MiArray) #resultado 4
Pero si quieres obtener la ultima posición en MiArray debe usar: UltimaPosicion = len(MiArray) - 1 #resultado 4
Esto es porque en los Array la primera posición es 0 , te muestro un ejemplo:
MiArray = [ 1, 2 , 3 , 4 ] posiciones en este array
en el valor 1 = su posición es 0 en el valor 2 = su posición es 1 en el valor 3 = su posición es 2 en el valor 4 = su posición es 3
entonces como quieren conseguir el ultimo valor del array se usa la función
UltimaPosicion = len(MiArray) - 1 #resultado 4
Espero haberte ayudado.

Dardo Luis Vilar Rivero
Eso se debe a que la longitud de la lista es una cosa, puede ser 3, pero las posiciones del índice de la lista inician en 0, así que irían del 0 al 2, por ende: longitud-1

Juan Diego Mamani
hola, es porque el while esta empezando en 0. Como la cantidad de elementos es 3, entonces esa es la cantidad que necesita recorrerse. Al poner el punto de partida en 0 y sumado uno por cada iteracion hasta ser menor o igual al valor "ultimo" (2), hace que se recorra exactamente 3 veces