2013-11-26 7 views
2

Мне нужно показать, сколько целых чисел меньше N, которые не делятся на 2,3 или 5. Мне удалось получить список чисел которые меньше N и не делятся на 2,3 или 5, но я не могу на всю жизнь получить Python, чтобы фактически подсчитать, сколько целых чисел есть. То, что я до сих порУкажите количество отдельных целых чисел в строке, Python 3

N = int(input("\nPlease input a Number ")) 
if N < 0: 
    print("\nThere are no answers") 
else: 
    for a in range(1,N+1,2): 
     if a%3 !=0: 
      if a%5 !=0: 
+0

Вы можете сохранить их считать все, заметив, что является повторяющимся образцом длины 30 (2 * 3 * 5) –

ответ

2

Попробуйте это:

N = 20 

counter = 0 
for a in range(1, N): 
    if a%2 and a%3 and a%5: 
     counter += 1 

Результат будет в counter в конце цикла. Или для голубевода версии, адаптированной от @ iCodez отвечают:

sum(1 for x in range(1, N) if all((x%2, x%3, x%5))) 
=> 6 
+2

Кроме того, это немного сложно, но если вы суммируете значения 'bool', они преобразуются в 0 или 1. Так что это будет работать: 'sum (all (x% 2, x% 3, x% 5) для x в диапазоне (1, N))' – steveha

1

Вы пытались объявить глобальную переменную и приращением ее?

i = 0 

... if a % 5 != 0: 
     i += 1 

print i 
+1

'int i' - это неправильный способ объявить глобальную переменную python ... – mgilson

+0

mgilson: right, извините, спасибо! – creichen

+0

придумал список чисел с последним числом, сколько целых чисел было, но я, возможно, сделал это неправильно сам – Foflo

1

Это можно сделать довольно легко с помощью list comprehension, all и len:

>>> num = int(input(':')) 
:20 
>>> [x for x in range(num) if all((x%2, x%3, x%5))] 
[1, 7, 11, 13, 17, 19] 
>>> len([x for x in range(num) if all((x%2, x%3, x%5))]) 
6 
>>> 
+0

О дорогой мне. ОП сказал ** не ** делимый. Ты прав. – mgilson

Смежные вопросы