[python] 좋아하는 스포츠 종목 설문조사하고 바로 통계내기

컴퓨터비전/python|2020. 4. 2. 02:24| bskyvision 심교훈

제가 즐겨보는 유튜브 채널, "코딩하는 테크보이 워니"님의 영상을 보다가, 파이썬의 자료구조인 딕셔너리(dictionary)와 리스트(list)를 이용한 예제가 흥미로워서 그것을 응용해서 다음과 같은 코드를 작성해봤습니다. 설문조사 대상자들에게 좋아하는 스포츠 종목이 무엇인지 물어본 후 통계내는 코드입니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
sports = []
 
= 1
while True:
    print("\n<%d번째 대상자>" % i)
    x = [input("어떤 스포츠 좋아하세요?(q 누르면 반복문 탈출): ")]
    if x == ['q']:
        break
    
    sports = sports + x
    i = i + 1
 
summary = {}
 
for s in sports:
    if s in summary:
        summary[s] = summary[s] + 1
    else:
        summary[s] = 1
        
print(summary)
 
 
total_num = sum(summary.values())
for key in summary:
    summary[key] = summary[key]/total_num
 
print(summary)
cs

 

이 코드를 실행하면 여러 사람들이 본인이 좋아하는 스포츠 종목을 입력하고 최종적으로 그것이 정리됩니다. 어떤 종목을 몇 명의 사람이 좋아하는지 알 수 있습니다. 또한 각각 몇 %에 해당하는지를 알려줍니다. 

 

 

총 19명 중에 9명이 축구를 좋아한다고 했구요(물론 제가 마음대로 입력했지만요^^;), 그 수는 약 전체의 47%에 해당합니다. 야구의 경우 4명이 좋아하고, 전체의 약 21%에 해당하는 수치입니다. 

 

이런 식으로 파이썬을 이용해서 간단한 설문조사도 할 수 있겠죠?ㅎㅎ 

[python] 반복문: for문, while문 그리고 break, continue

컴퓨터비전/python|2020. 4. 2. 00:33| bskyvision 심교훈

똑같은 것을 기계적으로 반복하는 것만큼 싫은 것도 없습니다. 이런건 기계에게 시켜야죠. 그래서 필요한 것이 바로 반복문입니다. 반복문에는 크게 for문과 while문이 있습니다. hello를 5번 출력시키고 싶다면, 다음과 같이 코딩하면 됩니다. 

 

1. for문

코드>>

실행결과>>

 

2. while문

코드>>

 

while 문의 경우에는 조건이 충족되는 한 반복합니다. i가 처음에 0이므로 0 < 5라는 조건을 충족시키기 때문에 while문 내부가 실행됩니다. 그리고 i = i + 1을 만나면서 i = 1이 되고, 1 < 5는 참이기 때문에 또다시 while문 내부가 실행됩니다. 이렇게 쭉 반복되다가 i = 5가 되면, 5 < 5는 거짓이므로 더이상 반복하지 않습니다. 즉, i가 0, 1, 2, 3, 4일 때 print("hello")가 실행되므로 총 5번 hello를 출력하게 됩니다. 

 

실행결과>> 

 

3. break

반복문에서 탈출해야하는 경우들이 있습니다. 특히 무한루프를 걸어뒀을때 말이죠. 이때는 break를 사용하면 됩니다. 

 

코드>>

while의 조건을 True로 해서 무한루프(무한으로 반복됨)가 되게 했고, i가 3이 되면 반복문을 탈출하도록 코딩했습니다.

 

 

실행결과>>

 

4. continue

반복문 내에서 continue를 만나면 그 아래는 더이상 실행시키지 않고 반복문 처음으로 돌아갑니다. 바로 이렇게 말이죠. 

 

코드>>

 

i가 3일때는 print("i가 3이 아니라서..")가 실행되지 않습니다. 

 

실행결과>>

 

 

i가 3일 때는 "i가 3이 아니라서.."라는 문구가 출력되지 않은 것을 확인할 수 있습니다. 이런 기능을 어떨때 쓰냐 물으시는 분들도 있겠지만, continue 생각보다 유용하게 사용됩니다.ㅎㅎ 

[python] 조건문 if, elif, else

컴퓨터비전/python|2020. 4. 1. 23:45| bskyvision 심교훈

변수, 조건문, 반복문, 함수는 코딩에 있어서 매우 중요한 친구들입니다. 이것들만 알아도 웬만한 건 다 코딩해낼 수 있다고 보셔도 됩니다. 이 중에서 오늘 다루는 조건문은 논리 구조를 만들어내기 때문에 특히 중요합니다. 파이썬에서는 if, elif, else를 이용해서 조건문을 나타냅니다. 여기서 elif는 else if를 나타냅니다. 그러면 간단한 예제를 통해서 조건문을 어떻게 만들어내는지 살펴보도록 하겠습니다. 

 

1. 입력받은 숫자가 5보다 크면 5보다 크다고 출력해주기(if만 활용)

코드>>

 

실행결과>>

10을 입력했더니 10는 5보다 큽니다. 라는 문구가 떴습니다. 

 

4를 입력했더니 아무런 반응이 없습니다. 조건이 맞지 않아 그냥 지나간 것이죠. 

 

2. 입력받은 숫자가 5보다 크면 5보다 크다고, 5보다 작거나 같으면 5보다 작거나 같다고 출력해주기(if와 else 활용)

코드>>

 

실행결과>>

8을 입력했을 때,

 

3을 입력했을 때,

 

3. 입력받은 숫자가 5보다 크면 5보다 크다고, 5보다 작으면 작다고, 5랑 같으면 같다고 출력해주기(if와 elif와 else 활용)

코드>>

 

실행결과>>

9를 입력했더니,

 

1을 입력했더니,

 

5를 입력했더니,

 

마지막으로 방금 예제를 동양적인 예제로 탈바꿈해보겠습니다.ㅎㅎ 

 

코드>>

 

실행결과>>

35를 입력했을 때,

 

30을 입력했을 때,

 

33을 입력했을 때,

 

조건문 그렇게 어렵지 않죠? ㅎㅎ 참고로 더 많은 elif를 사용할 수도 있습니다. 필요에 맞게 문법에 맞게 코딩해주시면 됩니다. 

양두구육: 겉과 속이 다른 사람

삶/교훈생각|2020. 3. 30. 09:39| bskyvision 심교훈

인간은 이성 뿐만 아니라 감정을 가진 존재이기 때문에, 어떤 결정을 할 때 이성과 감정의 영향을 많이 받게 된다. 어찌보면 이성보다도 감정에 영향을 더 많이 받는다. 아무리 스스로를 이성적인 사람이라고 평한다할지라도 감정에 영향을 받지 않는 인간은 없다. 

 

TV에서 어떤 제품에 대해서 광고한 어떤 장면이 너무 매혹적으로 느껴져서 실제 그 제품의 성능은 따져 살펴보지 못하고 구입하는 경우가 많다. 그러다보니 막상 구입하고 나면 나에게 별로 쓸모가 없는 경우가 많거나 성능이 기대이하인 경우가 부지기수다. 

 

우리는 제품을 볼때 실제 성능보다도 디자인을 많이 본다. 사실 물건을 구입해서 사용해보기 전까지는 그 제품의 실제 성능을 알기가 어렵다. 사용후기를 참고하면 도움이 되긴 하지만, 주관적인 평가들이기 때문에 여전히 부족하다. 그래서 뭔가 보기에 느낌이 좋은 것을 살 때가 많다. 이성보다는 감정에 좌지우지되는 것이다. 

 

이처럼 상품을 어떻게 광고하는가, 또 상품을 어떻게 디자인해서 출시하는가는 소비자의 선택에 큰 영향을 미친다. 그러다 보니 과대포장된 상품이 정말 많다. 소비자의 이목을 집중시키기 위해서 선전과 광고는 물론 필요하다. 문제는 바로 이것이다. 실제 상품과 광고된 모습의 차이의 정도이다. 그 둘의 차이가 너무 크면, 소비자들은 배신감을 느낀다. 소비자들도 아량이 있어서 어느 정도의 차이는 인정해준다. 그러나 어느 임계점을 넘는 정도의 차이가 있다면 소비자들은 분노한다. 

 

나는 어떤가? 박사라는 타이틀을 갖기 위해 달려가고 있는데, 박사라는 이름이 주는 선전효과에 걸맞는 실력과 내공을 나는 갖춰가고 있나? 겉으로 보여지는 모습과 실제 내면의 모습의 차이가 너무 크진 않나? 두렵다. 

 

양두구육: 양머리를 걸어놓고, 개고기를 판다. 

 

우리가 이렇게 살고 있다. 양머리처럼 귀한 것인냥 자신을 포장하거나 어떤 상품을 포장하지만, 실상은 개고기인 경우가 많다. 겉은 훌륭한 듯하나 속은 그렇지 않은 사람들이 나를 포함해서 얼마나 많은가? 

 

양머리를 걸어놨으면, 진짜 양머리어야 한다. 

10년전 3월 26일..

삶/교훈생각|2020. 3. 27. 14:55| bskyvision 심교훈

대구 제2작전사령부에서 군복무를 하고 있던 때였다. 작전을 수행중이던 천안함이 북한군에 의해 폭침당하는 사건이 벌어졌다. 전부대는 비상이 걸렸다. 수많은 장병이 전사했고 그 중 몇분의 시체는 거둬들이지도 못했다.

그런데 그 전사자 명단을 보다가 깜짝놀랐다. 내 중고등학교 친구의 이름이 있는 것 아닌가. 같은 동네 같은 아파트에 살아서 등하교를 같이 했던 친구였다.

고 중사 장진선.
순박하고 정말 잘 웃는 친구였다.
하회탈이 연상될 정도로.

고2때 내가 다른 지역으로 전학을 가면서 점차 연락이 끊겼었는데 이렇게 소식을 접하게 되다니..

진선이가 직업군인이 되었구나..

부대 강당에는 분향소가 차려졌다. 통신병으로서 나는 강당에서 분향기간동안 강당의 음향시설을 담당하게 되었다.

순국자들의 사진들과 꽃들. 그리고 분향하러 온 국군장병들.

나는 차마 앞에 나갈 수가 없었다. 나는 그 몇일간의 분향기간 동안 30M 앞으로 걸음을 내딛지 않았다. 그냥 뒤에서 바라보기만 했다. 앞에 나가 분향할 용기가 없었다. 앞에 나가 사진을 보며 헌화할 자신이 없었다.

아마 진선이가 살아있었다면 나처럼 사랑하는 여인과 가정을 꾸리고 애기들의 아빠가 되었겠지. 진선이의 부모님이 그토록 바랬을 삶을 나는 그저 살고 있네.

잘 살자. 열심히 살자.