Mais um problema do Coding Kata solucionado. Apesar deste problema estar no Beginner ++ ele é muito mais fácil que muitos do Beginner. Uma linha de código foi suficiente para resolvê-lo.
Veja o código abaixo e teste à vontade. Disponível no Git também.
import unittest
def ISBN(isbn):
"""
Autor: fzmaster
Data: 29/12/2010
Problema: Books for Mars
http://codingkata.org/katas/unit/mars-books
Calcular digito verificador do ISBN
"""
return (10-(3*(int(isbn[1]) + int(isbn[3]) + int(isbn[5]) + int(isbn[7]) + int(isbn[9]) + int(isbn[11])) + int(isbn[0]) + int(isbn[2]) + int(isbn[4]) + int(isbn[6]) + int(isbn[8]) + int(isbn[10])) % 10) % 10
class ISBNTestCase(unittest.TestCase):
def test_caso1(self):
assert ISBN('978030640615') == 7
def test_caso2(self):
assert ISBN('978857780013') == 1
def test_caso3(self):
assert ISBN('978857522247') == 8
def test_caso4(self):
assert ISBN('978857522212') == 6
if __name__ == '__main__':
unittest.main()
Tags: códigos, desenvolvimento, programacao, python, tddO Python não tem nativamente variáveis do tipo Enum.
Entretanto é possível instalar um módulo que pode solucionar este problema. Siga os passos abaixo:
- Instale o Python;
- Instale o SettupTools
- Baixe o Enum (versão atual: 0.4.4) e descompacte-o
- Abra o prompt e dentro do diretório do Enum digite:
- Linux: $ python setup.py install
- Windows: C:\diretorio\> python setup.py install
Pronto, você instalou o módulo corretamente.
Agora você pode testá-lo.
Abra outro prompt e digite:
$ python
>>> import enum
>>>
Se não subiu erros, a importação foi feita com sucesso.
Tags: aula, curso, programacao, pythonMais um problema do Coding Kata solucionado. Ainda estamos no Beginner ++ mas estamos fazendo todos, um a um, calmamente.
Veja o código abaixo e teste à vontade.
Só lembrando que para este código foi instalado o módulo Enum. Aproveite e baixe-o. Clique aqui para ver como instalar este módulo em Python.
O código também está disponível no Gist.
import unittest
from enum import Enum
class Cinema():
"""
Autor: fzmaster
Data: 28/12/2010
Problema: Movie Tickets
http://codingkata.org/katas/unit/movie-tickets
Calcular o valor do ingresso do cinema dadas as condicoes pre estabelecidas
"""
precoTicket = 0.00
pessoas = 0
precoTotal = 0.00
dias = Enum('DOM', 'SEG', 'TER', 'QUA', 'QUI', 'SEX', 'SAB')
dia = ''
def startPurchase(self, runtime, day, isParquet, is3D):
"""
Explicacao da funcao
"""
self.dia = day
if runtime > 120:
self.precoTicket += 1.50
if bool(is3D):
self.precoTicket += 3.00
if not bool(isParquet):
self.precoTicket += 2.00
if str(self.dia) == str(self.dias[4]):
self.precoTicket -= 2.00
def addTicket(self, age, isStudent):
precoPadrao = 0.00
if bool(isStudent):
precoPadrao = 8.00
else:
precoPadrao = 11.00
if age >= 65:
precoPadrao = 6.00
elif age <= 13:
precoPadrao = 5.50
self.pessoas +=1
self.precoTotal += precoPadrao + self.precoTicket
def finishPurchase(self,):
if self.pessoas >= 20 and str(self.dia) == str(self.dias[4]):
self.precoTotal += self.pessoas*2.00
return self.precoTotal
class MovieTestCase(unittest.TestCase):
def test_movie1(self):
compra = Cinema()
compra.startPurchase(130,'TER', False, True)
compra.addTicket(14,True)
compra.addTicket(30,False)
assert compra.finishPurchase() == 32.00
if __name__ == '__main__':
unittest.main()
Tags: coding kata, kata, programacao, python, tddMais um problema do Coding Kata resolvido.
Agora foi o The Cube que consiste em determinar se a soma dos dígitos da entrada são primos.
Confira o código abaixo que também está disponível no Gist.
import unittest
def ePrimo(valor):
for i in range(2, valor/2 +1):
if (valor % i) == 0:
return False
return True
def CPN(codigo1, codigo2, codigo3):
"""
Autor: fzmaster
Site: http://www.fzmaster.info
Data: 26/12/2010
Problema: The Cube
http://codingkata.org/katas/unit/cube
Dados 3 codigos (string) , verificar se algum deles eh primo. Se for retorna True, caso contrario False
"""
total1 = total2 = total3 = 0
for i in codigo1:
total1 += int(i)
for j in codigo2:
total2 += int(j)
for k in codigo3:
total3 += int(k)
if ePrimo(total1) or ePrimo(total2) or ePrimo(total3):
return True
else:
return False
class ContainPrimeNumberTestCase(unittest.TestCase):
def test_1(self):
assert CPN('12','4','4') == False
def test_2(self):
assert CPN('123','4','4') == False
def test_3(self):
assert CPN('31','7','4') == True
if __name__ == '__main__':
unittest.main()

Postado em