#python
Вопрос:
Извините, если мой пост грязный или его трудно понять. Я только учусь программировать и понимать python. У меня есть домашнее задание, где мне дают n1 (случайное число от 0-10) и n2(от 30-45). Моя работа состоит в том, чтобы напечатать каждое число между n1 и n2, которое делится на 2, но не на 3.
for x in range(n1,n2): if x%2==0: print(x) if x%3==0: continue
Так что теперь это мой код. Я пробовал, и это работает, но он печатает числа, такие как 6 и 12, которые делятся на 3. Как мне это исправить?
Комментарии:
1. В вашем коде есть синтаксические ошибки. Отступ имеет решающее значение в Python. Пожалуйста, исправьте это, отредактировав свой вопрос
Ответ №1:
Вам просто нужно добавить здесь дополнительное условие:
for x in range(n1,n2): if x % 2 == 0 and x % 3 != 0: print(x)
Или чтобы continue
это произошло до печати, например:
for x in range(n1,n2): if x%3 == 0: continue if x%2 == 0: print(x)
Происходило то, что вы сначала печатали, а затем проверяли условие делимости на 3, что означало, что, хотя вы «пропустили» цикл, вы все равно уже напечатали.
Комментарии:
1. Условия также могут быть использованы как
if not x%2
, так как это будет равно Истине, если остаток равен нулю. Кроме того, будьте осторожны, этоrange
включает нижнюю границу, но исключает верхнюю. Такrange(a, b)
что перейдем отa
кb-1
. Если ваша цель состоит в том , чтобы пройти весь путь доb
конца, вы должны использоватьrange(a, b 1)
Ответ №2:
Вам нужно выбрать случайное число между 0-10 для n1 и 30-45 для n2. Импортируйте случайный модуль и используйте randint()
его для получения случайных номеров. Кроме того, вы можете поместить оба условия в одно и то же if
утверждение. Ваш код:
import random n1=random.randint(0,10) n2=random.randint(30,45) for i in range(n1,n2): if i%2==0 and i%3!=0: print(i)