user6221422
user6221422

Reputation:

My function doesn't execute

I'm trying to solve this problem:

Enter two numbers from keyboard with at least three digits.

Print the number that have the digits sum greater.

Inside of a function I have tried to print the values of variables. The values of those variables is not printed, so I think that the function is not being executed.

a = input('\n Enter the first number : ' )
x = sum([a])
print('\n The sum of the digits number ' +str(x)+ ' este : %d' %x)

b = input('\n Enter the second number : ')
y = sum([b])
print('\n The sum of the digits number ' +str(y)+ ' este : %d' %y)

def sum(param):
    var = 0
    while(param != 0):
        var += (param % 10)
        print(var)
        param /=  10
        print(param)
    return var

Upvotes: 0

Views: 60

Answers (1)

Reut Sharabani
Reut Sharabani

Reputation: 31339

The calls to the function happen before the function is defined. Move it to the start of your program.

def mysum(param):
    var = 0
    while(param != 0):
        var += (param % 10)
        print(var)
        param /=  10
        print(param)
    return var

a = input('\n Enter the first number : ' )
x = mysum([a])
print('\n The sum of the digits number ' +str(x)+ ' este : %d' %x)

b = input('\n Enter the second number : ')
y = mysum([b])
print('\n The sum of the digits number ' +str(y)+ ' este : %d' %y)

Oh, and don't override the builtin sum (that's why I used mysum).

Also, the sum of digits can be computed by using map and sum:

sum_of_digits = sum(int(x) for x in str(123) if x.isdigit())

Or as a function:

def sum_of_digits(numstr):
    return sum(int(x) for x in str(numstr) if x.isdigit())

Upvotes: 2

Related Questions