Ich habe ein
Problem bei Hackerrank gelöst und das
Problem ist wie folgt: < /p>
modifiziert Kaprekar < /strong> Zahl ist ein positives Ganzzahlen -N -Nummern n mit D -Ziffern, sodass wir in zwei Teile. Ein rechter Handstück mit D -Znigungen. Die SUB -HAND -Digiten enthalten. Zahl (d. H. L + r = n). Zwei Teile entsprechen der ursprünglichen Zahl. Also habe ich das folgende Code geschrieben: < /p>
Code: Select all
def checkIsKaprekar( num ):
string_num = str(num**2)
if num == int(string_num[:len(string_num)//2]) + int(string_num[len(string_num)//2:]):
return True
kaprekars = [ str(i) for i in range(int(input()),int(input())) if checkIsKaprekar(i) == True ]
print (' '.join(kaprekars))
Das
Problem mit der obigen Lösung ist, wenn wir einstellige Zahlen übergeben, sie werden in eine Zeichenfolge konvertiert, von der die rechte Hälfte die Zahl selbst ist und die linke Hälfte '' ist. Jetzt konvert ich diese Zeichenfolgen in int () , was eine Ausnahme ausgelöst hat.def checkIsKaprekar( num ):
string_num = str(num**2)
left_string = string_num[:len(string_num)//2]
right_string = string_num[len(string_num)//2:]
left_num = int(left_string) if left_string != '' else 0
right_num = int(right_string) if right_string != '' else 0
if num == left_num + right_num:
return True
kaprekars = [ str(i) for i in range(int(input()),int(input())) if checkIsKaprekar(i) == True ]
print (' '.join(kaprekars))
< /code>
Aber ich mag diesen Code nicht, obwohl er den Zweck löst. Wie kann ich meinen ursprünglichen Code optimieren, um die richtige Ausgabe zu erzeugen?>
Ich habe ein [url=viewtopic.php?t=26065]Problem[/url] bei Hackerrank gelöst und das [url=viewtopic.php?t=26065]Problem[/url] ist wie folgt: < /p>
modifiziert Kaprekar < /strong> Zahl ist ein positives Ganzzahlen -N -Nummern n mit D -Ziffern, sodass wir in zwei Teile. Ein rechter Handstück mit D -Znigungen. Die SUB -HAND -Digiten enthalten. Zahl (d. H. L + r = n). Zwei Teile entsprechen der ursprünglichen Zahl. Also habe ich das folgende Code geschrieben: < /p>
[code]def checkIsKaprekar( num ):
string_num = str(num**2)
if num == int(string_num[:len(string_num)//2]) + int(string_num[len(string_num)//2:]):
return True
kaprekars = [ str(i) for i in range(int(input()),int(input())) if checkIsKaprekar(i) == True ]
print (' '.join(kaprekars))
[/code]
Das [url=viewtopic.php?t=26065]Problem[/url] mit der obigen Lösung ist, wenn wir einstellige Zahlen übergeben, sie werden in eine Zeichenfolge konvertiert, von der die rechte Hälfte die Zahl selbst ist und die linke Hälfte '' ist. Jetzt konvert ich diese Zeichenfolgen in int () , was eine Ausnahme ausgelöst hat.def checkIsKaprekar( num ):
string_num = str(num**2)
left_string = string_num[:len(string_num)//2]
right_string = string_num[len(string_num)//2:]
left_num = int(left_string) if left_string != '' else 0
right_num = int(right_string) if right_string != '' else 0
if num == left_num + right_num:
return True
kaprekars = [ str(i) for i in range(int(input()),int(input())) if checkIsKaprekar(i) == True ]
print (' '.join(kaprekars))
< /code>
Aber ich mag diesen Code nicht, obwohl er den Zweck löst. Wie kann ich meinen ursprünglichen Code optimieren, um die richtige Ausgabe zu erzeugen?>