Tentei fazer um for loop na função para retornar todas as informações contidas na váriavel dados mas o return ja retorna a primeira incidencia do laço e encerra o loop. Tem alguma forma de eu conseguir fazer o output das informações contidas em dados sem precisar parar de usar o for loop e sem inserir essas informações em uma estrutura de dados como um array?
import re
import requests
class BuscaEndereco:
def __init__(self, cep):
if self.cep_e_valido(cep):
self.cep = cep
else:
raise ValueError("CEP Inválido")
def __str__(self):
return self.format_cep()
@staticmethod
def cep_e_valido(cep):
if type(cep) != str:
raise TypeError(f"Tipo do parámetro inválido. Tipo esperado: <class 'str'>, Tipo recebido: {type(cep)}")
else:
if len(cep) == 8:
return True
else:
return False
def format_cep(self):
# O Retorno da função pode ser feito por fatiamento de Strings ou usando a biblioteca ReGex(re)
# Usando ReGex
padrao = "([0-9]{5})([0-9]{3})"
cep_para_formartar = re.search(padrao, self.cep)
cep_formatado = f"{cep_para_formartar.group(1)}-{cep_para_formartar.group(2)}"
# Usando Fatiamento de Strings
cep_formatado_2 = f"{self.cep[:5]}-{self.cep[5:]}"
return cep_formatado
def acesso_via_cep(self):
url = f"https://viacep.com.br/ws/{self.cep}/json/"
requisicao = requests.get(url)
dados = requisicao.json()
for key in dados:
return f"{key}: {dados[key]}"