Skip to content

Latest commit

ย 

History

History
139 lines (100 loc) ยท 5.08 KB

File metadata and controls

139 lines (100 loc) ยท 5.08 KB

๋ฏธ์…˜ - ์ˆซ์ž ์•ผ๊ตฌ

Note

์ด ์ฝ”๋“œ๋Š” ์›๋ž˜ java-baseball-6์—์„œ ์ œ๊ณต๋œ Java ๊ธฐ๋ฐ˜์˜ ์ˆซ์ž์•ผ๊ตฌ ๊ฒŒ์ž„์„ Python์— ๋งž๊ฒŒ ๋ณ€ํ™˜ํ•œ ๊ณผ์ œ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ, ์š”๊ตฌ ์‚ฌํ•ญ, ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐฉ์‹์€ ์›๋ณธ ์ €์žฅ์†Œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ Python ํ™˜๊ฒฝ์— ๋งž์ถ”์–ด ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.


๐Ÿ” ์ง„ํ–‰ ๋ฐฉ์‹

  • ๋ฏธ์…˜์€ ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ, ๊ณผ์ œ ์ง„ํ–‰ ์š”๊ตฌ ์‚ฌํ•ญ ์„ธ ๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
  • ์„ธ ๊ฐœ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•œ๋‹ค. ํŠนํžˆ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์— ๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ๋งŒ๋“ ๋‹ค.
  • ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ์— ๊ธฐ์žฌ๋˜์ง€ ์•Š์€ ๋‚ด์šฉ์€ ์Šค์Šค๋กœ ํŒ๋‹จํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.

๐Ÿ“ฎ ๋ฏธ์…˜ ์ œ์ถœ ๋ฐฉ๋ฒ•

  • ๋ฏธ์…˜ ๊ตฌํ˜„์„ ์™„๋ฃŒํ•œ ํ›„ GitHub์„ ํ†ตํ•ด ์ œ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • Pull Request๋กœ ์ตœ์ข… ์ œ์ถœ

๐Ÿšจ ๊ณผ์ œ ์ œ์ถœ ์ „ ์ฒดํฌ ๋ฆฌ์ŠคํŠธ - 0์  ๋ฐฉ์ง€

  • ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ๋ชจ๋‘ ์ •์ƒ์ ์œผ๋กœ ํ–ˆ๋”๋ผ๋„ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋ช…์‹œ๋œ ์ถœ๋ ฅ๊ฐ’ ํ˜•์‹์„ ์ง€ํ‚ค์ง€ ์•Š์„ ๊ฒฝ์šฐ 0์  ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์™„๋ฃŒํ•œ ๋’ค ์•„๋ž˜ ๊ฐ€์ด๋“œ์— ๋”ฐ๋ผ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์„ฑ๊ณตํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•  ๊ฒฝ์šฐ 0์  ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ, ๋ฐ˜๋“œ์‹œ ํ™•์ธ ํ›„ ์ œ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๊ฐ€์ด๋“œ

  • ํ„ฐ๋ฏธ๋„์—์„œ python --version์„ ์‹คํ–‰ํ•˜์—ฌ Python ๋ฒ„์ „์ด 3.9 ์ด์ƒ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • pytest ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ†ต๊ณผํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
=========================== test session starts ============================
...
========================= 100% passing in Xs =============================

๐Ÿš€ ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ

๊ธฐ๋ณธ์ ์œผ๋กœ 1๋ถ€ํ„ฐ 9๊นŒ์ง€ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ 3์ž๋ฆฌ์˜ ์ˆ˜๋ฅผ ๋งž์ถ”๋Š” ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค.

  • ๊ฐ™์€ ์ˆ˜๊ฐ€ ๊ฐ™์€ ์ž๋ฆฌ์— ์žˆ์œผ๋ฉด ์ŠคํŠธ๋ผ์ดํฌ, ๋‹ค๋ฅธ ์ž๋ฆฌ์— ์žˆ์œผ๋ฉด ๋ณผ, ๊ฐ™์€ ์ˆ˜๊ฐ€ ์ „ํ˜€ ์—†์œผ๋ฉด ๋‚ซ์‹ฑ์ด๋ผ๋Š” ํžŒํŠธ๋ฅผ ์–ป๊ณ , ๊ทธ ํžŒํŠธ๋ฅผ ์ด์šฉํ•ด ์ปดํ“จํ„ฐ์˜ ์ˆ˜๋ฅผ ๋งž์ถ”๋ฉด ์Šน๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ) ์ƒ๋Œ€๋ฐฉ(์ปดํ“จํ„ฐ)์˜ ์ˆ˜๊ฐ€ 425์ผ ๋•Œ
      • 123์„ ์ œ์‹œํ•œ ๊ฒฝ์šฐ: 1์ŠคํŠธ๋ผ์ดํฌ
      • 456์„ ์ œ์‹œํ•œ ๊ฒฝ์šฐ: 1๋ณผ 1์ŠคํŠธ๋ผ์ดํฌ
      • 789๋ฅผ ์ œ์‹œํ•œ ๊ฒฝ์šฐ: ๋‚ซ์‹ฑ
  • ์ปดํ“จํ„ฐ๋Š” 1์—์„œ 9๊นŒ์ง€ ์„œ๋กœ ๋‹ค๋ฅธ ์ž„์˜์˜ ์ˆ˜ 3๊ฐœ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋ ˆ์ด์–ด๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์ƒ๊ฐํ•˜๊ณ  ์žˆ๋Š” 3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ฉฐ, ์ปดํ“จํ„ฐ๋Š” ์ž…๋ ฅํ•œ ์ˆซ์ž์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • ์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด 3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ๋งžํžˆ๋ฉด ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฒŒ์ž„ ์ข…๋ฃŒ ํ›„ ๊ฒŒ์ž„์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์™„์ „ํžˆ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž˜๋ชป๋œ ๊ฐ’์„ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ ValueError๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ํ›„ ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์š”๊ตฌ ์‚ฌํ•ญ

์ž…๋ ฅ

  • ์„œ๋กœ ๋‹ค๋ฅธ 3์ž๋ฆฌ์˜ ์ˆ˜
  • ๊ฒŒ์ž„์ด ๋๋‚œ ํ›„ ์žฌ์‹œ์ž‘/์ข…๋ฃŒ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” 1๊ณผ 2 ์ค‘ ํ•˜๋‚˜์˜ ์ˆ˜

์ถœ๋ ฅ

  • ์ž…๋ ฅํ•œ ์ˆ˜์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ, ์ŠคํŠธ๋ผ์ดํฌ ๊ฐœ์ˆ˜๋กœ ํ‘œ์‹œ
1๋ณผ 1์ŠคํŠธ๋ผ์ดํฌ
  • ํ•˜๋‚˜๋„ ์—†๋Š” ๊ฒฝ์šฐ
๋‚ซ์‹ฑ
  • 3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ๋งžํž ๊ฒฝ์šฐ
3์ŠคํŠธ๋ผ์ดํฌ
3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ๋งžํžˆ์…จ์Šต๋‹ˆ๋‹ค! ๊ฒŒ์ž„ ์ข…๋ฃŒ
  • ๊ฒŒ์ž„ ์‹œ์ž‘ ๋ฌธ๊ตฌ ์ถœ๋ ฅ
์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฒฐ๊ณผ ์˜ˆ์‹œ

์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” : 123
1๋ณผ 1์ŠคํŠธ๋ผ์ดํฌ
์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” : 145
1๋ณผ
์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” : 671
2๋ณผ
์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” : 216
1์ŠคํŠธ๋ผ์ดํฌ
์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” : 713
3์ŠคํŠธ๋ผ์ดํฌ
3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ๋งžํžˆ์…จ์Šต๋‹ˆ๋‹ค! ๊ฒŒ์ž„ ์ข…๋ฃŒ
๊ฒŒ์ž„์„ ์ƒˆ๋กœ ์‹œ์ž‘ํ•˜๋ ค๋ฉด 1, ์ข…๋ฃŒํ•˜๋ ค๋ฉด 2๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.
1
์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” : 123
1๋ณผ
...

๐ŸŽฏ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ

  • Python 3.9 ์ด์ƒ์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ 0์  ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์˜ ์‹œ์ž‘์ ์€ main.py์˜ main() ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • PEP8 Python ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ์ค€์ˆ˜ํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์‹œ sys.exit()๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„์ด ์™„๋ฃŒ๋˜๋ฉด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์„ฑ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•  ๊ฒฝ์šฐ 0์  ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • Python์˜ random ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž„์˜์˜ ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • Random ๊ฐ’ ์ถ”์ถœ์€ random.sample()์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๊ฐ’์€ input()์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ

import random

computer = random.sample(range(1, 10), 3)

โœ๏ธ ๊ณผ์ œ ์ง„ํ–‰ ์š”๊ตฌ ์‚ฌํ•ญ

  • ๋ฏธ์…˜์€ python-baseball ์ €์žฅ์†Œ๋ฅผ Fork & Cloneํ•ด ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „ docs/README.md์— ๊ตฌํ˜„ํ•  ๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ์ •๋ฆฌํ•ด ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • Git์˜ ์ปค๋ฐ‹ ๋‹จ์œ„๋Š” ๊ธฐ๋Šฅ ๋ชฉ๋ก ๋‹จ์œ„๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.