Ask Your Question

# Rounding the values of a mapping

The problem is only with the round(, 2) code

f(x)=round((1/add([10, 20 ,30]))*x,2)
percent_votes_cand=list(map(f,[10, 20 ,30]))
percent_votes_cand


This gives an error since round() couldn't be applied to a theoretical argument. The following code works but I want to obtain truncated to 2 digits percentages not elements of Q

edit retag close merge delete

## Comments

Can you say what result you get and what result you would prefer to get?

## 1 Answer

Sort by » oldest newest most voted

You should not use a symbolic function for such purpose, symbolic functions should be understood as mathematical expressions, they are usefull if you want to view them as a mathematical object, for example if you want to derivate them.

Instead use a Python function, which is an object that returns a value given an entry.

There are two equivalent ways to define a Python function:

sage: def f(x):
....:     return round(1/add([10,20,30]) * x, 2)


Or, the shorter

sage: f = lambda x : round(1/sum([10,20,30]) * x, 2)


In both cases, you can do:

sage: percent_votes_cand=list(map(f,[10, 20 ,30]))
sage: percent_votes_cand
[0.17, 0.33, 0.5]

more

## Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

## Stats

Asked: 2021-01-15 15:11:13 +0200

Seen: 37 times

Last updated: Jan 18