Estoy tratando de obtener el nombre completo ingresado por el usuario en sus iniciales y luego imprimir las iniciales en la pantalla. Debemos usar bucles y listas.

He buscado en línea y no puedo encontrar una respuesta específica a lo que estoy tratando de hacer.

fullName = input('Please enter your full name: ')

name = []

for i in fullName:
    if i.isupper():
        name.append(i)

for i in name:
    print(i, sep='.', end='')

Quiero que la copia impresa sea A.B.C. Actualmente estoy obteniendo ABC.

¿Qué estoy haciendo mal o no veo?

0
k2468 6 oct. 2019 a las 07:31

5 respuestas

La mejor respuesta

En este código,

for i in name: 
    print(i ,sep='.',end='')

Print obtiene cada elemento individual i en name en cada iteración de bucle, por lo que es un objeto a la vez. Necesita pasar objetos para imprimir func. Puede hacer algo como esto desempacando su lista name y pasándola a imprimir

print(*name ,sep='.',end='')
1
NebiyouTen 6 oct. 2019 a las 04:45

Reduzcamos el código a un ejemplo mínimo. Los pasos de entrada y procesamiento previo son irrelevantes:

name = list('ABC')
for i in name:
    print(i, sep='.', end='')

Esto es equivalente a llamar

print ('A', sep='.', end='')
print ('B', sep='.', end='')
print ('C', sep='.', end='')

Esperemos que pueda ver que cada declaración de impresión está imprimiendo exactamente una cosa, lo que significa que sep nunca entra en juego. Desearía dividir los elementos de su lista (o cadena) en argumentos separados para una sola llamada a print.

La forma más simple es usar la expansión en estrella:

print(*name, sep='.')

Alternativamente, puede formatear usted mismo:

print('.'.join(name))
2
Mad Physicist 6 oct. 2019 a las 04:45

Reemplace print(i, sep='.', end='') con print(i, sep='', end='.')

O puede imprimir una cadena formateada como

name = '.'.join(name)
print(name)
1
meTchaikovsky 6 oct. 2019 a las 04:45

En print() sep= especifica cómo separar los objetos de entrada para imprimir la declaración, no los caracteres en la cadena.

In[1]: print('A', 'B', sep='.')

Huellas:

A.B

Pero esto:

In[2]: print('AB', sep='.')

Huellas:

AB

Porque 'AB' es un objeto de cadena y no hay nada que separar, mientras que 'A', 'B' son dos objetos de cadena. Para referencia: print ()

0
Mark 6 oct. 2019 a las 04:52

Necesita un enfoque diferente, porque las personas a menudo no escriben con mayúscula sus nombres:

fullName = input('Please enter your full name: ')

# convert first characters of every word to upper case
initials = [i[0].upper() for i in fullName.split()]

# print them out, joining by a dot '.'
print( '.'.join(initials) )
0
lenik 6 oct. 2019 a las 04:53
58254218