2016-04-18 12 views
0

Ich versuche, dieses Problem zu lösen:Meine Funktion nicht ausgeführt

Geben Sie zwei Zahlen von der Tastatur mit mindestens drei Ziffern.

Die Nummer drucken, die die Ziffernsumme größer hat.

Innerhalb einer Funktion habe ich versucht, die Werte von Variablen zu drucken. Die Werte dieser Variablen werden nicht gedruckt, daher denke ich, dass die Funktion nicht ausgeführt wird.

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 
+1

auf etwas anderes als 'sum' Benennen Sie Ihre Funktion und beobachten, was das passiert. Das wird dir helfen, das Problem zu lösen. – DJMcMayhem

+0

Warum versuchen Sie, die Nummer als Liste zu übergeben? auch Python hat eine eingebaute Summe, also ist es eine schlechte Form es neu zu definieren –

Antwort

2

Die Aufrufe der Funktion werden ausgeführt, bevor die Funktion definiert wird. Verschieben Sie es an den Anfang Ihres Programms.

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, und überschreiben nicht die builtin sum (das ist, warum ich mysum verwendet).

Auch kann die Summe der Stellen durch die Verwendung map und sum berechnet werden:

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

Oder als Funktion:

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

Wird 'while (param! = 0)' jemals verlassen? 'param' ist eine Liste. Vielleicht möchten Sie auch "a" und "b" in "int" umwandeln. –

+0

@ cricket_007 es gibt mehr Macken als im Code. Ich helfe ihm nur mit einem einzigen Schritt. Wenn er es als eine einmalige Sache braucht, gibt es den letzten Teil meiner Antwort, wo ich ein Warum zur Verfügung stelle, um die Summe der Zahl einer Zahl nett zu berechnen. –

Verwandte Themen