본문 바로가기

파이썬

[python]#8 반복문 for, while, 에러유형

Python에서 for 루프는 목록, 튜플, 집합, 사전 및 문자열을 포함하여 다양한 객체 및 데이터 유형을 반복하는 데 사용할 수 있습니다.

for 루프: 기본 구문은 다음과 같습니다.

for variable in sequence:
    # code to execute

Example:

fruits = ["apple", "banana", "cherry"]
for x in fruits:
    print(x)

Output:

apple
banana
cherry

또한 range() 함수와 함께 for 루프를 사용하여 반복할 일련의 숫자를 생성할 수 있습니다.

for i in range(5):
    print(i)

Output:

0
1
2
3
4

range() 함수는 0에서 시작하여 지정된 숫자(포함되지 않음)까지 일련의 숫자를 생성합니다. 시퀀스의 시작 번호와 단계 크기를 지정할 수도 있습니다.

for i in range(2, 10, 2):
    print(i)

Output:

2
4
6
8

이렇게 하면 2부터 시작하여 10(포함되지 않음)에 도달할 때까지 2씩 증가하는 일련의 숫자가 생성됩니다.

 

Python에서 while 루프는 지정된 조건이 참인 한 코드 블록을 반복적으로 실행하는 데 사용됩니다. while 루프의 기본 구문은 다음과 같습니다.

while 루프: 기본 구문은 다음과 같습니다.

while condition:
    # code to execute

Example:

i = 1
while i < 6:
    print(i)
    i += 1

Output:

1
2
3
4
5

루프가 무한정 계속 실행되는 무한 루프를 생성하지 않도록 while 루프를 사용할 때 주의하는 것이 중요합니다. 이를 방지하려면 while 루프의 조건이 결국 거짓이 되도록 해야 합니다.

 

중첩 루프: 중첩 루프라고도 하는 루프 내에 루프가 있을 수도 있습니다. 이는 여러 시퀀스를 반복하려는 경우에 유용합니다. 중첩 루프의 기본 구문은 다음과 같습니다.

for variable1 in sequence1:
    for variable2 in sequence2:
        # code to execute

Example:

adj = ["red", "big", "tasty"]
fruits = ["apple", "banana", "cherry"]

for x in adj:
    for y in fruits:
        print(x, y)

Output:

red apple
red banana
red cherry
big apple
big banana
big cherry
tasty apple
tasty banana
tasty cherry

Python에는 루프를 사용할 때 발생할 수 있는 몇 가지 일반적인 오류

SyntaxError: 이 오류는 루프 문의 구문에 오류가 있을 때 발생합니다. 예를 들어 for 또는 while 줄 끝에 있는 콜론을 잊어버리거나 루프 내에서 코드를 들여쓰지 않습니다.

for i in range(10)
    print(i)

Output:

  File "test.py", line 1
    for i in range(10)
                       ^
SyntaxError: invalid syntax

 

이 예에서 SyntaxError는 for 문에서 range(10) 표현식 뒤에 콜론을 추가하는 것을 잊었기 때문에 발생합니다.

NameError: 이 오류는 정의되지 않았거나 범위에 없는 변수를 사용하려고 할 때 발생합니다. 예를 들어 루프에서 변수 이름의 철자를 잘못 입력하거나 루프 외부에서 루프 내부에 정의된 변수를 사용하려고 하는 경우입니다.

for i in range(10):
    j = i + k
    print(j)

Output:

NameError: name 'k' is not defined

이 예에서 NameError는 정의되지 않았거나 범위에 없는 변수 k를 사용하여 발생합니다.


TypeError: 이 오류는 수행 중인 작업과 호환되지 않는 값 또는 데이터 유형을 사용하려고 할 때 발생합니다. 예를 들어 문자열을 목록의 인덱스로 사용하거나 정수 값을 반복하려고 합니다.

for i in 10:
    print(i)

Output:

TypeError: 'int' object is not iterable

이 예제에서 TypeError는 반복할 수 없는 정수 값 10을 반복하려고 시도하여 발생합니다.


IndexError: 이 오류는 존재하지 않는 시퀀스의 요소에 액세스하려고 할 때 발생합니다. 예를 들어, 3개의 요소만 있는 목록의 5번째 요소에 액세스하려고 합니다.

my_list = [1, 2, 3]
for i in range(4):
    print(my_list[i])

Output:

IndexError: list index out of range

이 예에서 IndexError는 요소가 3개뿐인 목록의 네 번째 요소에 액세스하려고 시도하여 발생합니다.


ValueError: 이 오류는 유효하지 않은 값으로 작업을 수행하려고 할 때 발생합니다. 예를 들어 int() 함수를 사용하여 숫자를 나타내지 않는 문자열을 정수로 변환하려고 합니다.

my_string = "hello"
my_num = int(my_string)
print(my_num)

Output:

ValueError: invalid literal for int() with base 10: 'hello'

이 예제에서 ValueError는 int() 함수를 사용하여 숫자를 나타내지 않는 문자열을 정수로 변환하려고 시도함으로써 발생합니다.


KeyboardInterrupt: 이 오류는 예를 들어 사용자 입력을 기다리는 while 루프를 사용할 때 프로그램이 입력을 기다리는 동안 사용자가 프로그램을 중단할 때 발생합니다.

while True:
    user_input = input("Enter a number: ")
    print("You entered: ", user_input)

Output:

^C


루프가 제대로 작동하는지 확인하려면 코드를 주의 깊게 확인하고 발생하는 모든 오류를 해결하는 것이 중요합니다. 경우에 따라 오류 처리를 추가하거나 조건문을 사용하여 오류 발생을 방지해야 할 수 있습니다.