Guest User

Untitled

a guest
Jun 26th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. #EXERCICIO 1
  2.  
  3. #ITEM A)
  4.  
  5. def ScanStringPart(String, Segmento):
  6. # Primeiro vamos checar se o que estamos a procurar sequer existe na string.
  7. if Segmento in String:
  8. for i in range(0,len(String),len(Segmento)):
  9. # Temos que testar se o tamanho do segmento é igual ou maior do que 1.
  10. # Se for igual, não podemos usar o caso do "elif String[i + 1 : i + 1 + len(Segmento)] == Segmento:"
  11. # porque isto produziria redundâncias.
  12. if len(Segmento) == 1:
  13. if String[i : i + len(Segmento)] == Segmento:
  14. yield(i)
  15. elif len(Segmento) > 1:
  16. if String[i : i + len(Segmento)] == Segmento:
  17. yield(i)
  18. # Este elif serve para os casos onde aparece um número ímpar de caracteres antes do caractere pesquisado.
  19. elif String[i + 1 : i + 1 + len(Segmento)] == Segmento:
  20. yield(i + 1)
  21.  
  22. """
  23. Dá pra resolver o Item A) com o método str.find() ou str.index()
  24. """
  25.  
  26.  
  27. #ITEM B)
  28. """Crie uma classe que define um objeto iterável. -> OK.
  29.  
  30. Essa classe deve possuir o método construtor e os dois métodos necessários para tornar o objeto iterável (__iter__ e __next__ ). -> OK.
  31.  
  32. O método construtor deve possuir como argumentos a string e o segmento e devem ser criados atributos para ambos argumentos recebidos. -> OK.
  33.  
  34. Os métodos necessários para a iteração devem respeitar o protocolo de iteração e retornar a posição correta a cada iteração.
  35.  
  36. (Não se preocupe se aparecer a palavra None em algumas das iterações – é possível resolver sem None, mas não é necessário no exercício.)"""
  37.  
  38. class IterStrObject(object):
  39. def __init__(self, String, Segmento):
  40. self.ObjString = String
  41. self.ObjSegmento = Segmento
  42.  
  43. def __iter__(self):
  44. self.i = 0
  45. return self
  46.  
  47. def __next__(self):
  48. if self.i > len(self.ObjString):
  49. raise StopIteration
  50. self.i += 1
  51. return self.i
  52. # TESTES
  53.  
  54. StrObj = IterStrObject('bbbbbb', 'bbb')
  55.  
  56. for k in ScanStringPart(StrObj.ObjString, StrObj.ObjSegmento):
  57. print(k)
  58.  
  59. # String1 = 'engenharia'
  60. # String2 = 'bbbbbb'
  61. # Segmento1 = 'n'
  62. # Segmento2 = 'en'
  63. # Segmento3 = 'bb'
  64. # ScanStringPart(String1, Segmento1)
  65. # ScanStringPart(String1, Segmento2)
  66. # ScanStringPart(String2, Segmento3)
Advertisement
Add Comment
Please, Sign In to add comment