[ Foro de Python ]
Buenos-Malos-Regulares:
Hacer un programa que permita el ingreso de un número de 4 digitos no repetidos en una
cadena de caracteres, para ser utlizado como número a adivinar.
El programa deberá ahora solicitarle al usuario que ingrese un número de 4 dígitos y deberá
devolver la información sobre los números ingresados y su estado. Ejemplo:
Número a Adivinar: 1234
Número a verificar: 1357
1 Bueno
1 Regular
2 Malos
Donde El “Bueno” indica que hay un número correcto en la posición correcta. El “Regular”
indica que el número está pero no en la posición correcta, y los "Malos" indican que los
números no están,
Hacer una función que verifique los números y su posición devolviendo una cadena de
caracteres con el siguiente formato para el ejemplo anterior: 181R2M
El programa debe permitir intentar 10 veces la búsqueda del número.
Modificar el programa, como para que el número a adivinar, se genere al azar con los
números distintos.
Buenas, este te puede servir, es un numero al azar de 4 digitos
import random
numeros = (1, 2, 3, 4, 5, 6, 7, 8, 9)
num = random.sample(numeros, 4) # obtenemos 4 numeros sin repetir
for i in range(10):
adi = input('Adivine el número ')
an0 = int(adi[0])
an1 = int(adi[1])
an2 = int(adi[2])
an3 = int(adi[3]) # dividimos el numero en sus digitos
# Buscamos los buenos 'B'
b = 0
if an0 == num[0]:
b+=1
if an1 == num[1]:
b+=1
if an2 == num[2]:
b+=1
if an3 == num[3]:
b+=1
# Buscamos los regulares 'R'
r=0
if an0 == num[1] or an0 == num[2] or an0 == num[3]:
r+=1
if an1 == num[0] or an1 == num[2] or an1 == num[3]:
r+=1
if an2 == num[0] or an2 == num[1] or an2 == num[3]:
r+=1
if an3 == num[0] or an3 == num[1] or an3 == num[2]:
r+=1
# Buscamos los malos 'M' restandolos de los demas
m = 4-b-r # Esto es porque la suma de los buenos con regulares y malos siempre es 4
if b == 4:
print(f'Ese es el número, felicidades y lo hiciste en {i+1} intentos')
break
else:
print(f'{b}B{r}R{m}M')
if b<4:
print(f'Lastima, no lo adivinaste, era el {num[0]}{num[1]}{num[2]}{num[3]}')
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)