본문 바로가기
개발자 일지/Phython

[파이썬 기초]반복문(for,range,while) 및 반복문 활용

by 네빌링 2021. 3. 19.
반응형

-파이썬의 반복문(for,range,while)에 대해 학습한다.

-반복문을 활용하여 예제 화면의 서브타이틀(서브메뉴)를 반복문으로 뽑아본다.

-생활코딩 파이썬 강의를 바탕으로 학습 및 보충 학습하였다.

-파이썬은 3.9.2 ver를 사용한다.


반복문이란

 프로그래밍에서 조건문(if)과 함께 가장 대표적인 문법이다. 특정 로직이나 명령 등을 여러 번 실행해야 한다면 여러 번 코드를 써주는 것이 아니라 반복문을 통해 자동적으로 반복되도록 해주는 문법이다. 대표적으로 for,while이 있으며 파이썬에는 range()라는 함수가 존재한다.

 

반복문 예제

 예제는 아래와 같다.

#for문을 사용한 list
for value in ['kim','park','yoon']: #kim park yoon
    print(value)

#while문 사용하여 k값을 증가시켜 5에서 멈추기
k = 0;
while (k!=5):
    k=k+1
    print('k:' + str(k)) # k:1 k:2 k:3 k:4 k:5

#range를 사용한 반복문
for value in range(7): # 1 2 3 4 5 6 7
    print(value)

 

 첫번째 예제는 가장 많이 쓰이는 반복문 for다. while문도 쓰이지만 쓰임이 for문보다 좀 까다롭다. for문의 경우 위와 같이 for를 선언 후 받아올 변수명(value)을 적고 in 명령어 뒤에 반복할 list를 적어준다. 예제는 kim,park,yoon을 한 명씩 반복하여 출력하는 예제이다.

 두번째 예제는 while문을 사용한 list 뽑기이다. while명령어 뒤에 true, false를 반환할 조건을 적어준다. 위의 예시는 k라는 변수(기본값 0)가 5가 아니면 계속 반복하고 5인 경우 반복문을 멈추는 예제이다. 반복문 내부에 k+1을 해주어 k값을 증가시킨 후 화면에 출력하고 k가 5가 되면 k!=5조건이 false를 반환하여 반복문이 종료된다.

 세번째 예제는 range를 사용한 반복문이다. range함수를 이용하면 순서대로 값을 얻을 수 있다. 위의 예제는 range(7)을 통해 1부터 7까지 자동으로 반복하여 값을 뽑는 예제이다.

반복문 응용 - 서브타이틀 메뉴 반복하여 가져오기

 저번에 홈페이지 만드는 과정에 이어서 학습한다. 홈페이지의 본문을 data폴더 안에 파일로 만들어 가져오는 open()을 학습했다. 아래의 링크를 참고하면 된다.

 

roadofdevelopment.tistory.com/28

 

[파이썬 기초]open() 함수로 파일 읽기

-파이썬 index.py 내부의 내용을 파일로 따로 만들어 open() 함수로 읽어본다. -생활코딩 파이썬 강의를 기반으로 학습 및 보충학습하였다. -파이썬은 3.9.2 ver를 사용한다. 현재 index.py라는 파일은 다

roadofdevelopment.tistory.com

 

 이어서 여기 나오는 메뉴목록(HTML,CSS,JavaScript) 등을 for문을 이용하여 구현해보려고 한다. 그러면 data의 HTML,CSS 등의 파일을 지우면 메뉴목록이 따라서 사라지고, 추가하면 따라서 추가될 수 있다.

 우선 data폴더의 파일명들을 list로 가져온 후, 반복문을 사용하여 메뉴들을 만들어 format을 통해 목록을 가져오려고 한다. data폴더의 파일명들을 가져오기 위해 os.listdir(path)를 사용한다. path에는 'data'를 입력한다. 그 전에 import를 잊으면 안 된다.(os모듈을 사용하기 위해)

files = os.listdir('data') #[CSS,HTML,JavaScript]
print(files)

os.listdir을 이용하여 파일명들을 list로 만든 후 print해본다.

 

 

상단에 ['CSS','HTML','JavaScript']가 print로 출력된 것을 확인

 

 상단에 list로 변경된 파일명들을 확인할 수 있다. 이제 for문을 사용하여 위의 파일명들을 반복하여 뽑아낸 후, <li/>태그를 만들어 담는다.

 

import cgi, os  #os모듈을 import한다.

files = os.listdir('data') #[CSS,HTML,JavaScript]

listStr = '' #반복문으로 만든 목록 문자열을 담는 변수

for item in files: #data폴더에서 가져온 list파일명들을 for문으로 하나씩 뽑아서 <li>태그형태로 만듦
    listStr = listStr + '<li><a href="index.py?{name}">{name}</a></li>'.format(name=item)

print(listStr)

 

최상단에 아래 목록과 같은 목록이 만들어진 것을 확인

 

 위에 목록이 똑같이 만들어졌음을 확인할 수 있다. 이제 아래 하드코딩된 목록을 삭제하고 반복문된 목록을 넣어준다. format을 활용한다. index.py의 전체코드는 아래와 같다.

#!Python
print("Content-Type: text/html")
print()
import cgi, os  #os모듈을 import한다.

files = os.listdir('data') #[CSS,HTML,JavaScript]
listStr = ''
for item in files:
    listStr = listStr + '<li><a href="index.py?id={name}">{name}</a></li>'.format(name=item)

form = cgi.FieldStorage()
#a태그 클릭시 id값에 따른 pageId 분기처리
if 'id' in form:
    pageId = form["id"].value
    description = open('data/'+pageId,'r').read() #open함수로 내용 불러오기
else :
    pageId = 'welcome'
    description = 'Welcome!'

print('''<!doctype html>
<html>
<head>
  <title>WEB1 - Welcome</title>
  <meta charset="utf-8">
</head>
<body>
  <h1><a href="index.py">WEB</a></h1>
  <ol>
    {listStr}
  </ol>
  <h2>{title}</h2>
  <p>{desc}
  </p>
</body>
</html>
'''.format(title=pageId, desc=description, listStr=listStr))

 <ol/>태그 안의 <li/>태그를 없애고 위에서 for문으로 만든 listStr을 format을 이용하여 사용하였다.  이제 data폴더에 Python이라는 파일을 만든 후 확인하면 아래와 같이 목록이 자동으로 생성된 것을 확인할 수 있다.

 

data폴더에 Python 파일을 생성하여 목록에 자동으로 로드

 

 

반응형