2016-10-17 6 views
-2

Python3에서 다음을 수행하는 데 더 관용적 인 방법이 있습니까? 더 좋은 방법이 있어야합니다.

if i%1 == 0 and i%2 == 0 and i%3 == 0 and i%4 == 0 and i%5 == 0 and i%6 == 0 and i%7 == 0 and i%8 == 0 and i%9 == 0 and i%10 == 0 and i%11 == 0 and i%12 == 0 and i%13 == 0 and i%14 == 0 and i%15 == 0 and i%16 == 0 and i%17 == 0 and i%18 == 0 and i%19 == 0 and i%20 == 0: 

는 내가 새로운 솔루션을 찾는 게 아니에요 1에서 20까지 모든 숫자로 나누어 가장 작은 양수를 찾기 위해 노력하고있어. 나는 내가하고있는 일을 표현할 더 좋은 방법을 찾고있다.

+0

'for'루프를 사용해보세요. 또한 코드를 형식화하십시오. – Bim

답변

6

rangeall을 사용

if all(i % j == 0 for j in range(1, 21)): # python2 -> xrange(2, 21) 
    # do whatever 

모든 i % j == 0 경우는 i % j에 대한 나머지가있는 경우 그렇지 않으면 단락거짓를 반환합니다 진정한를 반환합니다. 당신이 2

또는 conversly에서 시작할 수 있습니다 또한, if i % 1을 확인하는 것은 중복 나머지와 하지anyi % j가 있는지 확인합니다.

if not any(i % j for j in range(2, 21)): 

또는 당신은 기능 원하는 경우 :

if not any(map(i.__mod__, range(2, 21))) 
+1

또는 Py2에서 가벼운 퍼펙트 혜택 인'xrange '. 범위가 작다는 것을 고려하면 큰 차이는 아닙니다. – ShadowRanger

+0

@ShadowRanger, true, 코멘트를 추가했습니다. –

0

당신은 all 지능형리스트와 함께 기능을 사용할 수 있습니다 - 더 나은 아직 나 - 발전기 표현 :

if all(i%(1 + j) == 0 for j in range(20)): 
0

사용 while 루프에서 for 루프.

num = 1; 
while(True): #keeps going until it finds the number 
    b = True #remains true as long as it is divisible by div 
    for div in range(1,21): 
     if not (num % div == 0): 
      b = False #number was not divisible, therefore b is now false 
      num += 1 
      break 
    if(b): #b means num was divisible by all numbers. 
     break 
print(num) 
관련 문제