Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
repos:
- repo: https://github.com/psf/black
rev: 23.3.0
hooks:
- id: black
language_version: python3.10
- repo: https://github.com/PyCQA/flake8
rev: 6.0.0
hooks:
- id: flake8
57 changes: 29 additions & 28 deletions codebreaker.py
Original file line number Diff line number Diff line change
@@ -1,34 +1,35 @@
trueNumber = "1010";
import random
from typing import Union

class Codebreaker:

def adivinar(self, numero=None):
if trueNumber == '':
return 'Number is not defined'

if numero is None or len(numero) != 4 or 'e' not in list(numero):
return "error"

if numero == trueNumber:
return True

resultadoX = ''
resultado_ = ''
arrayNumber = []

for x in len(numero):
if(arrayNumber[numero[x]] == True):
return 'error'
class Codebreaker:
def __init__(self) -> None:
self.NUMBER_TO_GUESS = "".join(random.sample("0123456789", 4))
print(f"number to guess 👀: {self.NUMBER_TO_GUESS}")

arrayNumber[numero[x]] = True

numero = list(numero)
def guess(self, number: str = None) -> Union[bool, str]:
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puedes intentar darle un nombre mas descriptivo a esta función? además te recomiendo que solo tengas un tipo de valor a retornar (string o boolean), así será mas facil testear la función

if not self.NUMBER_TO_GUESS:
raise Exception("Number is not defined")
elif not number.isdecimal():
raise Exception("Number must be decimal")
elif len(number) != 4:
raise Exception("Number must have 4 digits")
elif number == self.NUMBER_TO_GUESS:
return True

for index, x in numero:
if trueNumber[index] == numero[index]:
resultadoX+='X'
array_number = []
for _, digit in enumerate(number):
if digit in array_number:
raise Exception("Number must not have repeated digits")
array_number.append(digit)

elif x in trueNumber:
resultado_='_'
result_x = ""
result__ = ""
number = list(number)
Comment on lines +26 to +28
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puedes intentar dar nombres mas descriptivos a estas variables?

for index, digit in enumerate(number):
if self.NUMBER_TO_GUESS[index] == number[index]:
result_x += "X"
elif digit in self.NUMBER_TO_GUESS:
result__ += "_"

return resultadoX+resultado_
return result_x + result__
31 changes: 20 additions & 11 deletions main.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,27 @@
from codebreaker import Codebreaker

intentos_totales = 10
codebreaker = Codebreaker()

intento = 0
TOTAL_ATTEMPS = 10

codebreaker = Codebreaker()

print('Jugar Codebreaker!')
attemps = 0

while intento != intentos_totales:
number = input('Numero:');
resolve = codebreaker.adivinar(number)
print(resolve)
if resolve == True:
print('You win!!')
break
print("Let's play Codebreaker!!")

while attemps != TOTAL_ATTEMPS:
attemps += 1

number = input("Number: ")
try:
resolve = codebreaker.guess(number)
if isinstance(resolve, bool):
print("You win!!")
print(f"You needed just {attemps} to guess :)")
break
else:
if resolve:
print(f"Nice try: {resolve}")
print("Please keep guessing...")
except Exception as err:
print(f"error: {str(err)}")
3 changes: 3 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
black==23.3.0
flake8==6.0.0
pre-commit==3.3.2