반응형

파이썬 코딩 실력을 한 단계 늘려줄 함수를 고른다면 단연컨데 for문을 고를 것이다.

for문은 반복적으로 뭔가 반복적인 계산을 수행할 때 사용하면 된다. 이것만 기억하면 된다. 반복은 컴퓨터가 사람보다 잘 한다는 것을!

 

1. 파이썬으로 2단 구구단 만들어보기

number = [1,2,3,4,5,6,7,8,9]
for i in number:
    print(2*i)

첫번째 줄: 먼저 number에 1부터 9까지의 숫자를 리스트에 담아 number라는 변수에 담아 줍니다. 이제 for문을 조합해 2단을 출력해볼 순서이다.

두번째 줄: numbers의 각 숫자 값 하나하나를 변수 i에 입력

세번째 줄: 2 * i의 결과값을 출력. 주의할 것은 for문이 적용되는 것을 알리기 위해 들여쓰기를 한 것이다.

 

위 코드를 돌리면 아래와 같은 결과값을 얻을 수 있다.

2
4
6
8
10
12
14
16
18

 

2. 파이썬으로 1부터 10까지 더해보기

num = 0 
for i in range(1,11):
    num = num +i
    print(num)

첫번째 줄: num이라는 변수에 0이라고 저장을 해 준다.

두번째 줄: range를 사용, 숫자 1~10을 i에 넣어준다. range(1,11)은 1~11이 아닌 1~10임을 기억하자

세번째 줄: num=0에서 i 그러니까 1부터 10을 차례대로 더해준다. 처음 num은 0 이므로 0 + 첫번째  i 값인 0+1의 결과값인 1을 적용한다. 그리고 나서는 새롭게 저장된 num 1에 두 번째 i 값인 2를 더해주어 3이라는 결과값을 얻는다.

네번째 줄: num의 결과값을 출력한다.

 

그러면 아래와 같은 결과값을 얻을 수 있다.

1
3
6
10
15
21
28
36
45
55

 

range가 나왔는데 조금 부연설명을 하면 아래와 같다. for와 range문은 늘 자주 쓰이는 것을 보게 될 것이다. 그도 그럴 것이 for문을 통해 반복할 숫자를 range를 통해 지정할 수 있기 때문! range(10)은 1~10이 아닌 0~9임을 기억하면 된다. for문이 적용될 print 는 들여쓰기를 하였고, i값에 0~9가 반복적으로 등장함을 볼 수 있다.

 

for i in range(10):
    print("Hello, world", i)
Hello, world 0
Hello, world 1
Hello, world 2
Hello, world 3
Hello, world 4
Hello, world 5
Hello, world 6
Hello, world 7
Hello, world 8
Hello, world 9
 

 

3. 파이썬으로 2단 구구단을 표현하되, 그 과정도 함께 출력하자

for i in range(1,10):
    print(2, 'x',i, '=', 2*i )

첫번째 줄: 먼저 range(1,10)을 이용, 1~9의 값을 i에 넣어준다.

두번째 줄: for문이 적용되어 들여쓰기를 하였고, 2 x i 를 프린트 한 후 결과값엔 2*i를 적용해준다. 그러면 아래와 같은 결과값을 얻을 수 있다.

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18

 

4. 파이썬으로 구구단 2단, 3단 구해보기. for문 반복적으로 사용하기

for i in range(2,4):
    for j in range(1,10):
        print(i,'x',j,'=',i*j)

첫번째 줄: range(2,4)를 통해 2,3 값을 변수 i에 저장

두번째 줄: 들여쓰기를 한 후 숫자 1~9의 값을 또 다른 변수 j에 저장

세번째 줄: 2 * 1~9 , 그리고 3*1~9값을 반복한 후 프린트. 그 결과값은 아래와 같다.

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27

 

for문의 가장 기초 of  기초 내용이다. for문을 잘 쓰면 크롤링을 하거나 머신 러닝 시 매우 유용하다. 크롤링 할 때 긁어오는 여러 페이지 값을 입력하지 않아도 되고, 머신러닝을 할 때 최적의 이웃값을 구할 때 반복적으로 n 값을 넣어주면서 최적의 결과값을 얻을 수 있기도 하다.

 

숙제로 2,3단 뿐만 아니라 9단까지 해보는 건 어떨지? 

반응형
Posted by 마르띤
,
반응형

네이버 뉴스 크롤링을 계속해서 해보려 한다. 이 번에는 여러 페이지, 그러니까 검색 결과 페이지를 1, 2, 3이렇게 늘려가며 여러 페이지의 글을 크롤링 하는 프로젝트이다.

 

아래 링크는 먼저 작성한 글로써, 한 페이지에 나오는 여려개 뉴스를 크롤링 하는 내용이다. 크게 어렵지 않은 짧은 코딩이니 따라하는데 크게 어렵지는 않을 것이다.

 

 

[크롤링] 파이썬으로 네이버 뉴스 크롤링 하기 - 여러 뉴스를 한번에

에코프로 뉴스 크롤링은 아래 글을 보면 된다. 이번에는 검색 시 나오는 여러 뉴스를 크롤링 해보려 한다. https://kmrho1103.tistory.com/entry/%ED%81%AC%EB%A1%A4%EB%A7%81-%EC%97%90%EC%BD%94%ED%94%84%EB%A1%9C-%EB%89%B4%EC%8

kmrho1103.tistory.com

 
이전 크롤링 방식을 통해서 1 페이지에 나오는 여러 네이버 뉴스를 한 번에 크롤링 해 보았고, 이 번에는 1~5페이지 네이버 뉴스를 모두 크롤링 해보려 한다. 전체 크롤링 코드는 아래와 같다. 전체 7줄의 짧은 코드로 네이버 뉴스의 많은 페이지를 크롤링 할 수 있다. 순서대로 보면, 패키지를 불러오고, url을 읽은 다음 태그 정보를 보고 뉴스 제목을 긁어오는 순서이다.
 

1
2
3
4
5
6
7
8
9
10
import requests
from bs4 import BeautifulSoup
 
for n in range(1,52,10):
    url = requests.get(f'https://search.naver.com/search.naver?where=news&sm=tab_pge&query=%EC%97%90%EC%BD%94%ED%94%84%EB%A1%9C&sort=0&photo=0&field=0&pd=0&ds=&de=&cluster_rank=60&mynews=0&office_type=0&office_section_code=0&news_office_checked=&nso=so:r,p:all,a:all&start={n}')
    html = BeautifulSoup(url.text)
 
    for i in html.find_all('a',class_='news_tit'):
        print(i.text)
 
cs

 
코드가 길지 않아 아주 자세한 설명이 필요한 건 아니지만, 상세 코드를 보면 아래와 같다.
 

for 문 반복문으로 여러 뉴스를 모아온다. 
for n in range(1,52,10):
    url = requests.get(f'https://search.naver.com/search.naver?where=news&sm=tab_pge&query=%EC%97%90%EC%BD%94%ED%94%84%EB%A1%9C&sort=0&photo=0&field=0&pd=0&ds=&de=&cluster_rank=60&mynews=0&office_type=0&office_section_code=0&news_office_checked=&nso=so:r,p:all,a:all&start={n}')
    html = BeautifulSoup(url.text)

 - http:// ~ 뉴스 주소 앞에 format 을 입력하기 위해 f를 입력
 - 주소의 페이지 부분에 넣을 format 자리에 {n} 입력
 - page 넘버가 1, 11, 21 이렇게 10 단위로 커지므로, range(1,52,10)을 적용

 

처음 format의 f을 잘 몰랐을 때 어려웠는데, 코드를 이해한 이후로는 정말 자주 사용하고 있는 내용이다. 모를 때는 따라쳐보는 것이 가장 좋은 듯하다. 파이썬 명언 중 백문이불여일타가 괜히 있는게 아닌 것 같다.
 

for문으로 태그 정보 불러오기
for i in html.find_all('a',class_='news_tit'):
        print(i.text)

태그 정보를 읽어낸 후 for문으로 반복 적용하여 text를 긁어내는 과정이다. 이 짧은 코드 몇 줄만 따라하면 네이버 뉴스 크롤링도 어렵지 않게 쉽게 따라할 수 있을 것이다.

 

for문에 대해 별도 글을 작성하겠지만, 간단하게 예시를 들면 아래와 같다. 간단한 숫자 리스트를 반복하며 출력하는 예시이다:

numbers = [1, 2, 3, 4, 5]

for number in numbers:
    print(number)

위 코드에서 numbers 리스트의 각 요소를 순서대로 number 변수에 할당하여 반복문을 실행하면서 각 숫자가 출력된다. 또 다른 예시로, 문자열 리스트를 반복하며 각 문자열의 길이를 출력하는 코드는 아래와 같다:

fruits = ['apple', 'banana', 'cherry', 'date']

for fruit in fruits:
    print(f"The length of '{fruit}' is {len(fruit)}")

 

이렇게 for문을 사용하면 리스트, 튜플, 문자열 등의 객체를 순회하며 각 항목을 처리할 수 있다. for문을 사용하여 반복 작업을 수행하면 코드를 간결하게 유지하고 반복적인 작업을 쉽게 처리할 수 있다.

 

for문은 프로그래밍에서 반복 작업을 처리하는 중요한 도구 중 하나이다. 

- 반복 작업 처리: 많은 작업은 반복적으로 수행되어야 한다. for문을 사용하여 데이터나 작업을 반복적으로 처리할 수 있어서 코드를 간결하게 유지할 수 있다.

- 코드의 가독성: for문을 사용하면 반복 작업의 로직을 명확하게 표현할 수 있다. 이로 인해 코드의 가독성이 향상되며, 다른 개발자들이 코드를 이해하기 쉬워진다.

- 반복 횟수 지정: 반복 작업을 일정한 횟수만큼 수행해야 할 때 range() 함수와 함께 for문을 사용하여 반복 횟수를 지정할 수 있다.

- 파일 처리: 파일의 각 줄을 읽어오거나 파일에 쓰는 작업에서도 for문을 활용할 수 있다.

 

이러한 이유로 for문은 프로그래밍에서 핵심적인 역할을 하며, 프로그램을 효율적으로 작성하고 유지 관리하는 데 도움을 준다.

반응형
Posted by 마르띤
,