Я хочу исключить все числа, которые не делятся на 7 и не кратны 5 в диапазоне чисел от (0,300) - PullRequest
0 голосов
/ 02 февраля 2019

В основном я должен получить список чисел, которые делятся на 7, но не кратны 5. Но по какой-то причине, когда я ставлю условия, он говорит мне, что у меня ошибка.

for i in [x for x in xrange(0,100) if x%7 ==0 and if x%5 !=0 ]:
    print i

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Ваше понимание списка неверно.Это должно быть что-то похожее на:

[x for x in xrange(100) if x%5 and not x%7]

Еще лучше (эффективнее) будет что-то похожее на

[x for x in xrange (7, 100, 7) if x%5]

Еще лучше будет ... Нет, мы просто остановимсяздесь пока.

0 голосов
/ 02 февраля 2019

Я знаю, что вы опубликовали что-то вроде понимания списка, но это немного сложно для чтения.Итак, несколько вещей ...

  1. Я бы попробовал написать это в виде многострочного цикла перед тем, как сжать его до понимания списка.
  2. Я не уверен, почему выздесь есть «х», а «xrange» не имеет смысла. Редактировать: Просто понял, почему я не распознаю xrange, и это потому, что я никогда не работал с Python 2.x

Так что, подумав, вы в основном ищете любое число из0-300, который делится на 7, но не кратен 5.

Означает, что у нас есть несколько вещей ...

  • range (0,301): Так как диапазон не включаетсянашего последнего значения мы хотим, чтобы n + 1
  • Наше число, скажем, "i" - это оба ... "i% 7 == 0" и "i% 5! = 0"

Итак, давайте посмотрим построчно

for i in range(0,301):

Ладно, круто, теперь вам не нужно вложенное для понимания списка циклов, как вы это делали в своем примере.Теперь вам нужно знать, «если» я ____... Итак, нам нужно выражение if.

if i%7==0 and i%5!=0:

Видите логику?И, конечно же, если оператор находится внутри нашего цикла for для циклического перебора всех значений в нашем диапазоне.

Наконец, если наше «i» соответствует нашим критериям, то мы можем вывести все значения.

print(i)

Итак, наш окончательный код выглядит так ...

for i in range(0,301):
    if (i % 7 == 0) and (i % 5 != 0):
        print(i)

Конечно, есть способы сделать это более элегантным, но это общая идея.

Понимание списка:

party = [i for i in range(0,301) if i%7==0 and i%5!=0]
print(party)

Это хранит их все в списке, чтобы вы могли получить к ним доступ в любое время.Или вы можете распечатать его, не назначая его, конечно.

Редактировать: Название и то, что вы говорите в теле, являются противоречивыми.Прочитав мой собственный ответ, я не совсем уверен, что это то, что вы ищете, но именно так оно и пришло ко мне.Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...