코딩 스쿨에 오신것을 환영합니다~~

질의응답 게시판

 
6-1 연습문제 질문드립니다.
권 * 철 | 2018-12-10

dans = (2,3,4,5,6,7,8,9)

print('구구단표')
print('-' *50)

for dan in dans:
    print(str(dan) +'단')

    for i in range(1,10):
        print('%d * %d = %d' %(dan, dan, dan*i))
    print('-'*30)


위에서 for 문에서 in 뒤에 'dans'라고 하지 않고,
len(dans)-1
로 할 수는 없는가요?

코딩하다가 궁금해서 질문 드립니다.

  • 관 * 자
  • 2018-12-11 (02:16)
for dan in dans:

에서 사용된 for ... in ... 구문을 좀 더 자세히 설명하면 다음과 같습니다.

for aaa in 집합_변수

for ... in ... 구문에서 사용되는 '집합_변수'는 리스트, 튜틀, 문자열 등이 됩니다.
예를 들어 '집합_변수'가 'abcde'라면 변수 aaa는 'a', 'b', 'c', 'd', 'e'의 값을 가지고 5번 반복됩니다.
만약 '집합_변수'가 [10, 20, 30, 40, 50]인 리스트라면 aaa는 10, 20,30,40,50의 값을 가지면서 반복되구요. 
튜플도 리스트와 거의 같은 식으로 된다고 보면 됩니다.

질문하신 프로그램에서 dans 대신 len(dans)-1 로 하면

Traceback (most recent call last):
  File "C:/Users/user/AppData/Local/Programs/Python/Python37-32/aaa.py", line 6, in <module>
    for dan in len(dans)-1:
TypeError: 'int' object is not iterable

과 같은 오류가 발생하는 데 이는 len(dans)-1 이 하나의 정수를 의미하는 것으로 정수는 for in 구문에서 사용할 수 없습니다.

정리하면 for in 구문에서는 in 다음에는 반복 루프를 수행할 수 있는 문자열, 리스트, 튜플, 딕셔너리 등이 와야 합니다.^^