[PYTHON] Necesito ayuda con un ejercicio de clase


Dark

🔥root313🔥
Staff
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder Pro
Noder
El ejercicio trata de ver cuantos elefantes aguanta una tela de araña, tipo, lo de "un elefante se balanceaba sobre las tetas de tu hermana" y esas movidas.

El ejercicio tiene que hacer lo siguiente:

Preguntar el tamaño máximo que aguanta la tela de araña, y luego el peso de los elefantes en este formato "100 200 300 0" (0 es cuando termina el "conteo" de elefantes o algo así)

La movida es, no se como hacer para ir sumando cada elefante y comprobando si es mayor que el peso maximo de la telaraña.

Para que me entendáis:

elefantes = ["100", "200", "100", "50", "0"]

i = -1

bucle

sumar 1 elefante

sumar otro elefante...

Alguien me echa una mano?

Este es el código que tengo hecho de momento:

Código:
t = int(input("Di el peso que aguanta la telaraña: "))

defs = input("Di el peso de cada elefante\nPer exemple 100 150 50 100 0 \n")

x = defs.split(" ")

x = list(map(int, x))

print(x)

suma = 0

i = -1

while suma < t:
    i = i + 1
    x[i]
 
Última edición:
  • Like
Reacciones : Hugooooo

RubRub

Miembro muy activo
Nodero
Noder
Te lo he escrito en C, a ver si lo entiendes y lo puedes implementar en Python

C:
#include <stdio.h>

const int peso_max = 1000;

int main(){
  
    int suma = 0;
    int peso_nuevo = 0;
    int i = 0;
  
    while(suma < peso_max){
        printf("Introduzca el peso del nuevo elefante: ");
        scanf("%d", &peso_nuevo);
        suma = suma + peso_nuevo;
        i++;
        printf("Has sumado %d kg, llevas un total de %d kg y %d elefantes\n", peso_nuevo, suma, i);
    }

    printf("La telaraña aguanta %d elefantes", i-1);
}
 
  • Like
Reacciones : Dark

Dark

🔥root313🔥
Staff
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder Pro
Noder
Te lo he escrito en C, a ver si lo entiendes y lo puedes implementar en Python

C:
#include <stdio.h>

const int peso_max = 1000;

int main(){
 
    int suma = 0;
    int peso_nuevo = 0;
    int i = 0;
 
    while(suma < peso_max){
        printf("Introduzca el peso del nuevo elefante: ");
        scanf("%d", &peso_nuevo);
        suma = suma + peso_nuevo;
        i++;
        printf("Has sumado %d kg, llevas un total de %d kg y %d elefantes\n", peso_nuevo, suma, i);
    }

    printf("La telaraña aguanta %d elefantes", i-1);
}
Ojalá fuera tan fácil como preguntar en cada bucle el peso de cada elefante, pero el ejercicio pide que el peso de cada elefante sea introducido en una sola línea, osea:

100 200 100 100 50 0

Yo luego puedo poner esos numeros en una lista y convertirlos en valores int.
 

RubRub

Miembro muy activo
Nodero
Noder
Ojalá fuera tan fácil como preguntar en cada bucle el peso de cada elefante, pero el ejercicio pide que el peso de cada elefante sea introducido en una sola línea, osea:

100 200 100 100 50 0

Yo luego puedo poner esos numeros en una lista y convertirlos en valores int.
Ah bueno, no entendí ese detalle, luego le doy una vuelta
 

Dark

🔥root313🔥
Staff
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder Pro
Noder
Ah bueno, no entendí ese detalle, luego le doy una vuelta
defs = input("Di el peso de cada elefante\nPor ejemplo 100 150 50 100 0 \n")

x = defs.split(" ")

x = list(map(int, x))

print(x)

Esto, tu pones en el input lo del ejemplo, osea, 100 150 50 100 0 (todo en una línea, escrito, con espacios)

y al hacer print(x) te da lo siguiente:

[100, 150, 50, 100, 0]

Osea, coge la string 100 150 50 100 0, separa cada elemento que haya entre espacios, y los convienrte en int, osea, un valor número, no texto.
 

RubRub

Miembro muy activo
Nodero
Noder
defs = input("Di el peso de cada elefante\nPor ejemplo 100 150 50 100 0 \n")

x = defs.split(" ")

x = list(map(int, x))

print(x)

Esto, tu pones en el input lo del ejemplo, osea, 100 150 50 100 0 (todo en una línea, escrito, con espacios)

y al hacer print(x) te da lo siguiente:

[100, 150, 50, 100, 0]

Osea, coge la string 100 150 50 100 0, separa cada elemento que haya entre espacios, y los convienrte en int, osea, un valor número, no texto.
Python:
t = int(input("Di el peso que aguanta la telaraña: "))

defs = input("Di el peso de cada elefante\nPor ejemplo: 100 150 50 100 0 \n")

x = defs.split(" ")

x = list(map(int, x))

suma = 0
i = 0
print(x)

for element in x:
    suma = suma + element
    if(suma<t and element!=0):
        i = i + 1

print("La telaraña aguanta " + str(i) + " elefantes")

Aquí lo tienes, a ver si ahora te sirve
 
  • Regalar
Reacciones : Dark
Solution

Dark

🔥root313🔥
Staff
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder Pro
Noder
Python:
t = int(input("Di el peso que aguanta la telaraña: "))

defs = input("Di el peso de cada elefante\nPor ejemplo: 100 150 50 100 0 \n")

x = defs.split(" ")

x = list(map(int, x))

suma = 0
i = 0
print(x)

for element in x:
    suma = suma + element
    if(suma<t and element!=0):
        i = i + 1

print("La telaraña aguanta " + str(i) + " elefantes")

Aquí lo tienes, a ver si ahora te sirve
Lo probaré, gracias.
 

M4ndy

【=◈︿◈=】
Noder
jajajajaj es broma cabrón XD estaba abriendo ya el visual studio code pero creo que no tengo los conocimientos suficientes en Python, pero voy a echarle una vuelta
 

Dark

🔥root313🔥
Staff
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder Pro
Noder
Python:
t = int(input("Di el peso que aguanta la telaraña: "))

defs = input("Di el peso de cada elefante\nPor ejemplo: 100 150 50 100 0 \n")

x = defs.split(" ")

x = list(map(int, x))

suma = 0
i = 0
print(x)

for element in x:
    suma = suma + element
    if(suma<t and element!=0):
        i = i + 1

print("La telaraña aguanta " + str(i) + " elefantes")

Aquí lo tienes, a ver si ahora te sirve
Me funciona, ahora necesito la mejora xd, el ejercicio base cuenta un 50%, la mejora 1 un 20% y la 2 un 30%.

La mejora 1 consiste en que en vez de hacer un input de los elefantes, generarlos aleatoriamente, con pesos de entre 80 y 167, y luego obtener un print de cada elefante, tipo:

Elefante generado #1 pesa 130
Elefante generado #2 pesa 360
Elefante generado #3 pesa 100 y rompe la telaraña.
 

RubRub

Miembro muy activo
Nodero
Noder
Me funciona, ahora necesito la mejora xd, el ejercicio base cuenta un 50%, la mejora 1 un 20% y la 2 un 30%.

La mejora 1 consiste en que en vez de hacer un input de los elefantes, generarlos aleatoriamente, con pesos de entre 80 y 167, y luego obtener un print de cada elefante, tipo:

Elefante generado #1 pesa 130
Elefante generado #2 pesa 360
Elefante generado #3 pesa 100 y rompe la telaraña.
Python:
import random

peso_maximo = int(input("Di el peso que aguanta la telaraña: "))

peso_elefantes = []
suma = 0
i = 0
j = 0

while ( suma < peso_maximo ):
    nuevo = random.randint(80,167)
    suma = suma + nuevo
    j = j + 1
    
    if(suma < peso_maximo):
        i = i + 1
    
    print("El elefante generado #" + str(j) + " pesa " + str(nuevo) + "kg")

print("La telaraña aguanta " + str(i) + " elefantes")

A lo tonto aprendo a programar en python jajajaja
 
  • Regalar
  • Like
Reacciones : Dark y Ivanof

Dark

🔥root313🔥
Staff
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder Pro
Noder
Python:
import random

peso_maximo = int(input("Di el peso que aguanta la telaraña: "))

peso_elefantes = []
suma = 0
i = 0
j = 0

while ( suma < peso_maximo ):
    nuevo = random.randint(80,167)
    suma = suma + nuevo
    j = j + 1
   
    if(suma < peso_maximo):
        i = i + 1
   
    print("El elefante generado #" + str(j) + " pesa " + str(nuevo) + "kg")

print("La telaraña aguanta " + str(i) + " elefantes")

A lo tonto aprendo a programar en python jajajaja
Ahora lo pruebo, jajajaja
 
  • Like
Reacciones : RubRub