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

[Dúvida] 'float' object has no attribute 'round'

no exemplo de rendimento médio, pra descobrir o n foi usado o código

n = (z * (sigma / e)) ** 2
n

mas depois, ao adicionar int(n.round()) pra arredondar o resultado, deu erro aqui, aparecendo "AttributeError: 'float' object has no attribute 'round'"

o resultado de 4243 já foi retornado, a questão estaria resolvida, mas queria entender porque deu esse erro aqui pra mim, sendo que no vídeo não deu erro nenhum.

obrigada :)

2 respostas
solução!

Bom dia, Ana! Como vai?

Peço desculpas pela demora em responder o seu tópico.

O erro ocorre porque você está tentando chamar o método .round() em um objeto do tipo float e, em seguida, tenta converter o resultado para um inteiro usando int(). No entanto, o método .round() não existe para objetos do tipo float em Python.

Então como o professor conseguiu usar? Essa pergunta é respondida facilmente, é porque o n dele pertence a outro tipo de objeto, o numpy.float64, e esse, sim, tem o método round().

Mas como posso fazer com que meu n seja desse tipo também? Isso é feito quando calculamos o z. O valor dele é definido ao usamos o método ppf da biblioteca norm, como você pode ver abaixo:

from scipy.stats import norm
z = norm.ppf(0.975)
type(z)

Ao executar os códigos acima você terá um retorno do tipo da variável, e o tipo será o mesmo que comentei anteriormente, sendo o tipo de objeto que tem o método round. Com isso, quando fazemos a seguinte operação, estaremos atribuindo esse tipo para a variável que recebe o resultado:

n = (z * (sigma / e )) ** 2
int(n.round())

Lembre-se que entre essas duas operações que mostrei existem a definição das variáveis sigma e e, mas, caso siga as instruções mostradas aqui, o erro não deve ocorrer novamente.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

hmm entendi. voltei no código pra verificar e de fato eu tinha definido o z como z = 1.96 direto. foi isso que causou o erro né? muito obrigadaa! ;)