2016-10-08 4 views
0

죄송하지만 이것에 대한 간단한 대답은 미리 드려야 만합니다. if ______ in ____: 블록을 기존 for 블록에 중첩시키는 방법을 생각할 수 없습니다.파이썬에서 for 루프를 반복하는 동안 예외를 만드는 방법

예를 들어이 블록을 변경하여 홀수를 생략하고 i의 각 인스턴스를 반복하는 방법은 무엇입니까?

odds = '1 3 5 7 9'.split() 
for i in range(x): 
    if i in odds: 
     continue 
    print(i) 

이 코드는 if i == y 작동하지만 난 그게 "Y"일련의 특정 작업을 얻을 수의

+1

'odds'는 문자열 목록입니다. 'i'는 정수입니다 .. –

+0

질문에서 짝수 또는 홀수를 인쇄하고 싶지는 않습니다. 범위를 사용 중이므로 목록의 값이 아닌 범위의 값을 반복 할 수 있습니다. 이 점을 분명히해야 할 수도 있습니다. – Sarcoma

+0

나는 for 루프를 제외시키는 방법을 찾고 있었다. 필자가 작성한 실제 프로그램이 더 단순하기 때문에이 예제를 제공했습니다. 이 예제에서 나는 모든 변수가 반복 될 것을 좋아했을 것이지만, 확률이 'continue'문을 칠 것이기 때문에 단지 evens가 인쇄 된 것을 선호합니다. – Vendelisk

답변

4

이 중첩과는 아무 상관이 없습니다. 사과를 배와 비교하거나이 경우 str 개체의 목록에서 int을 찾으려고합니다.

따라서 if 테스트는 일치하지 않습니다. ['1', '3', '5', '7', '9']1이 없으므로; 3 또는 5 또는 7 또는 9이 아니며, 정수는 문자열과 다른 유형의 객체이기 때문에 문자열에 사용자가 숫자처럼 보이는 숫자가 포함되어 있어도 마찬가지입니다.

어느 정수에 문자열을 먼저 문자열로 INT를 변환하거나 변환 :

if str(i) in odds: 

또는

odds = [int(i) for i in '1 3 5 7 9'.split()] 

당신은 홀수 번호를 테스트하려면이, 더 나은 테스트가 ; 2으로 나누기의 나머지가 1이면 확인 :

if i % 2 == 1: # i is an odd number 
0

당신도 숫자의 범위를 반복 찾고 있다면,이 같은 작동합니다. X는 정수입니다. 2이 단계이므로 홀수를 생략합니다.

for i in range(0,x,2): 
    print(i) 

대한 추가 정보를 원하시면 여기를 워드 프로세서를 체크 아웃 :

https://docs.python.org/2/library/functions.html#range

난 당신이 제공 한 코드에 문제의 몇 가지에 달려 바로 인쇄 문과에 이르기까지 떨어질 것이다 계속 값이 odds인데 여기서 chars는 비교를 실패한 ints가 아닙니다.

정수 목록을 만들고 in 대신 not in을 사용하면이 문제를 해결할 수 있습니다.

x = 10 
odds = [1, 3, 5, 9] 
for i in range(x): 
    if i not in odds: 
     print(i) 
관련 문제