Requisitos previos: método isnumeric() – Python
Dada una string que contiene dígitos y letras, la tarea es escribir un programa en Python para calcular el número de dígitos y letras en una string. El siguiente bloque expresa la idea básica detrás de él:
Input: string = "geeks2for3geeks" Output: total digits = 2 and total letters = 13 Input: string = "python1234" Output: total digits = 4 and total letters = 6 Input: string = "co2mpu1te10rs" Output: total digits = 4 and total letters = 9
Primer enfoque
La idea aquí es resolver este problema iterando a través de todos los caracteres y verificando si el carácter está en todos los dígitos o en todas las letras.
Programa:
Python3
# define all digits as string all_digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] # define all letters all_letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] # given string string = "geeks2for3geeks" # initialized value total_digits = 0 total_letters = 0 # iterate through all characters for s in string: # if character found in all_digits then increment total_digits by one if s in all_digits: total_digits += 1 # if character found in all_letters then increment total_letters by one elif s in all_letters: total_letters += 1 print("Total letters found :-", total_letters) print("Total digits found :-", total_digits)
Producción:
Total letters found :- 13 Total digits found :- 2
Método optimizado
En lugar de verificar el carácter en all_letters, podemos verificar:
- si el carácter se encuentra en todos los dígitos, entonces incremente el valor total_digits en uno
- Si no, significa que los caracteres son una letra, incremente el valor de total_letters en uno
Programa:
Python3
# define all digits as string all_digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] # define all letters all_letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] # given string string = "geeks2for3geeks" # initialized value total_digits = 0 total_letters = 0 # iterate through all characters for s in string: # if character found in all_digits then increment total_digits by one if s in all_digits: total_digits += 1 # if character not found in all_digits then increment total_letters by one else: total_letters += 1 print("Total letters found :-", total_letters) print("Total digits found :-", total_digits)
Producción:
Total letters found :- 13 Total digits found :- 2
Segundo enfoque (método más optimizado)
La idea aquí es resolver este problema iterando a través de todos los caracteres y verificar si el carácter es una letra o un dígito usando la función isnumeric(). Si isnumeric es True, significa que el carácter es un dígito; de lo contrario, el carácter es una letra.
Programa:
Python3
# given string string = "python1234" # initialized value total_digits = 0 total_letters = 0 # iterate through all characters for s in string: # if character is digit (return True) if s.isnumeric(): total_digits += 1 # if character is letter (return False) else: total_letters += 1 print("Total letters found :-", total_letters) print("Total digits found :-", total_digits)
Producción:
Total letters found :- 6 Total digits found :- 4
Enfoque más corto #: usando re.findall() y la función len
Aquí usamos estas funciones que hacen que nuestra solución sea más fácil. Primero encontramos todos los dígitos en la string con la ayuda de re.findall() que dan una lista de patrones coincidentes con la ayuda de len calculamos la longitud de la lista y de manera similar encontramos el total de letras en la string con la ayuda de re.findall() y calcule la longitud de la lista usando len.
Python3
import re # given string string = "geeks2for3geeks" # initialized value total_digits = len(re.findall('[0-9]',string)) total_letters = len(re.findall('[A-z]', string)) # iterate through all characters print("Total letters found :-", total_letters) print("Total digits found :-", total_digits)
Producción:
Total letters found :- 13 Total digits found :- 2