Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

211
Vistas
Creación de listas interactivas de Ruby

Acabo de empezar Rubí.

Básicamente, estoy tratando de escribir un código que tomará la entrada de los usuarios desde el terminal y creará una matriz.

 Type a student name: felix Type another student name or press enter to finish: Cedric Type another student name or press enter to finish: bob Type another student name or press enter to finish: Congratulations! Your Wagon has 3 students: bob, Cedric and felix

Lo que he hecho hasta ahora está abajo. ¿No estoy seguro si necesito un bucle? ¿Cómo puedo arreglar el "else"?

 new_array = [] count = 0 puts "Type a student name" name = gets.chomp new_array << name count = count + 1 puts "Type another student name or enter to finish" name = gets.chomp if name == "" puts "Congratulations! Your Wagon has #{count} student: #{new_array[0]}" else puts "Type another student name or enter to finish" name = gets.chomp new_array << name count = count + 1 puts "Congratulations! Your Wagon has #{count} student: #{new_array}" end
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Para ingresar una cantidad arbitraria de nombres, necesita algún tipo de bucle. Aquí hay un ejemplo sin else usando loop y break :

 array = [] puts "Type a student name" loop do name = gets.chomp break if name.empty? array << name puts "Type another student name or enter to finish" end

Pero con una puts afuera y una puts adicional al final del bucle, el código parece un poco fuera de servicio.

Preferiría mantener la salida inicial de cada ronda en la parte superior del ciclo, incluso si el código se alarga. Esto se puede lograr usando 1.step en lugar de loop que pasa un contador basado en 1 al bloque: (hay muchas otras formas de hacer esto)

 1.step do |i| if i == 1 puts "Type a student name" else puts "Type another student name or enter to finish" end name = gets.chomp break if name.empty? array << name end

Tampoco necesita contar los nombres ingresados usted mismo, solo pregunte a la matriz por su count de elementos:

 puts "Congratulations! Your Wagon has #{array.count} student(s):" puts array.join(', ')
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda