s3Eva2018TII_T1 texto aleatorio

Ejercicio: 3Eva2018TII_T1 texto aleatorio

T
Hola
.
que
tal
-
,
amigo
amiga
palabra 1
palabra2
literatura

Un ejemplo de lo esperado es:

monos Infinitos
El texto generado es: 
Hola Hola.
Hola amigo-amiga Hola que-
>>> 

Se empieza generando un aleatorio en el intervalo [0,k], donde k es el número de términos que tiene T.

    # literal a. selección aleatoria de k términos
    aleatorio = int(rnd.random()*k)+0
    untermino =  T[aleatorio]

Literal b

Se valida que sea una palabra, descartando que no sea un símbolo como forma de simplificar el ejercicio. Solo si es palabra se avanza a sortear el siguiente termino, se concatena en texto y se indica que lo usado antes es una palabra.

    espalabra = not(untermino in simbolo)   
    if (espalabra==True):
        texto  = texto + untermino
        cuenta = cuenta + 1
        antes  = espalabra

Se avanza validando con un bucle

cuenta  = 0
while (cuenta<1):# literal b. primero debe ser palabra

literal d

Se continúa con los demás literales según las reglas indicadas

    if espalabra == True: # solo palabra
        if antes == 1: # palabras tienen espacio
            texto = texto + ' '+ untermino
        if antes == 0: # símbolo pegado a palabra
            texto = texto + untermino
        antes  = 1
        cuenta = cuenta+1

Propuesta de solución en Python, los detalles por literal se encuentran como comentario en el código:

# 3Eva_IIT2018_T1 texto aleatorio
# CCPG1001-Fundamentos de Programación - FIEC-ESPOL
import random as rnd

# INGRESO
n = 10 # enunciado indica 73, solo para pruebas
T = ['Hola','.','que','tal','-',',','amigo','amiga',
     'palabra1','palabra2','literatura']

# PROCEDIMIENTO
k = len(T)
texto   = ''
simbolo = ',.-'
antes   = 0

cuenta  = 0
while (cuenta<1):# literal b. primero debe ser palabra

    # literal a. selección aleatoria de k términos
    aleatorio = int(rnd.random()*k)+0
    untermino =  T[aleatorio]
    
    espalabra = not(untermino in simbolo)   
    if (espalabra==True):
        texto  = texto + untermino
        cuenta = cuenta + 1
        antes  = espalabra

while not(cuenta>=n): # literal a. Cuenta términos añadidos
    # literal a. selección aleatoria de k términos
    aleatorio = int(rnd.random()*k)+0
    untermino =  T[aleatorio]
    
    espalabra = not(untermino in simbolo)

    if espalabra == True: # solo palabra
        if antes == 1: # literal c. palabras tienen espacio
            texto = texto + ' '+ untermino
        if antes == 0: # literal d, e, f, símbolo pegado a palabra
            texto = texto + untermino
        antes  = 1
        cuenta = cuenta+1

    if espalabra==False and antes==1: # solo símbolo con antes palabra.
        if untermino==',': # literal e
            texto = texto + ', '       
        if untermino=='.': # literal g
            texto = texto + '.\n'
        if untermino=='-': # literal f
            texto = texto +'-'
        antes = 0
        cuenta = cuenta+1
    
    # if espalabra==False and antes ==0:
    #     print('no se pueden juntar simbolos')

# SALIDA
print('El texto generado es: ')
print(texto)

# desarrollar archivo.txt

# Archivo
archivo = open('literatura.txt','w')
archivo.write(texto)
archivo.close()

Ejercicios resueltos/Ejemplos por año

Ejemplos 1ra Evaluación

1ra Eva 2020-2011

1ra Eva 2010-2001

Ejemplos 2da Evaluación

2da Eva 2020-2011

2da Eva 2010-2001

Ejemplos 3ra Evaluación

3ra Eva 2020-2011

3ra Eva 2010-2001