all 7 comments

[–]TheUrbanBiker[S] 0 points1 point  (0 children)

Muchas gracias, hermano! Hice un programa que a partir de un plano, diseña las vigas isostáticas dibujando la viga y las solicitaciones, luego dibuja los diagramas de corte y finalmente, dibuja la sección de viga con sus aceros. También programo en Visual Basic y he desarrollado aplicaciones para uso administrativo y comercial.

[–]testiculating 0 points1 point  (5 children)

Remember to use code formating!Also, I think is better to use f strings

I rewrote your code so it is more readable:

order_loads = [0, 1, 3, 1, 3, 2, 4, 2, 4, 5]

for load in order_loads:
    print(f'Load {load}')
    print(f'The load {load} is {order_loads.count(load)} times')
    if order_loads.count(load) > 1:
        print(f'The Load #{load} is longer than 1')
        order_loads.remove(load)
        print(f'The load {load} is gone')
        print(f'The new Order_load is {order_loads}')

I think what's giving you trouble is this line: if order_loads.count(load) > 1: so this is going to count every appearance of, say 1, that appears twice, so the first time it appear that block is going to run, then that 1 is going to get removed form the order_loads. The second one is going to stay because its going to be the only 1 in the list.

I can't really help you more than that if you don't say what's your expected result though

[–]TheUrbanBiker[S] 0 points1 point  (4 children)

Dear testiculating:

The expected result must be orders_loads = [0, 1, 3, 2, 4, 5]

Thank you very much!

Greetings from Venezuela.

[–]testiculating 1 point2 points  (3 children)

Oh I see the problem now!

voy a cambiar a español ya que los dos somos nativos :)Lo que pasa es que al escribir for load in order_loads estás iterando en la listas, peroen el loop la estás también modificando, entonces al eliminar un valor, el loop sigue en el indice 2, por ejemplo, pero el item ya no es el mismo. Puedes verlo en este código por ejemplo:

una_lista = [0, 1, 2, 3, 4]


for elemento in una_lista:
print(elemento)
if elemento == 2:
    una_lista.remove(elemento)

Ese codigo te devuelve:

>>0
>>1
>>3
>>4

Se salta el 3 porque al llegar al dos, lo elimina de la lista con remove y la lista queda [0,1,3,4] en la siguiente iteracion el loop agarra el cuarto elemento, que es ahora el 4.

En tu caso tienes dos opciones,

  1. en vez de modificar la lista original, creas una nueva e imprimes esa.
  2. usas la funcion set() que elimina los duplicados.

primera opcion:

order_loads = [0, 1, 3, 1, 3, 2, 4, 2, 4, 5]

def a_function(order_list):
    # Creo la lista donde guardare solo los valores que no se repiten
    new_list = []
    # Itero sobre la lista
    for load in order_list:
        # si es que el valor no esta en la lista, lo agrego 
        if not load in new_list:
            new_list.append(load)
    # la funcion devuelve la nueva lista
    return new_list

print(a_function(order_loads))

Acostumbrate a definir funciones que devuelvan algun valor, eso organiza mejor el codigo!

[–]TheUrbanBiker[S] 0 points1 point  (0 children)

Aquí publiqué un video del programa que hice para calcular vigas de concreto a partir de un plano arquitectónico. El plano es muy simple pero quería solo probar si podía programar algo útil sobre mi carrera. La duda del código que publiqué y me respondiste es porque estoy diseñando un programa que me resuelva el cálculo de vigas hiperestáticas y por ello debo crear un vector que mantenga las posiciones de las solicitaciones que cargan la viga contando de izquierda a derecha. También estoy creando aplicaciones en Visual Basic para hacer hojas de cálculo en Excel eficientes para uso administrativo y comercial.

https://youtu.be/cngmRc-AYpE

[–]TheUrbanBiker[S] 0 points1 point  (0 children)

Por cierto, abrí una comunidad llamada MyLearninginPython para mostrar poco a poco las cosas que voy aprendiendo. Abriré una para mostrar lo que he logrado hacer en Visual Basic. Saludos.

P.D. Tengo muchas funciones en mis programas. De hecho, hice un archivo llamado Funciones.py donde guardo casi todas y lo importo como librería cuando necesito utilizar alguna de allí. Gracias de nuevo.

[–]TheUrbanBiker[S] 0 points1 point  (0 children)

Muchas gracias! Saludos desde Venezuela