Programa Python para calcular el número de dígitos y letras en una string

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

Publicación traducida automáticamente

Artículo escrito por abhigoya y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *