Итак, я пытаюсь создать этот код Капрекара, который получает два числа, преобразует их в диапазон, и в конце он получает список чисел Капрекара из исходного диапазона. Число Капрекара - это число, которое при возведении в квадрат get разделяется на две части, а когда сложенные пополам цифры дополняют друг друга, оно равно исходному числу. Число в квадрате может заканчиваться нечетным числом цифр. Я просто новичок в python и мне интересно , как я могу исправить эту некорректную буквальную проблему , чтобы заставить код работать? Я почти уверен, что это связано с тем, что переменная "middle" должна быть плавающей точкой, так как иногда середина может заканчиваться на .5 в конце, и я читал кое-что о том, что если вы попытаетесь преобразовать float в int, int в конечном итоге будет числом до .5, поэтому я положил +1 во второй половине. Это весь код. Ошибка находится в секции second_half.
#Kaprekar
# User enters 2 numbers, and range of Kaprekar numbers are displayed between the range.
#Create 2 inputs for the numbers, and create an index that makes a range between them.
minimum = int(input("Enter a starting number from 1 to 5000: "))
maximum = int(input("Enter an ending number from 1 to 5000: "))
not_kaprekar = [10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 100000000]
num_range = list(range(minimum,maximum+1))
for original in num_range:
original_sqrt = original**2
digits = (str(original_sqrt))
digits_length = len(digits)
#First you need to establish the amount of digits there will be from the squared number.
middle = digits_length / 2
for middle in num_range:
first_half = int("".join(digits[0:int(middle)]))
second_half = int("".join(digits[int(middle) + 1:-1]))
#in this part, you are getting the indexes of the squared number.
if (first_half) + (second_half) == original and (original not in not_kaprekar):
kaprekar_list.append(original)
print(kaprekar_list)
помощь приветствуется,