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.