2016-10-02 4 views
2

Ich versuche, ein Programm in Python zu machen, das eine Benutzereingabe akzeptiert und überprüft, ob es eine Kaprekar-Nummer ist. Ich bin noch ein Anfänger und hatte viele Probleme, aber mein Hauptproblem, das ich jetzt nicht lösen kann, ist, wie ich alle Möglichkeiten in einer Liste zusammenfassen würde, mit nur zwei Variablen. Ich werde es wahrscheinlich nicht sehr gut erklären, hier ist ein Beispiel:Addieren Sie alle Möglichkeiten in einer Liste, mit zwei Variablen

Ich habe eine Liste, die die Nummern ['2', '0', '2', '5'] enthält. Wie würde ich machen Python machen 2 + 025, 20 + 25 und 202 + 5?

Es wäre in einer if else-Anweisung, und sobald es die vom Benutzer eingegebene Nummer gleich wäre, würde es aufhören.

(Here ist das, was der gesamte Code aussieht, wenn es helps- wo es if 1 == 0: zur Zeit sagt, sollte es ihnen Zugabe werden.)

Antwort

2

Sagen Sie bitte mit

a = ['2', '0', '2', '5'] 

starten Dann können Sie laufen

>>> [(a[: i], a[i: ]) for i in range(1, len(a))] 
[(['2'], ['0', '2', '5']), (['2', '0'], ['2', '5']), (['2', '0', '2'], ['5'])] 

, um alle möglichen zusammenhängenden Splits zu erhalten.

Wenn Sie es wollen, weiter zu verarbeiten, können Sie es über

>>> [(int(''.join(a[: i])), int(''.join(a[i: ]))) for i in range(1, len(a))] 
[(2, 25), (20, 25), (202, 5)] 

Zahlen ändern oder aufaddieren

>>> [int(''.join(a[: i])) + int(''.join(a[i: ])) for i in range(1, len(a))] 
[27, 45, 207] 
+0

Vielen Dank, das ist es! – julianaakkh

+0

Sie sind herzlich willkommen. Alles Gute. –

0

keine direkte Antwort auf Ihre Frage, aber man kann ein schreiben Ausdruck, um zu bestimmen, ob eine Zahl, N, eine Krapekar-Nummer prägnanter ist.

>>> N=45 
>>> digits=str(N**2) 
>>> Krapekar=any([N==int(digits[:_])+int(digits[_:]) for _ in range(1,len(digits))]) 
>>> Krapekar 
True 
Verwandte Themen