es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Lectura y realización de acciones a partir del contenido de archivos.

Estoy tratando de hacer este laboratorio que me da mucha información de un archivo .txt. Cada línea contiene algunas letras y números y se supone que debo escribir código para responder 5 preguntas de cada línea del texto: imprimir la secuencia de 5 letras usando letras minúsculas, imprimir si la secuencia de 5 letras contiene alguna vocal, imprimir el volumen de una esfera que tiene el radio del primer número, imprimir si los otros 3 números pueden formar un triángulo y imprimir el promedio de los últimos 3 números.

Aquí hay 3 líneas del archivo Lab5_Data.txt:

WLTQS 13 64 23 99

ZNVZE 82 06 53 82

TMIWB 69 93 68 65

Aquí está la salida esperada de esas 3 líneas:

La cadena en minúsculas es wltqs

WLTQS no contiene vocales

El volumen de la esfera con radio 13 es 9202.7720799157

64, 23, 99 no pueden formar un triángulo.

El promedio de 64, 23, 99 es 62.0

La cadena en minúsculas es znvze

ZNVZE contiene vocales

El volumen de la esfera con radio 82 es 2309564.8776326627

6, 53, 82 no pueden formar un triángulo.

El promedio de 06, 53, 82 es 47.0

La cadena en minúsculas es tmiwb

TMIWB contiene vocales

El volumen de la esfera con radio 69 es 1376055.2813841724

93, 68, 65 pueden formar un triángulo

El promedio de 93, 68, 65 es 75.33333333333333

Aquí está mi código hasta ahora:

with open(‘Lab5_Data.txt’, ‘r’) as my_file:
for line in my_file:
data = line.split()
print(line)

for line in my_file:
line = line[0:5].lower()
print(‘La cadena en minúsculas es’, line)

for i in my_file:
if(i== ‘A’ or i== ‘E’ or i== “I” or i== ‘O’ or i== ‘U’):
print(‘contiene vocales’)
else:
print(‘no contiene vocales’)

Estoy teniendo problemas para hacer que cada línea se divida para que cuando imprima la salida, muestre cada una de las respuestas junto con la misma línea. Además, tengo dificultades para obtener las funciones para cada una de estas respuestas sin hacer un gran bucle for. Si alguien tiene alguna sugerencia para ayudarme, ¡se lo agradecería mucho!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para dividir cada línea y obtener el resultado para cada pregunta, puedes crear funciones separadas para cada pregunta y llamarlas dentro del bucle para cada línea. Aquí hay un ejemplo de código:

    def lowercase_letters(line):
        return line[0:5].lower()
    
    def contains_vowels(line):
        vowels = "aeiouAEIOU"
        for char in line:
            if char in vowels:
                return "contiene vocales"
        return "no contiene ninguna vocal"
    
    def sphere_volume(radius):
        import math
        volume = (4/3) * math.pi * radius ** 3
        return round(volume, 13)
    
    def triangle_check(side1, side2, side3):
        if (side1 + side2 > side3) and (side1 + side3 > side2) and (side2 + side3 > side1):
            return "puede formar un triángulo"
        else:
            return "no puede formar un triángulo"
    
    def avg_of_3(num1, num2, num3):
        avg = (num1 + num2 + num3) / 3
        return round(avg, 1)
    
    with open('Lab5_Data.txt', 'r') as my_file:
        for line in my_file:
            data = line.split()
            string = lowercase_letters(line)
            vowels = contains_vowels(string)
            volume = sphere_volume(int(data[1]))
            triangle = triangle_check(int(data[2]), int(data[3]), int(data[4]))
            avg = avg_of_3(int(data[1]), int(data[2]), int(data[3]))
            print(f"La cadena en minúsculas es {string}")
            print(f"{string} {vowels}")
            print(f"El volumen de la esfera con radio {data[1]} es {volume}")
            print(f"{data[2]}, {data[3]}, {data[4]} {triangle}.")
            print(f"El promedio de {data[1]}, {data[2]}, {data[3]} es {avg}\n")
    

    Al definir funciones separadas, podemos llamar a cada función dentro del bucle para cada línea y obtener el resultado de las 5 preguntas para cada línea. ¡Espero que esto ayude!

Comments are closed.