Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PyCharm: module 'math' has no attribute 'prod'

I'm using Python 3.7 and my editor is PyCharm. When I call prod method from math module, it gives the error:

AttributeError: module 'math' has no attribute 'prod'

How can I fix it? (It works for other methods like floor, sqrt and etc. The only problem is prod.)

Here's my piece of code:

import math

numbers = [1, 2, 3, 4]

print(math.prod(numbers))

In general, my question is why this problem happens and how can I handle similar situations?

Thanks.

like image 635
Mohammad Ali Nematollahi Avatar asked Sep 03 '20 16:09

Mohammad Ali Nematollahi


People also ask

How do I import a math module into Pycharm?

File >> Settings >> Project interpreter. You should see a list of currently installed packages/libraries. If the module is not specified in there click the plus sign and look for your module in there. Also make sure you specify it correctly when you import it.

What is math prod in Python?

prod() method in Python is used to calculate the product of all the elements present in the given iterable. Most of the built-in containers in Python like list, tuple are iterables. The iterable must contain numeric value else non-numeric types may be rejected.

What is math comb in Python?

The math. comb() method returns the number of ways picking k unordered outcomes from n possibilities, without repetition, also known as combinations. Note: The parameters passed in this method must be positive integers.


1 Answers

math.prod is a new function (from Python 3.8).

If you want to have a more compatible code, you should use the old way:

from functools import reduce
import operator

reduce(operator.mul, [1,2,3,4], 1)

Also module itertools is often useful (if you look at the documentation, you have many examples on how to implement mathematical operations).

To answer your general question: how to handle such cases:

Python documentation is very good. You should refer much more on it, e.g. if you have errors, but also to check which parameters you need, and the return value. Human memory is limited, so we relay a lot to the documentation, especially checking the special cases (what about if the list is empty?). So I (and many people) have this URL https://docs.python.org/3/library/index.html saved on bookmarks. Note: Just do not trust fully documentation, do also few tests (especially if the function description is long, and there are many special cases: your special case could be handled by a different "special case" switch.

like image 106
Giacomo Catenazzi Avatar answered Dec 07 '22 19:12

Giacomo Catenazzi