Home > Mobile >  Easy way to square `*args`
Easy way to square `*args`

Time:02-23

The code below prints the square root of 7 6 3 (=4).

import math

def notdist(*args):
    return math.sqrt(sum(args))
    
print(notdist(7,6,3))

I want somenting like this:

import math

def dist(*args):
    return math.sqrt(sum(args**2))
    
print(dist(7,6,3))

for calculating the distance from O(0,0), but this is giving the error:

unsupported operand type(s) for ** or pow(): 'tuple' and 'int'

I know that I can use another code like:

import math

def uglydist(*args):
    s = 0
    for i in range(len(args)):
        s = s   args[i]**2
    return math.sqrt(s)

print(uglydist(3,4)) # = 5

but I 'm wondering if it is an easy way to modify the first code. Something like the second code, but correct.

Thanks in advance!

CodePudding user response:

Perhaps with a generator expression inside sum:

def dist(*args):
    return math.sqrt(sum(x**2 for x in args))

CodePudding user response:

using the for like this would be better, but I think this too isn't what you wanted

import math

def NotSoGoodDist(*args):
    s = 0
    for i in args:
        s = s   i**2
    return math.sqrt(s)

print(NotSoGoodDist(3,4)) # = 5
  • Related