Вам не нужны циклы для выполнения sh этой задачи, вот простой и забавный математический метод, который Python позволяет нам легко реализовать: - Во-первых, создать набор от 0 до конца с шагами по 3 с, то есть {0,3,6, ... end} это даст вам все элементы, которые делятся на 3 в пределах границы вашего конца (при этом конец не включен), в Python это делается следующим образом: set_of_3=set(range(0,b,3))
просто, а? - Два, сделайте то же самое, но для 5, set_of_5=set(range(0,b,5))
- Три, сложите эти множества вместе: set_of_all=set_of_3.union(set_of_5)
Теперь у вас есть все элементы, делимые на 3 и 5 от 0 до конца, но вы этого не хотите, вы просто от начала до конца просто удалите все числа от 0 до начала из set_of_all
, путем: result = set_of_all - set(range(0,a))
и просто верните len()
этого результата. Ваш полный код:
def div_3_5(start,end):
set_of_3 = set(range(0,end,3))
set_of_5 = set(range(0,end,5))
set_of_all = set_of_3.union(set_of_5)
result = set_of_all - set(range(0,start))
return len(result)
Немного запутанно, я знаю, но весело! По крайней мере для меня. Надеюсь, это поможет.
РЕДАКТИРОВАНИЕ
Да, я не заметил, что вы сказали, что должны использовать while
l oop, вы можете сделать эту версию своего кода :
def div_3_5(start,end):
list = []
while start<end:
if start%3==0 or start%5==0:
list.append(start)
start+=1
return len(list)
Используйте силу Python и забудьте об этих C -i sh методах, и, что не так с вашим кодом, строка: count + 1
не работает в Python, вы должны сделать это: count+=1