Uso de len en textos pero descartando espacios en el conteo.

Por lo tanto, estoy tratando de crear un progtwig que cuente la cantidad de caracteres en una cadena, que se proporciona del usuario, pero quiero revelar cualquier espacio que ingrese el usuario.

def main(): full_name = str(input("Please enter in a full name: ")).split(" ") for x in full_name: print(len(x)) main() 

Para esto, todo lo que obtengo son los números de los caracteres, sin espacios, pero no sé cómo sumrlos e imprimirlos.

Cuenta la longitud y resta el número de espacios:

 >>> full_name = input("Please enter in a full name: ") Please enter in a full name: john smith >>> len(full_name) - full_name.count(' ') 9 >>> len(full_name) 

Usa la sum con una expresión generadora:

 >>> text = 'foo bar spam' >>> sum(len(x) for x in text.split()) 10 

O str.translate con len :

 >>> from string import whitespace >>> len(text.translate(None, whitespace)) #Handles all types of whitespace characters 10 

Puedo proponer algunas versiones:

Puedes reemplazar espacios con una cadena vacía y calcular la longitud

 len(mystr.replace(" ", "")) 

o Puede calcular la longitud de toda la cadena y el número de espacios.

 len(mystr) - count(' ') 

o Puede calcular las longitudes de todas las subcadenas después de dividir la cadena

 sum(map(len, mystr.split(' '))) 

Para contar el número de caracteres que excluyen espacios, simplemente puede hacer:

 >>> full_name = "John DOE" >>> len(full_name) - full_name.count(' ') 7 

Algún código lo más cercano posible a su original:

 def main(): full_name = input("Please enter in a full name: ").split() total = 0 for x in full_name: total += len(x) print(total) 

Sin embargo, creo que len(full_name) - full_name.count(' ') es mejor.

¿Por qué no puedes simplemente hacer:

 >>> mystr = input("Please enter in a full name: ") Please enter in a full name: iCodez wrote this >>> len(mystr.replace(" ", "")) 15 >>> len(mystr) 17 >>> 

Esto obtiene la longitud de la cadena menos los espacios.

Tambien puedes hacer

 sum(1 for c in s if c!=' ') 

Lo que evita cualquier cadena o lista temporal innecesaria.