Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Função __len__ não funciona

Quando tento usar a função __len__ ela não retorna o valor esperado. Segue o código:

from regex import *

if permissao == True:
    class extrato_argumento:
        def __init__(self, url):
            if self.Url_eh_valida(url):
                self.url = url
            else:
                raise AttributeError("Url inválida!!")

        def __len__(self):
            return 10

        @staticmethod
        def Url_eh_valida(url):
            if url:
                return True
            else:
                return False

        def extrai_argumento(self, url):
            indiceFinal = url.find("%")
            indiceInicial = url.find("$")
            indiceFinal1 = url.find("!")
            indiceInicial1 = url.find("@")
            moedaOrigem = url[indiceInicial + 1 : indiceFinal]
            moedaFinal = url[indiceInicial1 + 1 : indiceFinal1]
            valor = url.find("=")
            valorFinal = url[valor + 1 : ]
            if moedaOrigem.lower() == "moedaorigem":
                self.trocaMoedaOrigem(moedaOrigem, valorFinal)
            if moedaFinal.lower() == "moedadestino":
                self.trocaMoeda(moedaFinal, valorFinal)
            else:
                print(f'Conversão de {moedaOrigem} para {moedaFinal}')
                print(f'Estimada no valor de {valorFinal} {moedaOrigem}')

        def trocaMoeda(self, moedaFinal, valorFinal):
            moedaFinal = moedaFinal.replace("moedaDestino", "dolar")
            print(moedaFinal.lower())

        def trocaMoedaOrigem(self, moedaOrigem, valorFinal):
            moedaOrigem = moedaOrigem.replace(moedaOrigem, "real")
            print(f'Estimada no valor de {valorFinal} {moedaOrigem}')
            print(f'Conversão de {moedaOrigem.lower()} para')
else:
    raise TypeError("URL errada!")

extrato_argumento("https://sla")

O código onde chamo a função:

from ExtratoUrl import extrato_argumento
from regex import *
'''
argumento = 'moeda-origem$real.'
index = argumento.find("$")
print(index)
index2 = argumento.find(".")
io = argumento[index + 1 : index2]
print(io)
'''

url = "https://bytebank/$moedaOrigem%-@moedaDestino!&valor=10"
argumento = extrato_argumento(url)
''''
print(argumento)
'''
argumento = argumento.extrai_argumento(url)

O código regex:

import re
from ExtratoUrl import *
urlbyte = "https://bytebank"
url = "https://bytebank"
if url.startswith(urlbyte):
    print("Acesso permitido!!")
    permissao = True
else:
    print("Acesso Negado!!")
    permissao = False

email = "Meu número é 5545-5555, ah i u du zeu juseh eh 555557665 "
email1 = "o seu é 8888-8888"

padrao = "[0-9]{4,5}[-]*[0-9]{4}"

retorno = re.findall(padrao, email1)
print(retorno)

E a resposta no console:

C:\Users\evers\PycharmProjects\Strings\venv\Scripts\python.exe C:/Users/evers/PycharmProjects/Strings/main.py
Acesso permitido!!
['8888-8888']
Estimada no valor de 10 real
Conversão de real para
dolar

Process finished with exit code 0

Quando tento usar a função __str__ dá erro também, alguém sabe me dizer por quê? também observei que a versão do python do instrutor é a 3.7, o fato de dar errado está atrelado ao fato da minha versão ser a 3.8?

2 respostas
solução!

A len para string é assim

string = "String"
len((string))

Espero ter ajudado

Obrigado Gabriel, ajudou muito :)