@godwell

Так ли сделал как убрать множество повторений в цикле?

"""
Пользователь вводит с клавиатуры два числа (начало и конец диапазона).
Требуется проанализировать все числа в этом диапазоне.
Вывод на экран должен проходить по правилам, указанным ниже.
Если число кратно 3 (делится на 3 без остатка) нужно вывести слово Fizz.
Если число кратно 5 нужно вывести слово Buzz.
Если число кратно 3 и 5 нужно вывести Fizz Buzz.
Если число не кратно не 3 и 5 нужно вывести само число.
"""

try:
    # 1
    print('Введите два числа (начало и конец диапазона): ')
    a = int(input('начало диапазона = '))
    b = int(input('конец диапазона = '))
    print()

    if a == b:
        raise RuntimeError('Числа не могут быть одинаковыми')

    # 3
    for i in range(a, b):
        if i % 3 == 0:
            i = 'Fizz'
            print(i, end=' ')
    print()

    for i in range(a, b):
        if i % 5 == 0:
            i = 'Buzz'
            print(i, end=' ')
    print()

    for i in range(a, b):
        if i % 3 == 0 and i % 5 == 0:
            i = 'Fizz Buzz'
            print(i, end=' ')
    print()

    for i in range(a, b):
        if i % 3 != 0 and i % 5 != 0:
            print(i, end=' ')
    print()


except ValueError:
    print('ошибка формата ввода')
except RuntimeError as err:
    print(err)
  • Вопрос задан
  • 2108 просмотров
Пригласить эксперта
Ответы на вопрос 1
@MaratPetrov96
Нет, всё не так.

Получается, что числа перебираются каждый раз заново.

try:
# 1
print('Введите два числа (начало и конец диапазона): ')
a = int(input('начало диапазона = '))
b = int(input('конец диапазона = '))
print()

if a == b:
raise RuntimeError('Числа не могут быть одинаковыми')

# 3
for i in range(a, b):
    if i % 3 == 0:
        i = 'Fizz'
    elif i % 5 == 0:
        i = 'Buzz'
    elif i % 15 == 0:
        i = 'Fizz Buzz'
    print(i,end='\n\n')

except ValueError:
print('ошибка формата ввода')
except RuntimeError as err:
print(err)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы