2016-05-04 10 views
0

Ich versuche, ein Programm zu machen, das immer die Summe von zwei dreistelligen Zahlen ergibt, abgeleitet aus der Differenz von zwei andere dreistellige Nummern, wie 1089, vorausgesetzt, dass die ersten und dritten Ziffern der ursprünglich gewählten Nummer sich um zwei oder mehr unterscheiden. Ich werde klarstellen, dass ich dazu sehr neu bin und nur die Grundlagen kenne. Das habe ich bisher.Keep immer Fehlercode - TypeError: nicht unterstützte Operandentyp (en) für -: 'int' und 'str'

num1 = input("Choose a three digit number whose first and third digits vary by at least two numbers.") 

num2 = num1[2] + num1[1] + num1[0] 

if int(num1) < int(num2): 

    difference = int(num2) - (num1) 
else: 

    difference = int(num1) - (num2) 

newNum1 = str(difference) 

newNum2 = newNum1[2] + newNum1[1] + newNum1[0] 

ten89 = int(newNum1) + int(newNum2) 

print ("If you chose your three-digit number correctly your should have gotten 1089 and you got," ,ten89) 

Ich halte den Fehlercode bekommen -

Typeerror: nicht unterstützte Operandtyp (e) für -: 'int' und 'str' - für die Linie - Differenz = int (num2) - (num1).

Ich versuchte, das int in dieser Zeile zu str, sowie andere zu ändern. Wenn mir jemand sagen könnte, wo ich falsch liege, würde ich es sehr schätzen. Vielen Dank!

+1

Sie scheinen vergessen zu haben, zu 'hinzufügen int' hier:' Differenz = int (num2) - (num1) 'und hier:' Differenz = int (num1) - (num2) '. –

Antwort

3

Sie erhalten diesen Fehler, weil num1 eine Zeichenfolge ist.

Alles, was von input zurückgegeben wird, ist eine Zeichenfolge. Sie müssen in eine int konvertieren, um mathematische Operationen verwenden zu können.

>>> num1 = input("Choose a three digit number whose first and third digits vary by at least two numbers.") 
>>> ..... 123 
>>> print(type(num1)) 
>>> <class 'str'>