2013-11-26 3 views
2

필요한 것은 N보다 작고 2,3 또는 5로 나눌 수없는 정수를 나타내는 것입니다. 숫자 목록을 얻을 수있었습니다. 그것들은 N보다 작고 2,3 또는 5로 나눌 수는 없지만, 필자의 삶에서 파이썬이 실제로 얼마나 많은 정수가 있는지 셀 수는 없다. 내가 가지고있는 것은 지금까지문자열에있는 개별 정수의 수를 파이썬 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 (범위 (1, N)의 x에 대한 모든 (x % 2, x % 3, x % 5)) ' – steveha

1

당신이 전역 변수를 선언하고 증가 봤어입니까?

i = 0 

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

print i 
+1

'int i'는 글로벌 파이썬 변수를 선언하는 올바른 방법이 아닙니다 ... – mgilson

+0

mgilson : right, sorry, thanks! – creichen

+0

은 몇개의 정수가있는 마지막 숫자를 가지고 숫자 목록을 만들었지 만 나 스스로 잘못했을 수도있다. – Foflo

1

list comprehension, alllen :

>>> 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

친애하는 저. OP는 ** 나눌 수 없다고 말했습니다. 네가 옳아. – mgilson

관련 문제