не могу запустить итерацию по целому числу,

Рейтинг: 0Ответов: 2Опубликовано: 06.07.2023
def sum_and_dif():
    summ = 0
    amount = 0
    number = int(input("Введите число: "))
    for numbers in number:
        summ += numbers
        amount += 1

    diff = summ - amount

    print(f'Сумма чисел: {summ}')
    print(f'Количество цифр в числе: {amount}')
    print(f'Разность суммы и количества: {diff}')

while True:
    sum_and_dif()

Ответы

▲ 2

Вы наверно хотели так:

while True:                            
    summ = 0
    amount = 0
    number = input("Введите число: ")     # пока никакой перевод на целое число
    if not number:                        # то же самое как  if number == ""
        break
    for numbers in number:
        summ += int(numbers)              # только здесь перевод!
        amount += 1

    diff = summ - amount

    print(f'Сумма чисел: {summ}')
    print(f'Количество цифр в числе: {amount}')
    print(f'Разность суммы и количества: {diff}')

Объяснение:

  1. Ваш цикл бесконечен, никакой команды break. Я добавил эту команду, когда юзер не вводит число, а только нажмет на клавиш Enter.
  2. Итерировать возможно строку чисел, т.е. цифру после цифры введенного числа. Потому введенное число не переводим на int, только эго отдельные цифры.

Примечание:

Вместо имени numbers лучше использовать что-то друхое, например digit:

    for digit in number:
        summ += int(digit) 
▲ 0

Так как целое число это не итерабельный объект. Для работы вашего кода можете использовать функцию range.

Функция range() возвращает объект, создающий последовательность чисел, начинающуюся с 0 (по умолчанию), последовательно увеличивающуюся (по умолчанию на 1) и останавливающуюся перед заданным числом (обязательный параметр)

Вот измененный код:

def sum_and_dif():
    summ = 0
    amount = 0
    number = int(input("Введите число: "))
    for numbers in range(number):
        summ += numbers
        amount += 1

    diff = summ - amount

    print(f'Сумма чисел: {summ}')
    print(f'Количество цифр в числе: {amount}')
    print(f'Разность суммы и количества: {diff}')

while True:
    sum_and_dif()