'

도입 - 습관을 사로잡는 훅 모델 이해하기


훅 모델의 4가지 요소


1. 계기(Trigger)

계기는 행동의 작동 장치라고 할 수 있다. 즉 엔진의 점화 플러그와 같은 역할을 한다. 계기는 크게 내부 계기와 외부 계기의 두 종류로 나뉜다. 습관 형성 상품은 처음에는 이메일이나 웹사이트 링크, 스마트폰의 앱 아이콘 같은 외부 계기들을 통해 사용자의 주의를 환기시킨다. 사용자들이 스스로 의식하지 못하는 사이에 계기가 다음 행동에 대한 신호를 보내기 시작하면 새로운 습관은 일상적 행동으로 자리 잡게 된다. 바브라는 사람들과 관계를 맺고 싶어 하는 자신의 욕구를 페이스북과 결부시키기 시작한다.


2. 행동(Action)

계기 다음 단계는 행동이다. 여기서의 행동은 보상을 기대하고 하는 행위를 말한다. 기업들은 사용자 행동의 유발 가능성을 높이기 위해 인간의 행동을 촉진시키는 기본 요인 두 가지를 적극 활용한다. 그 두 가지는 바로 행동의 용이성과 그런 행동에 대한 심리적 동기다.


3. 가변적 보상(Variable Reward)

훅 모델의 4단계 과정과 평범한 피드백 사이클 간의 가장 큰 차이점은 무엇일까? 훅 모델은 일반적인 피드백 사이클과는 달리 사용자의 열망을 만들 수 있다는 것이다. 우리 주위에서 흔히 발견할 수 있는 피드백 사이클은 뒤에 벌어질 상황을 충분히 예측할 수 있기 때문에 우리의 욕망을 자극하지 못한다. 냉장고 문을 열면 불이 들어온다. 전혀 놀라울 것 없는 이런 반응으로는 냉장고 문을 계속 열게 만들 수 없다. 하지만 여기에 몇 가지 가변성을 추가한다면 어떨까? 예를 들어 냉장고 문을 열 때마다 매번 색다른 음식이 마술처럼 나타난다면? 아마도 강렬한 호기심을 유발할 것이다.


4. 투자(Investment)

훅 모델의 마지막 단계인 투자 단계에서는 사용자가 훅 사이클을 또 다시 경험하게 만들 가능성을 확대한다. 이 단계에서 사용자들은 시간이나 데이터, 노력, 사회적 자본, 금전 같은 것들을 상품이나 서비스에 투입하면서 투자 활동을 펼친다.

여기에서의 투자는 사용자의 금전적 지출이 아니라 다음에 경험하게 될 서비스 수준을 더욱 높여줄 행동을 말한다. 친구를 초대하고, 좋아하는 것에 대해 이야기를 나누고, 가상의 자산을 구축하고 새로운 기능의 사용법을 익히는 것 모두 사용자들이 다음 번 사용 경험을 향상시키기 위해 할 수 있는 투자 활동이다. 이런 투자 활동은 훅 사이클을 한 번씩 거칠 대마다 계기를 보다 매력적으로 변화시키고, 행동을 더 용이하게 해주고, 보상을 더욱더 흥미진진한 것으로 만들어준다.


기억해야 할 요점

- 습관은 의식적인 사고가 거의 또는 전혀 이루어지지 않는 상태에서 하게 되는 행동이다.

- 접근성, 데이터, 속도, 이 세가지가 습관 형성을 보다 용이하게 해준다.

- 사용자 습관 형성에 성공한 회사는 엄청난 경쟁 우위를 확보하게 된다.

- 훅 모델은 사용자의 문제와 해결책을 빈번하게 연결시켜 하나의 습관으로 자리 잡을 수 있게 해주는 프로세스다.

- 훅 모델은 계기, 행동, 가변적 보상, 투자 이 네 단계로 이루어져 있다.


1장 - 습관의 영역


기억해야 할 요점

- 어떤 사업은 습관 형성이 성공의 필수 요건이지만 모든 사업에 사용자의 습관적 참여가 필요한 것은 아니다.

- 강력한 사용자 습관을 형성하는 데 성공할 경우, 고객생애가치, 가격 책정의 유연성이 더욱 높아지고 성장과 경쟁력이 더욱 강화된다.

- 습관은 '습관의 영역' 밖에서는 만들어질 수 없다. 그리고 이런 습관의 영역 안에서 충분한 빈도수와 유용성 인지가 결합된 행동만이 습관으로 굳어질 수 있다.

- 습관 형성 상품은 처음에는 비타민처럼 있으면 좋은 것에서 시작하지만 일단 습관으로 자리 잡고 나면 그때부터는 진통제처럼 반드시 있어야만 하는 것으로 전환될 대가 많다.

- 습관 형성 상품은 뚜렷한 갈망을 완화시킴으로써 사용자의 고통을 경감시켜 준다.

- 습관 형성 상품의 설계는 사람들의 마음을 교묘히 조종하는 활동이라고 할 수 있다. 사용자들이 불건전한 중독이 아니라 바람직한 습관을 들이고 있다는 확신을 가질 수 있도록 상품 개발자들은 무조건 사용자들을 유혹하려고 하기보다 자사 상품에 대해 냉철한 자기 성찰의 시간을 갖는 것이 더 효과적일 수 있다.


지금 해야 할 활동

습관 형성 상품을 개발 중이라면 다음 질문들에 답해보기 바란다.

- 당신의 사업 모델에서 필요로 하는 사용자 습관은 무엇인가?

- 사용자들이 당신의 상품을 통해 해결하고자 하는 문제점은 무엇인가?

- 사용자들은 현재 그런 문제점을 어떤 식으로 해결하고 있고 그런 문제점에 대해 해결책이 필요한 이유는 무엇인가?

- 사용자들이 당신의 제품을 얼마나 자주 사용하길 기대하는가?

- 습관으로 형성되길 바라는 사용자 행동은 무엇인가?


2장 - 계기


기억해야 할 요점

- 훅 모델의 첫 번째 단계인 계기는 사용자에게 행동 개시 신호를 보낸다.

- 계기는 크게 외부 계기와 내부 게기, 두 가지 형태로 나뉜다.

- 외부 계기는 사용자의 환경 안에 정보를 배치함으로써 사용자에게 다음 행동을 알려준다.

- 내부 계기는 사용자의 기억 속에 저장되어 있는 연결고리를 통해 다음에 취해야 할 행동을 알려준다.

- 부정적 감정은 내부 계기로 작용하는 경우가 많다.

- 습관 형성 상품을 개발하기 위해서는 사용자의 어떤 감정이 내부 계기와 이어질 수 있는지 이해하고 사용자의 행동을 유도하기 위해 외부 계기들을 어떻게 활용해야 하는지 파악하고 있어야 한다.


지금 해야 할 활동

다음 물음에 답해보기 바란다.

- 당신이 개발할 상품의 사용자는 누구인가?

- 당신이 의도한 습관이 나타나기 직전에 사용자가 하는 행동은 무엇인가?

- 당신의 사용자에게 행동 개시 신호를 보낼 수 있는 세 가지 내부 계기를 제시하라. 이 장에서 설명했던 '5 Why 분석법'을 참조하기 바란다.

* 5 Why 분석법

 : 어떤 문제를 일으킨 요인(왜?)을 제시하고, 그 요인을 일으킨 요인(왜?)를 제시하는 식으로 '왜?'를 반복하는 분석 활동. 통상적으로 5번을 반복하지만 횟수가 중요한 것이 아니라 근본 원인을 찾는 것이 중요하다

- 당신의 사용자가 가장 빈번하게 경험하는 내부 계기는 무엇인가?

- 사용자에게 (내부 계기)가 일어날 때마다 그/그녀는 (의도한 습관의 첫 번째 행동)을 한다.

- 위의 '당신이 의도한 습관이 나타나기 직전에 사용자가 하는 행동은 무엇인가?'라는 질문을 참고해서 외부 계기를 보내기에 적절한 시점과 장소를 제시하라.

- 사용자에게 내부 계기가 일어나는 시점과 외부 게기를 최대한 긴밀하게 연결시킬 수 있는 방법은 무엇인가?

- 기존의 첨단 기술을 사용해서 사용자의 반응을 유도할 수 있는 방법을 3가지 이상 제시하라(예: 이메일, 알림, 문자메시지 등). 그런 다음 사용자의 반응을 유도하는 데 현재의 기술로는 불가능하거나 정신 나간 소리처럼 들릴 수 있는 방법을 세 가지 이상 제시하라(예: 몸에 착용할 수 있는 컴퓨터, 생체 인식 센서, 메시지 전달용 비둘기 등). 당신이 생각해낸 정신 나간 아이디어들이 나중에는 전혀 이상할 것 없는 새로운 접근법을 탄생시킬 수도 있다. 몇 년 후에는 새로운 첨단 기술이 등장해서 지금은 상상할 수도 없는 온갖 유도 기회들이 만들어질지 누가 알겠는가?


3장 - 행동


기억해야 할 요점

- 행동은 훅 모델의 두 번째 단계다.

- 훅 모델의 두 번째 단계에 해당되는 행동은 보상을 기대하면서 수행하는 아주 강당한 행동을 말한다.

- 포그 박사가 주장한 행동 모델을 간략히 요약하면 다음과 같다.

: 어떤 행동이 일어나기 위해서는 다음 세 가지가 동시에 충족되어야 한다. 계기가 존재해야 하고 행동 발생에 필요한 사용자의 능력과 동기가 충분히 갖춰져야 한다.

- 의도한 사용자 행동이 발생할 가능성을 높이기 위해서는 분명한 계기가 존재하고 그런 행동이 쉽게 일어날 수 있도록 능력을 증대시키고 마지막으로 적절한 동기유발 요인이 갖춰져 있어야 한다.

- 모든 행동은 세 가지 핵심 동기유발 요인 중 하나에 의해 촉발된다. 즐거움 추구/고통 회피, 희망 추구/두려움 회피, 사회적 수용 추구/사회적 거부 회피가 그것이다.

- 능력은 시간, 돈, 육체적 노력, 정신적 노력, 사회적 일탈성, 비일상성, 이 여섯 가지 요소의 영향을 받는다. 그리고 이런 능력은 사용자와 그가 처한 상황에 따라 달라질 수 있다.

- 발견법은 우리가 재빨리 의사 결정을 내릴 대 머릿속에서 일어나는 인지적 지름길이다. 의도한 사용자 행동의 발생 가능성을 높이고 싶다면 상품 설계자들은 다양한 발견법들을 잘 활용할 수 있어야 한다.


지금 해야 할 활동

아래 질문들에 답해보기 바란다.

- 당신의 상품이나 서비스를 사용하기 위해 사용자들이 거쳐야 하는 단계를 천천히 떠올려보라. 내부 계기를 느끼는 시점부터 사용자들이 기대했던 결과를 얻게 되는 단계까지 하나씩 살펴보는 것이다. 사용자들이 기대한 보상을 얻기까지 얼마나 많은 단계를 거쳐야 하는가? 그런 과정은 이번 장에서 소개했던 몇 가지 사례들과 비교했을 때 어느 정도 단순한가? 또한 경쟁 관계에 있는 상품/서비스와 비교했을 때는 얼마나 단순한가?

- 습관이 될 행동을 수행하는 데 필요한 사용자 능력을 제한하는 것은 무엇인가?

 :시간, 돈, 육체적 노력, 정신적 노력(너무 혼란스럽다), 사회적 일탈성(사회 규범에서 벗어난다), 비일상성(너무 새롭다)

- 의도한 행동이 좀 더 용이하게 일어날 수 있게 해줄, 검증 가능한 방법 세 가지를 떠올려보라.

- 습관 형성 행동의 발생 가능성을 높이기 위해 발견법을 어떤 식으로 적용하는 것이 좋을지 생각해보라.


4장 - 가변적 보상


보상 체계를 설계하는 데 필요한 주요 고려사항들


쿼라의 성공은 다른 사용자들의 인정 및 칭찬, 사회적 보상이 사용자의 참여 빈도를 높이는 데 훨씬 중요한 동기유발 요인으로 작용한다는 것을 보여주었다. 쿼라는 답변에 대한 사용자 만족도를 알려주는 투표 집계 방식을 도입하고 사람들의 피드백을 계속 제공했다. 이로써 사용자들의 인정 같은 쿼라의 사회적 보상이 마할로의 금전적 보상보다 더 매력적이라는 사실이 입증된 것이다.

사용자들이 정말 중요시하는 것이 무엇인지 정확히 이해하고 있어야만 가변적 보상과 회사가 의도하는 행동을 적절히 연결시킬 수 있다.

최근 다양한 성공 사례에서 '게임화-gamification(게임과는 거리가 먼 상황에 게임과 관련된 요소를 적극 도입하는것)'를 자주 발견하게 된다. 물론 점수, 배지, 리더 보드-leaderboard(최고 선수들의 명단 및 점수를 기록한 판) 같은 것들이 효과적일 수 있다. 하지만 그런 것들은 사용자의 가려운 부분을 시원하게 긁어줄 때만 효과를 거둘 수 있다. 고객의 문제점과 회사가 제시한 해결책이 서로 부합되지 않으면 게임 관련 요소를 아무리 많이 도입해도 사용자의 참여를 자극하기 어렵다. 마찬가지로 사용자의 욕구가 지속되지 않을 경우, 예를 들면 어떤 사이트에 처음 들어갔는데 특별한 매력을 발견하지 못해 지속적 방문의 필요성을 느끼지 못할 경우, 게임화는 실패할 수밖에 없다. 왜냐하면 특정 상품이나 서비스에 대해 원래 갖고 있던 흥미가 사라졌기 때문이다. 바궈 말하면 사용자의 참여를 유도하는 데 게임화가 능사는 아니라는 뜻이다.

가변적 보상은 상품 설계자가 보다 매력적인 상품을 만들기 위해 즉석에서 뿌릴 수 있는 마법의 가루가 아니다. 보상이 해당 상품을 사용해야 하는 이유와 적절히 부합하고 사용자의 내부 계기, 동기들과도 조화를 이루어야만 성공을 거둘 수 있다.


기억해야 할 요점

- 가변적 보상은 훅 모델의 세 번째 단계로, 종족, 수렵, 자아라는 세 가지 형태를 취한다.

- 종족 보상은 다른 사람들과의 유대감을 통해 강화되는 사회적 보상을 추구한다.

- 수렵 보상은 물질 자원 및 정보를 추구한다.

- 자아 보상은 탁월함, 유능함, 완수 같은 본질적 보상을 추구한다.

- 사람들은 자율성이 위협받으면 선택할 수 없다는 사실에 압박감을 느끼고 새로운 행동을 하는 것에 반감을 가질 때가 많다. 심리학자들은 이것을 '유도 저항' 이라고 부른다. 반복적 참여를 유도하기 위해서는 사용자가 계속 자율성을 느낄 수 있게 해주는 것이 중요하다.

- 한정된 가변성을 지닌 상품은 사용 경험에 대한 예측이 가능해지면서 점점 사용자들의 관심과 흥미를 잃게 만든다. 하지만 무한한 가변성을 가진 상품은 사용 가변성을 지속함으로써 사용자의 관심과 흥미를 게속 유지시킬 수 있다.

- 상품 설계자는 사용자의 욕구를 충족시키면서 재참여를 유도할 수 있는 가변적 보상 체계를 만들어내야 한다.


지금 해야 할 활동

다음 활동을 완수해보기 바란다

- 고객 다섯 명과 개방형 면담을 실시하라. 이야기를 나누면서 당신의 상품에서 고객들이 즐거움을 느끼거나 계속 사용하고 싶게 하는 것이 있는지 살펴보라. 당신의 상품을 사용할 때 기쁨이나 놀라움을 느낄 때가 있는지 물어보라. 당신의 상품을 사용하면서 고객들이 특별히 만족스러워하는 부분이 있는가?

- 해당 상품이나 서비스를 습관적으로 사용하기 위해 고객들이 거쳐야 할 단계들을 검토해보라. 사용자의 고통을 완화시켜주는 보상은 무엇인가? 그런 보상은 사용자의 욕구를 충족시켜주는 동시에 더욱더 갈망하게 만드는가?

- 다음 각각에 대해 당신의 상품이 사용자들의 가변적 보상 추구 활동을 강화 시켜줄 수 있는 방법을 세 가지씩 떠올려보라.

종족 보상 : 다른 사람들에게서 느끼는 만족감

수렵 보상 : 물질, 돈, 정보

자아 보상 : 탁월함, 완수, 유능함, 일관성


5장 - 투자


기억해야 할 요점

- 투자는 훅 모델의 네 번째 단계다.

- 즉각적인 만족을 제공하는 행동 단계와는 달리 투자 단계에서는 앞으로 일어날 보상에 대한 기대가 중요하게 작용한다.

- 자신이 투입한 노력을 과대평가하고, 과거 행동과의 일관성을 계속 유지하려하며 인지 부조화를 피하려고 하는 사람들의 보편적 경향 때문에 특정 상품에 대한 투자 활동은 해당 상품의 선호로 이어지게 된다.

- 투자는 가변적 보상 단계가 끝난 후 사용자가 거기에 화답할 준비를 갖추었을 때에만 일어날 수 있다.

- 투자는 사용할수록 서비스가 개선되게 함으로써 사용자의 재참여 가능성을 증대시킨다. 또한 콘텐츠, 데이터, 추종 세력, 평판, 사용 기술 등의 형태를 취하는 저장 가치를 증대시켜주는 효과도 있다.

- 투자는 훅 사이클을 처음부터 다시 시작할 수 있는 다음 계기를 마련해주기 때문에 이를 통해 사용자들이 훅 사이클을 다시 한 번 순환할 가능성이 높아진다.


지금 해야 할 활동

아래 질문에 답해보기 바란다.

- 당신이 만들 상품의 흐름도를 살펴보라. 그 상품에서 재참여를 유도하기 위해 사용자들에게 투입하도록 요구하는 '약간의 노력'은 무엇인가?

- 당신의 상품에 사용자들이 할 수 있는 작은 투자 활동 세 가지를 생각해보라.

- 다음 계기를 마련하라.

- 데이터, 콘텐츠, 추종 세력, 평판, 사용 기술 같은 형태의 가치를 저장하라.

- '마련된 계기'가 사용자들의 재참여를 유도하는 데 어느 정도의 시간이 걸리는지 파악하라. 훅 사이클의 순환 시간을 단축시키기 위해 어떤 식으로 지연 상태를 줄여야 하는가?


6장 - 이것으로 당신은 무엇을 하려고 하는가?


기억해야 할 요점

습관 형성 첨단기술 상품의 설계자들이 사용자를 조종하는 방법 뒤에 숨은 윤리적 문제점을 이해하기 위해서는 자신들의 활동이 다음 중 어디에 해당하는지 판단할 수 있어야 한다. 당신은 조력자인가, 장사꾼인가, 오락가인가, 마약상인가?


- 조력자는 자신이 개발한 상품을 직접 사용하고 그것이 사용자들의 생활을 물질적으로 개선시켜줄 것이라고 믿는 사람이다. 이런 사람은 사용자들의 욕구를 정확히 파악하고 있기 때문에 성공할 가능성이 아주 높다.

- 장사꾼은 자신의 상품이 사용자들의 생활을 물질적으로 개선시킬 것이라고 생각은 하지만 자신이 직접 사용하지는 않는다. 이런 사람은 사용자들을 제대로 이해하지 못한 상태에서 해결책을 제시하려다 자만심과 불확실성에 빠질 수 있다는 것을 유의해야 한다.

- 오락가는 자신이 개발한 상품을 직접 사용하긴 하지만 그것이 사용자들의 생활을 개선시켜줄 것이라고는 생각하지 않는다. 이런 사람은 성공 가능성은 높지만 어떤 식으로든 사람들의 생활을 개선시키지 않으면 성공을 지속하기가 어렵다.

- 마약상은 자신의 제품을 사용하지도 않고 그것이 다른 사람들의 생활을 개선 시켜줄 것이라고 생각하지도 않는다. 이런 사람은 장기적 성공 가능성이 아주 낮고 도덕적으로도 위태로운 상태일 때가 많다.


지금 해야 할 활동

- 당신은 조종 매트릭스의 사사분면 중 어디에 해당되는지 한번 생각해보기 바란다. 당신은 자신이 개발한 상품이나 서비스를 사용하는가? 당신의 상품은 사용자의 행동에 긍정적 영향을 미치는가 아니면 부정적 영향을 미치는가? 당신은 자신의 상품에 대해 어떻게 생각하는가? 당신의 상품이 사람들의 행동에 영향을 미치는 방식에 자부심을 느끼는지 스스로에게 질문해보기 바란다.


7장 - 사례 연구 : 성경 앱


이 앱이 이렇게 널리 퍼질 수 있었는 데는 이 앱에 들어가면 첫 화면에 항상 새로운 성경 구절이 나타나면서 독자들을 반긴다는 점도 무시할 수 없다. 그런 구절 아래의 커다란 파란색 버튼에는 이런 문구가 적혀 있다. "오늘의 구절을 공유하세요." 클릭을 한 번 하면 그날그날의 성경 구절이 페이스북이나 트위터로 즉시 날아간다.

최근에 읽은 성경 내용에 숨은 유인들은 폭넓게 조사하지는 못했지만 자신을 긍정적으로 드러낼 수 있다는 보상도 성경 앱의 인기에 한몫했을 것이다. 한마디로 '겸손한 척하면서도 자랑'을 할 수 잇다는 것이다. '인간은 자신에 관한 정보를 노출시키는 데서 본질적 만족을 느낀다'는 하버드 대학의 한 메타분석을 통해서도 그런 행동이 보상과 관련된 신경 및 인지 메커니즘에 관여한다는 사실을 확인할 수 있다.


기억해야 할 요점

- 유버전의 성경은 데스크톱 컴퓨터 기반의 웹사이트였을 때는 사용자 참여도가 아주 저조했다. 그러나 모바일용 앱으로 전환해서 빈번하게 계기를 제공할 수 있게 되자 사용자의 접근성과 참여율이 대폭 신장되었다.

- 유버전의 성경 앱은 첫 화면에 흥미로운 콘텐츠를 제공하고 눈이 아닌 귀로 들을 수 있는 오디오 기능을 추가하는 등 사용자들의 행동 개시 능력을 크게 높여주었다.

- 성경의 내용을 작은 문단 단위로 세분화하자 사용자들이 날마다 조금씩 성경을 나눠 읽기가 훨씬 수월해졌다. 다음 날 받을 성경 구문에 대한 궁금증 유발은 가변적 보상 효과도 거두고 있다.

- 사람들이 주석 북마크, 하이라이트 기능을 사용할 때마다 앱 데이터에 저장되고 그런 가치가 쌓일수록 사용자들이 더 열심히 성경을 읽게 된다.


8장 - 습관 테스트, 그리고 습관 형성 기회 탐색


먼저 열성적 사용자의 의미부터 규정할 필요가 있을 것 같다. 당신의 상품을 얼마나 자주 '사용해야' 열성적 사용자라고 할 수 있을까? 이 질문에 대한 대답은 아주 중요한 의미를 가지며 당신의 시각을 크게 바꿔놓을 수 있다. 유사 상품이나 해결책에서 구할 수 있는 공개 데이터가 당신이 목표로 하는 사용자와 참여도를 정하는 데 도움이 될지도 모르겠다. 만약 데이터를 구하기가 힘들다면 이미 알고 있는 가설들을 이용하기 바란다. 아주 현실적이고 솔직하게 가설을 세워야 한다.


기억해야 할 요점

- 훅 모델은 상품 설계자들이 습관 형성 첨단기술을 목표로 시제품을 만들 수 있게 도와준다. 또한 기존 상품의 습관 형성 가능성 속에 숨은 잠재적 약점을 밝혀내는 데도 효과적이다.

- 상품이 개발되었다면 습관 테스트를 실시해서 상품의 열성 사용자를 파악하고 상품의 어떤 요소가 습관을 형성시키고, 그런 요소들이 사용자 행동을 왜 변화시키는지를 알아내야 한다. 습관 테스트는 다음과 같은 3단계로 진행된다. 파악하기, 표준화하기, 수정하기.

- 가장 먼저 사람들이 어떻게 행동하고 해당 상품을 어떤 식으로 사용하는지 파악하기 위해 관련 데이터를 철저히 분석해야 한다.

- 그 다음, 습관적 사용자를 찾아내기 위해 분석결과를 표준화해야 한다. 새로운 가설을 세우기 위해서는 열성적 사용자들이 취하는 행동과 과정을 유심히 살펴보아야 한다.

- 마지막으로 습관적 사용자가 거친 과정을 보다 많은 사람들이 그대로 따를 수 있도록 해당 상품을 수정하고 그 결과를 평가하고 필요할 때마다 계속 변경해 나가야 한다.

- 자신의 행동을 자세히 관찰하는 활동이 새로운 통찰력과 습관 형성 상품의 개발 기회로 이어질 수 있다.

- 새로운 첨단기술을 통해 훅 모델이 보다 빠르고, 빈번하고, 만족스러운 방향으로 순환되고 있는 분야를 파악하면 새로운 습관 형성 상품을 개발하는 데 훌륭한 밑거름이 될 수 있다.

- 발생 초기 행동 즉, 처음에는 소수의 사람들에게만 국한되었지만 나중에는 일반 대중의 욕구까지 충족시켜주는 새로운 행동들은 향후 획기적 습관 형성 기회를 발견할 수 있게 해준다.

- 새로운 인터페이스는 혁신적인 행동 변화와 사업 기회로 이어진다.


지금 해야 할 활동

다음 활동들을 실시해보기 바란다.

- 이번 장에서 소개한 습관 테스트를 실시해서 장기적 참여를 위해 사용자들이 거쳐야 하는 단계들을 알아내라.

- 일주일 동안 일상적으로 사용하는 상품들에 대해 당신이 취하는 행동, 느끼는 감정들을 주의 깊게 관찰하라. 그런 다음 스스로에게 다음과 같은 질문들을 던져보기 바란다.

a. 이런 상품들을 사용하도록 유도한 것은 무엇인가? 나의 이런 행동이나 감정을 촉발한 것은 내부 계기인가, 외부 계기인가?

b. 나는 현재 이런 상품들을 상품 설계자들의 의도대로 사용하고 있는가?

c. 이런 상품들은 습관 형성 유도 과정을 어떤 식으로 개선시켰고, 추가 외부 계기를 통해 어떤 식으로 사용자들의 재참여를 유도했으며 해당 상품에 대한 사용자들의 투자를 어떤 식으로 촉진했는가?

- 당신과 아무 관련이 없는 세 사람과 이야기를 나누면서 그들의 휴대전화 첫 화면에 어던 앱이 설치되어 있는지 알아내라. 그들에게 평상시처럼 그런 앱을 사용해달라고 요청한 후 어떤 불필요한 행동이나 발생 초기 행동이 일어나는지 살펴보기 바란다.


대칭되는 단어 = 팔린드롬 여부 확인하기 (ex. stars, 토마토...)


def is_palindrome(word):

for left in range(len(word) // 2):

# 한 쌍이라도 일치하지 않으면 바로 False를 리턴하고 함수를 끝냄

right = len(word) - left - 1

if word[left] != word[right]:

return False


#for 문에서 나왔다면 모든 쌍이 일치

return True


print(is_palindrome("racecar"))

print(is_palindrome("stars"))

print(is_palindrome("토마토"))

print(is_palindrome("hello"))

주민등록번호 끝 4자리를 *로 마스킹하는 코드


문자열은 immutable하기 때문에 mutable한 리스트로 만드는 것이 핵심


def mask_security_number(security_number):

#security_number를 리스트로 변환            

num_list = []

for i in range(len(security_number)):

num_list.append(security_number[i])


#더 좋은 코드 - 문자열을 한 번에 리스트로 바꾸는 형 변환

def mask_security_number(security_number):

num_list = list(security_number)


# 마지막 네 값을 * 로 대체

for i in range(len(num_list) - 4, len(num_list)):

num_list[i] = "*"


# 리스트를 문자열로 복구

total_str = ""

for i in range(len(num_list)):

total_str += num_list[i[


return total_str




def mask_security_number(security_number):

# security_number를 리스트로 변환

num_list = list(security_number)


# 마지막 네 값을 * 로 대체

for i in range(len(num_list) - 4, len(num_list)):

num_list[i] = "*"


# 리스트를 문자열로 복구

total_str = "".join(num_list)


return total_str




def mask_security number(security_number):

return security_number[:len(security_number) - 4] + "****"

사이렌 오더, O2O 서비스의 막을 열다


온라인 주문과 음료 제조의 시간 차를 잡아라

사이렌 오더를 도입했을 때 무엇보다도 중요한 문제는 고객이 매장을 방문하는 시간과 음료 제조 시간 사이의 불일치였다. 고객이 매장 바깥에서 음료를 주문했다고 가정하면 과연 언제부터 음료를 만들어야 할까? 너무 일찍 만들면 고객에게 전달될 때 음료의 품질이 떨어질 것이고, 너무 늦게 만들면 고객이 오랜 시간을 기다려야 한다.

단순히 고객의 위치 정보를 바탕으로 매장과의 거리를 계산해 도착 시간을 어림할 수도 있지만, 고객이 매장의 정확한 위치를 몰라서 헤맬 경우 문제가 되었다. 오는 길에 편의점에 들러 물건 하나를 사고 오거나 잠깐 화장실에 들렀다 오는 정도의 시간조차도 음료 품질에는 큰 영향을 미칠 수 있었다. 오는 정도의 시간조차도 음료 품질에는 큰 영향을 미칠 수 있었다. 가장 좋은 방법은 고객이 매장에 들어섰을 때 제조를 시작하는 것인데, 그렇다면 어떻게 고객이 매장에 들어왔다는 것을 알 수 있을까?

우리가 선택한 방법은 고주파 음이었다. 스타벅스 매장은 각기 주파수가 다른 고주파 신호를 매장 안에 내보낸다. 이 신호는 우리 귀에는 들리지 않지만 스마트폰 마이크는 인식할 수 있다. 모바일 앱이 이를 인식하면 어느 매장에 들어왔는지 정보를 전송한다. 이 정보는 POS로 전달된다.

기술적인 혁신을 도입하고 앱을 개선함으로써 고객의 이해와 사용 빈도는 조금씩 상승하기 시작했다. 그러나 우리가 기대하는 수준까지는 아직 한참 못 미치는 상황이었다. 우리는 일단 고객들이 사이렌 오더를 써보면 편리성에 쉽게 공감할 수 있으리라 자신했다. 즉, 관건은 고객들이 이를 써보도록 유도하는 것이었다.

우리는 파격적으로 '사이렌 오더 데이' 이벤트를 전개했다. 서비스 런칭 1주년을 맞아 사이렌 오더로 주문을 하면 주문한 음료 수만큼 아메리카노를 무료로 증정했다. 고객들은 동료나 친구들에게 "사이렌 오더 할 줄 알아요? 주문 좀 대신 해줄래요?" 하며 관심을 보였고, SNS 등을 통해 순식간에 주변 고객에게 확산되었다.


경험에서 시스템으로, 고용 개혁 프로젝트


좋은 인재를 스타벅스로, 채용 프로세스 개발

스타벅스커피 코리아에는 몇 가지 독특한 인력 운영 기준이 있다. 

먼저 '333'제도다. 최대 3번까지 입사할 수 있고, 입사하면 최소 3개월은 근무해야 재입사할 수 있으며, 재입사를 하려면 퇴직 후 최소 3개월이 지나야 한다는 뜻이다. 만약 음식점에서 아르바이트를 했던 내 딸처럼 2개월만 근무했다면 재입사를 할 수 없다.

다소 빡빡하다고 볼 수도 있겠지만 이 규정 때문에 파트너들은 퇴직 여부를 무척 신중하게 결정한다. 지금은 사정이 있어 퇴직을 해야 하지만 추후 재근무할 여지를 두기 위해서 입사 후 최소 3개월은 채우려고 하고, 퇴직일까지 근무를 소홀히 하지 않는다. 성실한 근무 평가도 재입사 요건이기 때문이다. 모든 정보는 실시간으로 관리자 레벨에서 공유되므로 1,000개 매장이 1개 매장처럼 움직인다.

파트너가 같은 매장에서 근무할 수 있는 기간에도 제한이 있다. 최대 상한선은 24개월이고, 18개월이 지나면 매장 이동 배치 우선 순위로 분류된다. DM은 이들과 면담을 통해 가급적 희망하는 매장 중 출퇴근 기준에 부합하는 매장으로 인사 발령을 낸다. 한 매장에 오래 근무함으로써 생길 수 있는 문제점을 해결하는 한편, 새로운 경험을 부여해 파트너들이 지루해하지 않고 도전 의식을 갖도록 하기 위해서다.

회사는 모든 파트너가 일을 즐기며 꿈을 품고 계속 근무할 수 있는 장기 비전을 제시해야 한다. 그래야만 자발적 동기 유발이 가능하고 능동적으로 업무를 수행하기 때문이다. 스타벅스커피 코리아가 시행하고 있는 여러 가지 인력 운용 원칙도 바로 직원에게 동기를 부여하고 도전 의식을 충전시키기 위한 고민의 결과물이라 할 수 있다.


스타벅스커피 코리아의 성공 핵심 요소


첫째, 스타벅스커피 코리아는 기업의 가치 즉, 스타벅스 사명에 충실했다. 하워드 슐츠가 처음 스타벅스를 창립했을 때, 그리고 위기 상황에서 구원투수로 나서서 온워드를 추진했을 때, 그리고 위기 상황에서 구원투수로 나서서 온워드를 추진했을 때 최우선으로 고민한 스타벅스의 사명을 따랐다. 고객에게 스타벅스 매장을 제3의 공간으로 제공하고, 가장 자유롭고 편안하게 행복한 시간을 보낼 수 있도록 하려는 사명을 지키고 실천하는 전략을 추진했다. 수익만을 좇아 영업이 잘될 것 같은 중심지에 작은 규모의 점포를 내지 않고, 최소 70평 이상의 넓은 매장을 오픈했다. 매장 안에는 고객이 가장 편안하게 기댈 수 있는 가죽 소파를 들여놓고, 널찍한 원목 테이블을 배치해 커피를 마시며 책을 읽을 수 있도록 배려했다. 또한 호텔이나 고급 주택에서 볼 수 있는 고급 조명과 벽화 등으로 인테리어를 꾸며, 단순히 커피를 파는 장소가 아닌 편안한 휴식 공간으로 만들었다.


둘째, 고객을 우리의 이웃, 우리의 가장 친한 친구로 생각하고 소통하는 전략을 추진했다. 우리는 수많은 고객의 클레임에도 불구하고 진동벨을 도입하지 않았다. 판매자 입장에서, 음료가 준비되었으니 빨리 음료를 받으러 오라는 개념의 호출 서비스는 우리 생각 과는 맞지 않았다. 우리는 끊임없이 고민해 '마이 스타벅스 리워드'라는 멤버십 제도와 '콜 마이 네임' 서비스를 도입했고, 고객을 가장 친한 친구처럼 부르는 소통 마케팅을 선보였다.


셋째, IT 혁신이다. 특히 1인 스마트폰 시대에 적합한 모바일 혁신을 추진했다. 고객과의 소통뿐만 아니라 파트너와의 소통까지 모바일로 연결했다. 이제 고객은 더 이상 매장에서 길게 줄을 설 필요가 없다. 매장 밖에서도, 차량 안에서도 주문 가능한 O2O 서비스, 사이렌 오더가 있기 때문이다. '마이 스타벅스 리워드'는 고객이 모바일로 스타벅스를 즐길 수 있는 많은 프로그램을 제공했다. 선결제 시스템을 도입해 편리하게 주문할 수 있고, 잃어버릴 염려 없이 포인트와 e-스티커를 모을 수도 있다. 모바일을 통한 고객과의 소통 채널을 만든 것이다.

파트너의 육성, 업무 소통, 경영관리를 쉽게 할 수 있는 업무용 모바일 앱도 개발해 사용하고 있다. 모든 매장 업무를 디지털 시스템으로 수렴해 디지털 매장 경영의 초석을 마련했다. 또한 게임 방식의 교육, 애니메이션이 가미된 동영상 교육을 모바일 앱으로 구현해 전국에 분산된 파트너를 교육한다. POS 단말기의 최적화, 라벨 프린팅, 모바일 인트라넷은 매장을 표준화했다. 파트너들은 자신의 급여를 집에서 스마트폰으로 확인할 수 있다. 사건 사고, 위생 문제에 즉각 대응할 수 있는 수평적 보고 문화와 사이렌 119, MOST를 활용한 주간 평가 시스템, 매장의 모든 지표를 실시간으로 확인할 수 있는 스토어 365에 이르기까지 모든 업무는 즉각적으로 진행된다. 보고 체계에 시간을 빼앗기는 대신 권한 위임을 통해 바로바로 의사 결정 체계를 움직이는 서비스를 실현했다.


넷째, 글로컬라이제이션 전략을 적극 구사해 한국 문화와 사회 환경에 맞게 한국의 옷을 입힌 매장과 상품을 개발했다. 매장을 오픈할 때마다 그 지역의 역사적, 사회적 의미를 담은 벽화, 조형물을 설치해, 매장을 찾은 고객에게 친숙한 느낌을 주는 공간을 조성했다. 또한 미국에서 개발된 음료를 그대로 들여오지 않고 수많은 실험과 레시피 개발을 통해 한국인의 입맛에 맞는 음료로 재개발하는 전략을 고집했다. 더 나아가 한국의 지방 특산물을 이용한 음료를 개발해 한국인의 입맛뿐 아니라 마음까지 사로잡았다. 문경 오미자 피지오는 농산물 신상품 대상을 받는 큰 영예까지 누렸다. 한국적 디자인을 가미한 혁신적인 MD도 쏟아넀다. 임산부 선물로 각광받은 청양 머그 시리즈, 봉산탈춤을 새겨 넣은 머그까지, 새로운 MD가 출시될 때마다 이른 아침 스타벅스 매장에는 MD를 구매하려는 고객이 줄을 서는 진풍경이 벌어졌다.


다섯째, PR(Public Relationship) 전략이다. 스타벅스커피 코리아는 늘 우리의 이웃과 함께하자는 사명을 실천했다. 커피 찌꺼기를 전 매장에서 수거해 퇴비로 재생산하는 리사이클 시스템을 선보였고, 우유 파동이 벌어졌을 때에는 낙농 업계를 돕기 위해 '우유 사랑라테' 마케팅으로 우유 소비를 촉진했다. 이 프로모션은 전 업계로 확산되어 낙농 업계가 큰 위기를 넘기기도 했다. '작은 원두의 위대한 힘을 믿습니다'를 슬로건으로 하는 커뮤니티 스토어를 오픈해 어려운 환경의 젊은 인재들을 육성하는 일에도 동참했다. 매장을 오픈할 때마다 지역사회에 수익금을 기부하고, 1만 명의 파트너가 전국 곳곳에서 재능 기부와 사회봉사 활동을 꾸준히 전개하면서, 한국인의 마음속에 진정한 사회 기업으로 자리 잡을 수 있었다.


여섯째, 정부 정책에 적극 동참했다. 청년 실업 문제 해소와 지방 인력 고용 창출을 위해 ASM-T 대졸 공체 제도를 도입했고, 장애인 고용에 앞장서 서비스업 최초로 매장에서 근무하는 장애인 바리스타, 장애인 최초 부점장을 탄생시켰다. 이런 작은 움직임이 확산되어 서비스업 어느 곳에 가더라도 장애인이 근무하는 모습을 볼 수 있게 하는 사회적 역할을 수행했다. 또한 육아와 양육으로 경력이 단절된 여성 인력의 재고용 프로그램인 리턴맘 제도를 도입해 확산시키기도 했다.


일곱째, 고객 존중 프로그램의 시행이다. 고객의 요구에 기계적으로 Yes만을 외치는 것이 아니라 고객을 논리적으로 설득할 수 있는 '저스트 세이 예스', 고객의 소리에 귀 기울이는 'CV' 같은 캠페인으로 고객에게 최고의 서비스를 제공했고, 고객의 호응을 불러일으켰다.


여덟째, 인사 시스템의 혁신이다. 서비스업 특성상 인력의 순환이 빨라 일관된 서비스를 제공하기 어렵고, 제조업 대비 3~4배 높은 인건비로 매장 효율을 얻기 쉽지 않은 구조임에도 불구하고, 매장 인력 표준 모델을 구축하고 인사관리 업무를 시스템화해 인적 자원의 안전성을 높이고 파트너의 숙련도를 강화했다. 이는 고객에게 최고의 서비스를 제공할 수 있는 기틀이 되었다.


마지막으로 가장 중요한 성공 요인은 바로 파트너다. 스타벅스의 성공 신화를 만든 주인공은 1만 명의 파트너였다. 비록 세간에서 흔히 들이대는 핵심 인재의 잣대에는 맞지 않을지 모르지만, 스타벅스에 대한 사랑과 열정으로 커피 하나만을 생각하며 묵묵하게 전국에서 일하고 있는 파트너들이야말로 스타벅스 성공의 진정한 주역이다. 만약 당신의 작은 기업이 시간을 지나 성장을 거듭하면서 제2의 스타벅스로 성장하기를 원한다면, 그래서 변변치 않은 나에게 가장 중요한 것이 무엇인지 하나만 알려달라고 조언을 구한다면 이 말을 꼭 하고 싶다. 그 무엇보다도 함께 하는 직원, 파트너의 소중함을 항상 가슴에 새겨야만 한다.

num을 파라미터로 받는 함수 sum_digit 정의하기


# 자리수

def sum_digit(num):

str_num = str(num)

sum_digit = 0


# 각 자리수를 sum_digit에 추가

for digit in str_num:

sum digit = sum_digit + int(digit)

return sum_digit


# sum_digit(1) 부터 sum_digit(1000)까지의 합 구하기

total = 0

for i in range(1, 1001):

total = total + sum_digit(i)

print(total)









01. 기업 / 제품 중심 슬로건


- 업계 최고를 강조하다

아마존 닷컴 / The world's largest bookstore

: BMW / The Ultimate Driving Machine

: 영국항공 / The World's Favorite Airline

: CNN / Convering the world like nobody can, World's news leader, Be the first to know, Go beyond borders

: 메르세데스 벤츠 / The best or nothing


- 기업 아이덴티티에 초점을 맞추다

: 아메리칸 항공 / American Airlines flies to Shanghai, Tokyo and Delhi everyday

: 호주 / There's nothing like Austrailia

: 바클레이스 / Fluent in Finance, Take one small step

: BBC / You make it what it is, This is what we do

: 브리티시 가스 / Looking after your world

: 시스코 / Welcome to the human network, Together we are the human network

: 히타치 / Home and Life solutions from Hitachi

: 이케아 / The Life Improvement Store

: 프록터앤드갬블 / Touching lives, improving life, Proud sponsors of mums

: 소니 / Like no other

: 제록스 / The Document Company

: 보성 / 녹차수도 보성


- 미래지향적 기업방향에 초점을 맞추다

: 영국자동차협회 / Safety first, For the road ahead

: 영국석유회사 / On the move, Beyond Petroleum

: 히타치 / Inspire the next

: 인텔 / Sponsors of Tomorrow

: 삼성 / Everyone's invited, Use your influence

: 토요타와 렉서스 / Today Tomorrow Toyota


- 제품 특성을 강조하다

: 캐드버리 / The crumbliest Flakiest milk chocolate in the world

: 히타치 / Power Unleashed

: 인텔 / Intel inside

: 마스주식회사 / The chocolate melts in your mouth, not in your hand

: 소니 / make, believe

게보린 / 두통, 치통, 생리통엔 게보린


- 브랜드 고급화를 지향하다

: 아베크롬비앤드피치 / Casual Luxury

: 드비어스 / A diamond is forever

: 티파니 / New York since 1837, Some style is legendary

: 힐스테이트 / 집에 담고 싶은 모든 가치


02. 고객 중심 슬로건


- 고객가치 고급화에 초점을 맞추다

: 기네스 / My goodness, my Guinness, Good things come to those who wait

: 로레알 / Parce que je le vaux bien

: 롤렉스 / A crown for every achievement, Live for greatness


- 서비스 및 고객과의 교감을 강조하다

: 부츠 / Trust Boots

: 영국항공 / To fly, To serve

: 히드로 / Making every journey better

: 로이드 TSB / TSB, it's the bank for me, for the journey

: 노키아 / Connecting people

: 피터존스앤드존루이스 파트너십 / Never knowingly undersold, Our life-long commitment to you

: 삼성 / Turn on tomorrow

: 보다폰 / Power to you, How are you?


03. 언어유희 이용 슬로건


- 감각적 단어로 정서를 자극하다

: 베일리스 / Let your senses guide you, Listen to your lips

: 두바이 / Definitely Dubai

: 홍콩 / Live it, Love it

: 재규어 / Don't dream it, Drive it

: 켈로그 / Snap! Crackle! Pop!


- 단어의 힘 : 키워드로 기억에 남기다

: 캐드버리 / a glass and a half full of joy

: 코카콜라 / Refresh yourself, The pause that refreshes, Always, Life begins here

: 디젤 / For successful living

: 페라리 / Beyond perfection

: 하인즈 / 57 Varieties

; 대한항공 / Morning Calm


- 재치 있는 구호 및 보편적 표현을 활용하다

: 메르세데스 벤츠 / Falling in love again

: 네스프레소 / Nespresso, what else?

: 탐팩스 / Outsmart Mother Nature

: 테스코 / Quest for Quality, Every little helps

: 토요타와 렉서스 / the pursuit of perfection

: 버진 아틀란틱 / No way BA/AA, Love at First Flight, fear of not flying


- 외국어를 활용해 색다른 이미지를 심다

: 크리스찬디올 / J'adore Dior

: 시트로엥 / Creative Technologie

: 버진 아틀란틱 / je ne sais quod, defined

: 한국투자증권 / True 友riend


- 다의적 표현으로 여러 의미를 담다

: 선데이타임즈 / Be part of the timme, Sunday isn't Sunday without The Sunday Times, The Sunday Times is the Sunday paper

: 월스트리트저널 / The daily diary of the American dream, Every journey needs a journal

: 도도화장품 / 도도한 여자가 아름답다


- 반전 / 역발상으로 눈길을 사로잡다

: 약사 / Redefining standards

: 디젤 / Be Stupid

: 볼보 / For Life, There's more to life than sexy cars


04. 캠페인성 슬로건


- 브랜드의 직접적 홍보보다는 이미지 개선을 노리다

: 아디다스 / Impossible is nothing

: 리바이스 / Go forth, Pioneers! O pioneers!

: 나이키 / Just do it, Run Barefoot

: 파텍 필립 / Begin your own tradition

: 세이브더칠드런 / No child born to die

: ㅅ와치 / Shake the world

: 엑스박스 / Jump in, Live your Moment


reverse / insert / append 메소드 와 del 함수 등을 이용하지 않고 리스트를 뒤집기


numbers = [2, 4, 6, 8, 10, 12, 14]


for i in range(4):

temp = numbers[i]

numbers[i] = numbers[6 - i]

numbers[6 - i] = temp


print("뒤집어진 리스트 : " + str(numbers))




a < b < c일때, a + b+ c = 1000 을 만족하는 피타고라수 수 (a, b ,c)의 곱을 구하라


for a in range(1, 1001):

    for b in range(1, 1001):

        c = 1000 - a - b

        if a * a + b * b == c * c and a < b < c:

            print(a * b * c)


# 효율적인 코드

for a in range(1, 333):

for b in range(a + 1, 500):

c = 1000 - a - b

if a ** 2 + b ** 2 == c ** 2:

print(a * b * c)

for i in range(1, 10):

    for j in range(1, 10):

        print("%d * %d = %d" % (i, j, i * j))

for i in range(11):

    print("2^%d = %d" % (i, 2 ** i))

numbers = [2, 3, 5, 7, 11, 13, 17, 19]


for values in range(len(numbers)):

print(values, numbers[values]

#print("%d %d" % (values, numbers[values]))


리스트에서 값의 존재 확인하기


# value가 some_list의 요소인지 확인

def in_list(some_list, value):

    i = 0

    while i < len(some_list):

        # some_list에서 value를 찾으면 True를 리턴

        if some_list[i] == value:

            return True

        i = i + 1


    # 만약 some_list에서 value를 발견하지 못했으면 False를 리턴

    return False


# 테스트

primes = [2, 3, 5, 7, 11, 13, 17, 19, 23]

print(in_list(primes, 7))

print(in_list(primes, 12))


in 활용 / not in

primes = [2, 3, 5, 7, 11, 13, 17, 19, 23]

print(7 in primes)

print(12 in primes)


리스트 안의 리스트 (Nested List)


# 세 번의 시험을 보는 수업

grades = [[62, 75, 77], [78, 81, 86], [85, 91, 89]]


# 첫 번째 학생의 성적

print(grades[0])


# 세 번째 학생의 성적

print(grades[2])


# 첫 번째 학생의 첫 번째 시험 성적

print(grades[0][0])


# 세 번째 학생의 두 번째 시험 성적

print(grades[2][1])


# 첫 번째 시험의 평균

print((grades[0][0] + grades[1][0] + grades[2][0]) / 3)


메소드

sort - some_list.sort() : 새로운 리스트를 생성하지 않고 some_list를 정렬 상태로 바꿔줌

reverse - some_list.reverse() : 원소들을 뒤집어진 상태로 배열

index - some_list.index(x) : some_list 에서 x의 값을 갖고 있는 원소의 인덱스를 리턴

remove - some_list.remove(x) : some_list에서 첫 번쨰로 x의 값을 갖고 있는 원소를 삭제

# 빈 리스트 만들기

numbers = []


# numbers에 자연수 1부터 10까지 추가

i = 1

while i <= 10:

    numbers.append(i)

    i = i + 1

print(numbers)


# numbers에서 홀수 제거

i = len(numbers) - 1

while i>= 0:

    if numbers[i] % 2 == 1:

        del numbers[i]

    i = i - 1

print(numbers)


# numbers의 인덱스 0 자리에 20이라는 값 삽입

numbers.insert(0, 20)

print(numbers)


# numbers를 정렬해서 출력

print(sorted(numbers))


# 다른 코드


numbers = []


i = 1


while i <= 10:

    numbers.append(i)

    i = i + 1


print(numbers)


j = 0


while j < len(numbers):

    if numbers[j] % 2 != 0:

        del numbers[j]

    else:

        j = j + 1

print(numbers)


numbers.insert(0, 20)

print(numbers)


numbers = sorted(numbers)

print(numbers)

# 원화 > 달러 > 엔화로 리스트를 변경하는 예제


def krw_to_usd(won):

    return won / 1000

def usd_to_jpy(dollar):

    return dollar * 125


i = 0


amounts = [1000, 2000, 3000, 5000, 8000, 13000, 21000, 34000]

print("한국 화폐: " + str(amounts))


while i < len(amounts): 

    amounts[i] = round(krw_to_usd(amounts[i]), 1)

    i = i + 1

    

print("미국 화폐: " + str(amounts))


i = 0


while i < len(amounts):

    amounts[i] = round(usd_to_jpy(amounts[i]), 1)

    i = i + 1


print("일본 화폐: " + str(amounts))


# 결과값

한국 화폐: [1000, 2000, 3000, 5000, 8000, 13000, 21000, 34000]

미국 화폐: [1.0, 2.0, 3.0, 5.0, 8.0, 13.0, 21.0, 34.0]

일본 화폐: [125.0, 250.0, 375.0, 625.0, 1000.0, 1625.0, 2625.0, 4250.0]

i = 0


def fahrenheit_to_celsius(fahrenheit):

    return (fahrenheit - 32) * 5 / 9


fahrenheit_temperatures = [40, 15, 32, 64, -4, 11]


print("화씨 온도 리스트: " + str(fahrenheit_temperatures))


while i < len(fahrenheit_temperatures):

    fahrenheit_temperatures[i] = round(fahrenheit_to_celsius(fahrenheit_temperatures[i]), 2)

    i = i + 1

    

print("섭씨 온도 리스트: " + str(fahrenheit_temperatures))

원소 갯수 세기

- len 함수


alphabet = ["a", "b", "c", "d"]

print("리스트의 길이는 : %d % len(alphabet))


원소 추가하기

- insert 함수와 append 함수를 통해서 리스트에 원소 추가 가능


numbers = []


# 마지막 위치에 5 추가

numbers.append(5)

print(numbers)


# 마지막 위치에 8 추가

numbers.append(8)

print(numbers)


# 마지막 위치에 10 추가

numbers.append(10)

print(numbers)


# 인덱스 0 자리에 0 추가

numbers.insert(0, 0)

print(numbers)


# 인덱스 3 자리에 12 추가

numbers.insert(3, 12)

print(numbers)


원소 빼기

- del 함수


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


# 인덱스 3에 있는 값 삭제

del numbers[3]

print(numbers)


# 인덱스 4부터 마지막 값까지 삭제

del numbers[4:]

print(numbers)



원소 정렬하기

- sorted 함수 : 리스트의 원소들을 오름차순으로 정렬한 새로운 리스트를 리턴


numbers = [8, 6, 9, 1, 2, 4, 7, 5, 3]

numbers = sorted(numbers)


print(numbers)


리스트 연결하기

- 리스트들을 +로 연결하기


alphabet1 = ["a", "b", "c"]

alphabet2 = ["d", "e", "f"]

alphabet = alphabet1 + alphabet2


print(alphabet)

def hello():


greetings = ["안녕", "니하오", "곤니찌와", "올라", "싸와디캅", "헬로", "봉주르"]

i = 0


while i < len(greetings): # len은 리스트의 길이를 리턴해주는 함수

    print(greetings[i])

    i = i + 1


hello()


from random import randint


count = 1

number = randint(1, 20)


while count <= 4:

   

    notification = int(input("기회가 %d번 남았습니다. 1 - 20 사이의 숫자를 맞춰보세요:" % (5 - count)))

   

    if notification < number:

        print("UP")

    elif number < notification:

        print("DOWN")

        

    else:

        print("축하합니다. %d번만에 숫자를 맞추셨습니다." % (count))

        break

    

    count = count + 1

    

    if 4 < count:

        print("아쉽습니다. 정답은 %d였습니다." % (number))



# 다른 코드


from random import randint


# 상수

NUM_TRIES = 4

ANSWER = randint(1, 20)


# 변수

tries = 0

guess = -1


# 시도가 남았고 아직 답을 못 맞췄을 경우

while tries < NUM_TRIES and guess != ANSWER

#guess는 처음에 -1이고 ANSWER는 1과 20사이기 때문에, 처음에 무조건 True

    guess = int(input("기회가 %d번 남았습니다. 1 - 20 사이의 숫자를 맞춰보세요: " % (NUM_TRIES - tries)))

    tries = tries + 1

    

    if guess < ANSWER:

        print("Up")

    elif guess > ANSWER:

        print("Down")


if guess == ANSWER:

    print("축하합니다. %d번만에 숫자를 맞추셨습니다." % (tries))

else:

    print("아쉽습니다. 정답은 %였습니다." % (ANSWER))

name = input("이름을 입력하세요: ") #괄호 안은 입력 창에 뜨는 안내 문구


#만약 콘솔 창에서 YOUR_NAME을 입력하면

print("Hello " + name)


#print("Hello " + name)의 결과는 Hello YOUR_NAME이 된다



input으로 정수나 소수 입력을 하려면


x = int(input("첫 번째 정수: "))

y = int(input("두 번째 정수: "))

print("두 정수의 합: %d" % (x + y))



'Python > 문법정리' 카테고리의 다른 글

[리스트] 리스트 종합  (0) 2017.08.13
[리스트] 함수  (0) 2017.08.13
[랜덤함수] randint 함수와 uniform 함수  (0) 2017.08.13
[모듈] 파일 생성 & import  (0) 2017.08.13
[제곱수 구하기] pow(x, n)  (0) 2017.08.13

radint - 두 정수 사이의 랜덤한 정수를 리턴시켜주는 함수

파이썬에 기본적으로 깔려있는 random 모듈에 정의되어 있다.


from random import randint


# a <= N <= b인 랜덤한 정수 N의 값을 리턴

randint(a, b)


x = randint(1, 20)

print(x)


uniform - random 모듈 안에 정의되어 있는 두 수 사이의 랜덤한 소수를 리턴시켜주는 함수


from random import uniform


x = uniform(0, 1)

print(x)

'Python > 문법정리' 카테고리의 다른 글

[리스트] 함수  (0) 2017.08.13
[input] 유저에게 입력을 받기 위한 내장함수  (0) 2017.08.13
[모듈] 파일 생성 & import  (0) 2017.08.13
[제곱수 구하기] pow(x, n)  (0) 2017.08.13
[조건문] if / elif / else  (0) 2017.08.12

+ Recent posts