Проблема в программе Python, чтобы найти 2 цифры счастливых чисел (застрял в цикле) - PullRequest
0 голосов
/ 04 декабря 2018

Я новичок в Python, и я только что написал программу, чтобы найти 2 цифры счастливые числа .мы должны дать ему двузначное число, а затем, если это счастливое число, оно должно напечатать, что это счастливое число, и если это не так, оно должно бесконечно зацикливаться в цикле, который не включает 1.

это мой код:

input_number = int(input("Please Enter a positive 2 digits number\n"))

digits = [int(i) for i in str(input_number)]

while input_number != 1:
    for i in range(len(digits)):
        sum_of_squares = digits[i]**2 + digits[i-1]**2
        input_number = sum_of_squares
    print(input_number)
    if input_number == 1:
        print("Happy ;)")
        break

моя проблема в том, что моя программа никогда не выходит из цикла, например, 49 - это счастливое число, но когда я его ввожу, оно печатает 97 бесконечно.что не так с моим кодом?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Небольшое отклонение от ответа @ joyal-mathew.Это будет работать для любого количества цифр

input_number = int(input("Please Enter a positive number\n"))

while input_number != 1:
    digits = [int(i) for i in str(input_number)]
    digit_squares = [i*i for i in digits]
    sum_of_squares = sum(digit_squares)
    input_number = sum_of_squares
    print(input_number)
    iter_count+=1
    if input_number == 1:
        print("Happy ;)")
        break
0 голосов
/ 04 декабря 2018

Внутри цикла вам нужно изменить значение digits.Кроме того, поскольку для двузначных чисел вы можете просто использовать индексы списка 0 и 1.

input_number = input()

digits = [int(i) for i in input_number]
while input_number != 1:
    sum_of_squares = digits[0]**2 + digits[1]**2
    digits = [int(i) for i in str(sum_of_squares)]
    input_number = sum_of_squares
    print(input_number)
    if input_number == 1:
        print("Happy ;)")
        break
...