es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Verificar si la entrada es binaria

Tengo este código. Simplemente no puedo descubrir cómo hacer que solo se acepten “1” y “0”.

a = input('Ingrese un número binario: ')
ar = [int(i) for i in a]
ar = ar[::-1]
res = []
for i in range(len(ar)):
    res.append(ar[i]*(2**i))
sum_res = sum(res)
print('El número decimal es: ', sum_res)
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para aceptar solo “1” y “0” como entradas para un número binario, puedes agregar una verificación utilizando una expresión regular antes de convertir la entrada en una lista de enteros. Aquí está el código actualizado:

    import re
    
    patron_binario = re.compile(r'^[01]+$')
    
    while True:
        a = input('Ingresa un número binario: ')
        if patron_binario.match(a):
            ar = [int(i) for i in a]
            ar = ar[::-1]
            res = []
            for i in range(len(ar)):
                res.append(ar[i] * (2 ** i))
            sum_res = sum(res)
            print('El número decimal es:', sum_res)
            break
        else:
            print('Entrada inválida. Por favor ingresa un número binario válido (solo se permiten 1\'s y 0\'s).')
    

    Este código utiliza un patrón de expresión regular ^[01]+$ para coincidir solo con entradas que contengan 0’s y 1’s (y solo esos caracteres). Si la cadena de entrada coincide con el patrón, el código continúa con la lógica original para convertir el número binario a decimal e imprimir el resultado. Si no coincide, solicita al usuario que ingrese nuevamente un número binario válido.

    ¡Espero que esto te ayude!

Comments are closed.