REPL.it ํด๋์ค ๋ฃธ ํตํฉ์ ๋ํ ๋ ผ์๋ https://github.com/freeCodeCamp/freeCodeCamp/issues/14736 ์ ๋ฐฉ๋ฌธ
์ฐ๋ฆฌ๋ ํ์ฌ iframe Repl.it ์์ ฏ์์ ๊ฒ์ฆ ๊ฐ๋ฅํ Python ํ ์คํธ ์ค์ํธ๋ฅผ ์คํํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ด ์๋ํ๊ฒ๋๋ฉด์ด ์ค๋ ๋์ ์ ์ ๋ ๋ ์ด์์ ์ปค๋ฆฌํ๋ผ์ ๊ตฌํํ๊ธฐ ์์ํ ๊ฒ์ ๋๋ค. FCC Python ์ปค๋ฆฌํ๋ผ์์ด ๋ถ๋ถ์ ๊ฐ๋ฐํ๋ ๋ฐ ๊ด์ฌ์ด ์์ผ์๋ฉด Gitter์ ๋ ์์ (Ethan Arrowood)์๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ฑฐ๋ ์๋์ ์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ญ์์ค.
์๋์ ์ฃผ์์ ๋ฌ๊ณ ์ถ๊ฐํด์ผํ๋ ์น์ ๊ณผ ์ด์ ๋ฅผ ์ง์ ํ์ญ์์ค.
๋ค์ ์ธ๋ถ ์ ๋ณด ์๋์ ์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์.
๋ณ๊ฒฝ ํ ์ด์ ์ ๋ํ ์์ธํ ์ค๋ช ๊ณผ ํจ๊ป ์ ๋ฐ์ดํธ๋ฅผ ์ ๊ณตํ์ญ์์ค.
https://github.com/freeCodeCamp/freeCodeCamp/tree/feature/python-challenges
ํ์ด์ฌ ์ฑ๋ฆฐ์ง๋ฅผ ์ ์ ํ์๋์?
์ถ๊ฐ ํ ์์๋ ํญ๋ชฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๋ณด์
์ค๊ธ :
๋ง์:
@mstellaluna ์ถ์ฒ
@ Ethan-Arrowood ๋๋ฅผ ์ํด ๊ธฐ๋ณธ์ ์ต์ํ์ ์ง์์ด์ด์ผํฉ๋๋ค (if, else, for, which). ์ค๊ฐ์์๋ "์กฐ๊ฑด๋ถ"ํญ๋ชฉ์ ์ฌ์ฉ์ ์ ๋ ฅ ๋๋ ์ผ ํญ๋ฌธ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์กฐ๊ฑด๋ฌธ์ด ๋ ๊ฒ์ ๋๋ค. ์ธ์ ํ์ํ .. ๊ธฐ๋ณธ์ ๊ฐ๋จํ ์ธ์ ๋ช ๋ น๋ฌธ์ด์ง๋ง ์ค๊ฐ ๋ณ์ ์ธ % s๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ ๋ช ๋ น๋ฌธ์ ๋์ ํ ์ ์์ต๋๋ค. . ๋ฑ
Repl.it์๋ ๋ง์ถคํ ๊ต์ค์ ๋ง๋ค๊ธฐ์ํ ์๋ก์ด ์์ญ์ด ์์ต๋๋ค. ์ง์นจ์ ๋ฐ๋ผ ๊ณผ์ ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
Repl.it ๊ฐ์์ค
https://repl.it/site/classrooms
์ปค๋ฎค๋ํฐ ๊ต์ค ๋ชฉ๋ก
https://repl.it/community
๊ธฐ๋ณธ, ์ค๊ธ ๋ฐ ๊ณ ๊ธ ์๊ณ ๋ฆฌ์ฆ ์น์ ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค (FCC ํ๋ฐํธ ์๋ ์ปค๋ฆฌํ๋ผ์ด JavaScript์ ๋ํด ๊ฐ๋ ๊ฒ๊ณผ ์ ์ฌ).
์ฃผ์ด์ง FCC-Python-Variable-Challenge ์์ ๋ฅผ ์ดํด๋ณธ ๊ฒฐ๊ณผ ๋์ ์ด ์ฝ๊ฐ์ '์ ์ ์กฐ๊ฑด'์ง์์ ๊ธฐ๋ํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ์บ ํ์นด๊ฐ ์ ์ ๋ณ์์ ๋ํด ์๊ฐ ๋ ๊ฒ์ฒ๋ผ.
๋ณ์ ์ฑ๋ฆฐ์ง์ ๋ํ ์ค๋ช / ์ค๋ช ์ ๋ณ์๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ์ง ์์ต๋๋ค. JavaScript์ Declare JavaScript Variables challenge ์ ๋ฌ๋ฆฌ ๋ณ์๊ฐ ๋ฌด์์ธ์ง์ ๋ํ ์ฝ๊ฐ์ ์๊ฐ๊ฐ ๋ค์ด๊ฐ๋๋ค.
์ ๋ ์ด๊ฒ์ด ๋จ์ง ์์ผ ๋ฟ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.ํ์ง๋ง ํ์คํํ๊ธฐ ์ํด ์บ ํ ์ฐธ๊ฐ์๊ฐ Python ์ปค๋ฆฌํ๋ผ์ ๊ตฌ์ถํ๋ ๋์ ์ด๋ฏธ JavaScript ์ปค๋ฆฌํ๋ผ์ ํต๊ณผํ๋ค๊ณ ๊ฐ์ ํ ๊ฒ์ ๋๊น?
@jamesperrin ์, ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์กฐ์ฌํ์ง๋ง FCC ์ฌ์ดํธ์ ์ฌ์ฉ์๋ฅผ ์ ์งํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฏ๋ก ๋ฌธ์ ๊ฐ ํฌํจ๋์ด์ผํฉ๋๋ค. ๋ํ Repl Classrooms์ ๋จ์ ํ ์คํธ ๊ฒฐ๊ณผ์ ์ก์ธ์ค ํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
@ U-ways ๋ค ๊ทธ๊ฑด ๋ด ์ค์์์ต๋๋ค. ๋ชฉํ๋ ์ด๊ฒ์ด ๋ ๋ฆฝ์ ์ธ ์ปค๋ฆฌํ๋ผ์ด๋ฏ๋ก ์ค์ ์ค๋ช ์ด ํจ์ฌ ๋ ์์ธํด์ง ๊ฒ์ ๋๋ค (JS ๋ฒ์ ์ฒ๋ผ). ์ด๊ฒ์ ๊ฐ์กฐ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค :)
@AnikaErceg ์ด๊ฒ๋ค์ ํ๋ฅญํ ์ฐ์ต ์น์ ์ด ๋ ๊ฒ์ ๋๋ค. ํ์คํ ๋ช ์ฌํ ๊ฒ์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
@ Ethan-Arrowood Natural Language Toolkit์ ํฌํจ ํ ์ ์์ต๋๋ค.
์ค๊ธ์ ๋ชฉ๋ก ์ดํด๋ ฅ์ ์ถ๊ฐํ์ต๋๋ค.
๊ณ ๊ธ ๋ฐ์ฝ๋ ์ดํฐ๋ ์ด๋ป์ต๋๊น? ํ์ผ ์ฒ๋ฆฌ ์ค์ ์ปจํ ์คํธ ๊ด๋ฆฌ์๊ฐ ์ฌ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๊น?
@ t3h2mas ๋๋ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ค๊ฐ์ ๋์์ต๋๋ค.
for (in list)
๋ฅผ ์ถ๊ฐํ๋ค๋ฉด for (in string)
๋ ์ถ๊ฐ ํ ์ ์์ต๋๊น?
๋ํ,์ ๋ํ ์๊ฐ in
์ด์์๋ ์ข์ ๊ฒ (๋๋ ๋จ์ง์ ํจ๊ป ์ฌ์ฉํ ์์๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ ๋ ๋ด ์ธ์ ์ฝ๊ฒ ์ฐพ์ ์๊ณ for
๋ฃจํ : ์ค๋ง์ผ :).
@AnikaErceg ์ข์ ์ ์. ๋๋. ๋ด๊ฐ ์ถ๊ฐ ํ ๊ฒ์ ์๋๋๋ค.
@ginoskotheon ๋ฃจํ ์๋์ for (in string)
๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์์์ต๋๊น? ์๋๋ฉด ๋์
ํ ํ์๊ฐ ์์ต๋๊น? : ์ค๋ง์ผ :
์ ๋ Python์ด ๋ชจ๊ตญ์ด ์ธ ๊ฐ๋ฐ์์ ๋๋ค ... ์ ๋ ์ด๋ฏธ ์ง์ญ FCC ์ง๋ถ์์ ๋์์ ๋ฐ์๊ณ ์ฃผ์ต์๋ ์๋ก์ด ์ปค๋ฆฌํ๋ผ์ ์ง์ํ ์ ์๋ค๊ณ ์ ์ํ์ต๋๋ค. ์ด๋ป๊ฒ ๊ธฐ์ฌ๋ฅผ ์์ํด์ผํ ์ง 100 % ํ์คํ์ง๋ ์์ง๋ง ํ์คํํ๊ณ ์ถ์ต๋๋ค. ๋๋ ๋ํ Python ์ปค๋ฎค๋ํฐ์์ ์ง์ญ์ ์ผ๋ก๋ ์ ์ฒด์ ์ผ๋ก ๊ฝค ํ๋ ์ ์ด๊ธฐ ๋๋ฌธ์ ํ์ํ ๋ ๋ง์ ์ง์์ ๊ฐ์ง ๋์ ์ป์ ์ ์์ต๋๋ค.
๋์ ์ฒซ ๋ฒ์งธ ์ ์ :
itertools
, collections
).requests
, scrapy
๋ฑ).%s
์คํ์ผ ๋ฌธ์์ด์ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ ... '๋ ๊ฑฐ์ ํญ๋ชฉ์ ๋ํด ํด๋น ํญ๋ชฉ์ ๋จ๊ฒจ ๋์ญ์์ค. ์น์
์ ๋ํด ์ ๋ง ๊ฑฑ์ ํ ํ์๊ฐ ์์ผ๋ฉฐ ์๋ก์ด ์คํ์ผ f
๋ฐ .format()
์คํ์ผ ๋ฌธ์์ด์ ๊ฐ๋ฅด์น๊ธฐ ๋งํ๋ฉด๋ฉ๋๋ค.range
, list
, 'string'์ ๋ชจ๋ ๋ค๋ฅธ ๊ฒ์ฒ๋ผ ์ธ๊ธํ์ง๋ง Python์์๋ ๋ชจ๋ ๋ฐ๋ณต ๊ฐ๋ฅํ๋ฏ๋ก ๋์ผํ ์ฝ๋๋ก ๋ฐ๋ณต ํ ์ ์์ต๋๋ค. ํค์๋. '๋ฐ๋ณต์ ๋ฐ ์์ฑ๊ธฐ'์น์
์์ ๋ค๋ฃฐ ์ ์์ต๋๋ค.enumerate()
asyncio
๋ํ ๊ณ ๊ธ ์น์
์ด์์ ์ ์์ต๋๋ค.spam
๋ฐ eggs
์์ ์ ํจ๊ป ์ฒ์์ ์ด๋๊ฐ์์ ๊ฐ๋ฅด์นฉ๋๋ค.@cldershem ์ ๋ง ๋ง์ ํ๋ฅญํ ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๊ฒฝํ์ ๋ฐํ์ผ๋ก ํ ์์๋ ์ต์ ์ ๊ธฐ์ฌ๋ ์์ / ๋์ ์ ์ง์ ์์ฑํ๋ ๊ฒ์ ๋๋ค. ์ด๋ค ๊ธ์ ์ฐ๊ณ ์ถ์์ง ์๋ ค์ฃผ์ธ์ ๐
๋ฟก๋ฟก
์ด๋ป๊ฒ ๊ธฐ์ฌ๋ฅผ ์์ํด์ผํ ์ง 100 % ํ์คํ์ง๋ ์์ง๋ง ํ์คํํ๊ณ ์ถ์ต๋๋ค.
https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Pull-Request-Contribute
์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ ๊ฐ๋ฆฌํฌ ์ ์์ต๋๋ค.
@ Ethan-Arrowood๊ฐ Github ๋๊ธ์ ํตํด ์ ์ถํ ์๋ ์์ต๋๊น?
@ t3h2mas ๋ค, ์ ๊ฐ ์ต๊ณ ์ ๋ ์จ / ์ฑ๋ฆฐ์ง์์ ๋งํ๋ฏ์ด์ด ์ค๋ ๋์์ ๋ฐ๋ก ์ฝ๋ฉํธ๋ก ์ ์ถํ ์ ์์ต๋๋ค ๐
@cldershem ๋์์ด ๋ ์์๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ค์ ๋ก ํ ์คํธ ํ ์์๋ ๋ธ๋ผ์ฐ์ ๋ด ์ฑ๋ฆฐ์ง๋ฅผ ๋ง๋๋ ์ข์ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ ๊ฒฝ์ฐ์ ๋๋ค (unittest ์ฌ์ฉ). ์ฐ๋ฆฌ๋ REPL.it์์ codeMirror์์ Skulpt๊น์ง ๋ชจ๋ ์ข ๋ฅ์ ์ต์ ์ ํ์ํ๊ณ ์์ต๋๋ค.
@cldershem ์๋ง "์ด์ค์ผ์ดํ ๋ฌธ์"๋ฅผ ์จ์ผํฉ๋๋ค. 'n', 't'๋ฑ๊ณผ ๊ฐ์ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋ ๊ทธ๋ค์ด ๋ฐ๋ณต ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๋๋ ๊ฐ๋ณ์ ์ธ ํ ์ ํฌ๊ธฐ์ ์์ ์ผ๋ก ์ผ์ ๋๋๊ธฐ ์์ํ์ต๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ๋ชจ๋ ์ ์๊ณผ ๋ชจ๋ ๋์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ฃผ๋ง ๋์ ์ํ ๋ ์จ / ๋์ ์์ ์ ๊ณํ ์ค์ด๋ฉฐ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์ผ์ข ์ ํ ํ๋ฆฟ์ด ๋ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. Free Code Camp ์ฑ๋ฆฐ์ง๊ฐ ์๋ํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ์๋ํ๋ ๋ ์จ / ์ฑ๋ฆฐ์ง๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ฝ๋๋ฅผ ๊ฒ์ํ์ญ์์ค. ๋๋ ๊ทธ๊ฒ์๋ณด๊ณ ์ถ๋ค.
ํธ์ ๋ด์ ๊ฐ๊ธฐ
๋ํ FCC-Python ๊ณผ์ ์ ๊ตํ๊ณผ ๊ณผ์ ์์ฑ์ ๋๊ณ ์ถ์ต๋๋ค.
์ด์ ๋๊ธ์์ Repl.it Classrooms๊ฐ ์ต์ ์ ์ ํ์ด ์๋๋ผ๋ ๊ฒ์ ์ ์ ์์ง๋ง ์ฌ๊ธฐ์์ ๋ ์จ (์ ๋ชฉ, ์ค๋ช
, ํ
์คํธ ๋ฑ) ์์
์ ์์ํ ์ ์์ต๋๋ค. ํ๋ซํผ / ํ๋ ์ ์ํฌ๊ฐ ์ ํด์ง๋ฉด ์ธ์ ๋ ์ง ์ฝ๋๋ฅผ ์์ ํ๊ณ ์ด๋ํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์์ ์ฐพ์ ์์๋ ๋ช ๊ฐ์ง ์ํ ์ฐ์ต ๋ฌธ์ ๋ฅผ ์์ฑํ์ต๋๋ค. ํ์ผ์ ๋ณผ ์ ์์ด์ผํ์ง๋ง ๊ฐ์ ธ ์ค๋ ค๋ฉด ๋ก๊ทธ์ธํด์ผํ๋ฉฐ ๋ด๋ถ๋ฅผ ์ดํด๋ณด๊ณ ์์ ํด์ผํฉ๋๋ค.
์์ ๋กญ๊ฒ ์๊ฒฌ์ ๋งํ๊ณ , ๋นํํ๊ณ , ๊ฐ์๋ฅผ ์ง์ ๋ณ๊ฒฝํ๊ณ , ๋ ์ ์ ํ ํ๋ซํผ / ํ๋ ์ ์ํฌ๊ฐ ๊ฒฐ์ ๋๋ฉด ์๋ ค์ฃผ์ธ์.
๊ทธ ๋์ ์ ๋ ์์์ ์ค๋ช
ํ ์ด๊ธ ์์
์ ์งํํ ์ ์์ต๋๋ค. ์ํ๋ถํฐ ์์ํด์ ๋ค๋ฅธํด์ผ ํ ์ผ๋ก ๋์ด๊ฐ๋๋ค.
์๋ ํ์ธ์, ์ ๋ Repl.it์ ์ฐฝ๋ฆฝ์ ๊ฒธ CEO์ ๋๋ค. FCC๋ ์ฐ๋ฆฌ ๋ง์์ ๊ฐ๊น๊ณ ์์คํ๋ฏ๋ก ์ฌ๊ธฐ์ ์ง์ํ ์ ์๋๋ก ํ ์์๋ ๋ชจ๋ ์ผ์ ํ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ํด Repl.it ๊ฐ์์ค์ ์ฑํํ๋ ๋ฐ์์ด ์ฃผ์ ์ฅ์ ๋ฌผ์ ๋ฌด์์ ๋๊น?
@amasad ์๋
ํ์ธ์! ๋น์ ์ด ์ฌ๊ธฐ์์์ด์ ๊ธฐ๋ป์ ๐
FCC Python ๊ณผ์ ์ Repl.it์ ์ฑํํ๋ ๋ฐ ์ง๋ฉด ํ ์ฃผ์ ์ฅ์ ๋ฌผ์ Repl.it Classroom unittest์ ์ธํฐํ์ด์คํ๋ ๊ฒ์
๋๋ค. ๋จ์ ํ
์คํธ๋ฅผ ํตํด ๋
๋ฆฝ์ ์ธ ํ์ผ์ ์คํํ ์์๋ Repl.it Classroom ๊ตฌ์กฐ๋ฅผ ์ข์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์๊ฐ ์ฑ๋ฆฐ์ง๋ฅผ ์๋ฃํ๋ฉด (๋ชจ๋ ๋จ์ ํ
์คํธ๋ฅผ ํต๊ณผ) ์ ์์๋ ๋ฐฉ๋ฒ์ ์ ์ ์์ต๋๋ค. ๋ฌผ๋ก ์ด ๋์์ Repl.it์ ํฌํจ๋์ด ์์ง๋ง ํ์ฌ FreeCodeCamp์ ๋๋์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉ์๊ฐ ์์
์ ์๋ฃํ๋ฉด ์๋์ผ๋ก ๋ค์ ์ฑ๋ฆฐ์ง๋ก ์ด๋ (๋๋ ๊ทธ๋ ๊ฒํ๋๋ก ํ๋กฌํํธ) ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ํ์ฌ ์ฑ๋ฆฐ์ง (์ฆ, ๋ชจ๋ unittest๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ํต๊ณผ).
์ด๊ฒ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น? FCC๋ JavaScript๋ก ์์ฑ๋์์ผ๋ฏ๋ก ๋ชจ๋ ์ข ๋ฅ์ ์น API ๋๋ npm ๋ชจ๋์ด ์ ์๋ํฉ๋๋ค.
๋ง์ ์์ฒญ์๊ฐ JavaScript ๋ฐฐ๊ฒฝ์์ ์ฌ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค๋ฉด ์ฐจ์ด์ ์ ๋ํ ์ ๋ฌธ์๊ฐ ์ ์ฉ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด
// javascript
var dict = {
a : 1
};
console.log(dict.a)
# python
dict = {
"a" : 1
}
print(dict["a"])
๋ ๋ค๋ฅธ ์๋ for ๋ฃจํ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ ์ด๋ ๋ฐฐ์ด์ ๋ฐ๋ณตํ๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ํญ์ ๋๋ฅผ ๊ดด๋กญํ๋ค.
_Title_ Lambda ์๊ฐ
_ ์ค๋ช
/ ์ค๋ช
/ ๊ฐ์ _
srcs :
1 http://stackoverflow.com/questions/890128/why-are-python-lambdas-useful
2 http://www.secnetix.de/olli/Python/lambda_functions.hawk
3 https://pythonconquerstheuniverse.wordpress.com/2011/08/29/lambda_tutorial/
4 http://stackoverflow.com/questions/16501/what-is-a-lambda-function
5 https://en.wikipedia.org/wiki/Anonymous_function
"์ต๋ช
ํจ์ (ํจ์ ๋ฆฌํฐ๋ด, ๋๋ค ์ถ์ํ)๋ ์๋ณ์์ ๋ฐ์ธ๋ฉ๋์ง ์์ ํจ์ ์ ์์
๋๋ค." [5] "Lambda๋ Lambda ๋ฏธ์ ๋ถ์์ ์ ๋ํ์ต๋๋ค"[4]๋ผ๋ ๋จ์ด. ํ์ด์ฌ์์ ๋๋ค๋ ์ต๋ช
ํจ์๋ฅผ ์ ์ํ๊ธฐ์ํ ํค์๋์
๋๋ค. ์ฌ์ฉ lambda
ํค์๋ ๋์ ์ def
์ด๋ฐ ํค์๋, ๊ธฐ๋ณธ ๋๋ค ์ธ๋ชจ : lambda x: x**2
์ด์ด ๋ณ์์ ํ ๋น ๋ฐ ๊ธฐ๋ฅ์ฒ๋ผ ๋ง์ด ์ฌ์ฌ์ฉ ํ ์ ์์ต๋๋ค :
>>> def f (x): return x**2
>>> print f(8)
64
>>> g = lambda x: x**2
>>> print g(8)
64
_src 2_
๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์ ์์ ์ ๋ฐ๋ผ ์ ์ ๋ฐ ์ฌ์ฉ์ ๋ถํ ํ๋ ๋์ ์ฝ๋๋ฅผ ์งง๊ณ ์ฝ๊ธฐ ์ฝ๊ฒ ์ ์งํ๋ ๊ฒ์ ๋๋ค.
def __init__(self, parent):
"""Constructor"""
frame = tk.Frame(parent)
frame.pack()
btn22 = tk.Button(frame,
text="22", command=self.buttonCmd22)
btn22.pack(side=tk.LEFT)
btn44 = tk.Button(frame,
text="44", command=self.buttonCmd44)
btn44.pack(side=tk.LEFT)
def buttonCmd22(self):
self.printNum(22)
def buttonCmd44(self):
self.printNum(44)
_src 3_
์ด Tkinter GUI ์ธํฐํ์ด์ค์์ ํจ์๋ _command_ ์์ฑ์ ์ ๋ฌ๋์ด์ผํฉ๋๋ค. ํจ์๋ RAD ๋น๋๋ก ์์ฑ๋์์ผ๋ฏ๋ก ์ซ์๋ก ์ด๋ฆ์ด ์ง์ ๋ฉ๋๋ค. ์ด๊ฒ์ ํ๋ฅญํ๊ณ ๊ธฐ๋ฅ์ ์ด์ง๋ง ์ฝ๊ธฐ ์ฝ์ง๋ ์์ต๋๋ค. ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์๊ณ ๊ทธ๋ ๊ฒํ๋ฉด ์ํฉ์ด ๋ ๋ช ํ ํด์ง์ง ๋ง ๋ฒํผ์ด ๋ง์ผ๋ฉด ์ฌ๋ฐ๋ฅธ ๋ช ๋ น์ ์ฐพ๊ธฐ ์ํด ์ฝ๋๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ด ๋ฒ๊ฑฐ๋ก์ธ ์ ์์ผ๋ฉฐ ๊ธฐ๋ณธ ๊ฐ๋ง ๋ฐํํ๋ฏ๋ก ๋ ๋์ ์๋ฃจ์ ์ ๋ค์์ ์ ์ํ๋ ๊ฒ์ ๋๋ค. ์ต๋ช ์ผ๋ก ๋ฐ๋ก ์๋ํฉ๋๋ค.
frame = tk.Frame(parent)
frame.pack()
btn22 = tk.Button(frame,
text="22", command=lambda: self.printNum(22))
btn22.pack(side=tk.LEFT)
btn44 = tk.Button(frame,
text="44", command=lambda: self.printNum(44))
btn44.pack(side=tk.LEFT)
_src 3_
์ด ์ฌ์ฉ์ ๋ ๋ค๋ฅธ ์ฃผ์ ํน์ง์ ์ฝ๋๋ฅผ ๋ ์งง๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ด๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ ํฐ ์๋ฃจ์ ์ ์ผ๋ถ๋ก ๋๊ตฌ๋ฅผ ์ฐพ์ ๋ ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
_ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง _
์์์ ์ค๋ช
ํ ์ฃผ์ ๊ธฐ๋ฅ์ ๊ฐ์ง ๋๋ค ์์ ์์ฑํฉ๋๋ค. ์ฌ์ฉ์ค์ธ ๋ชจ๋ ์ฝ๋๋ฅผ ๋์ผํ ์์น๋ก ์ด๋ํ์ฌ ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ์งง๊ณ ์์ฐ์ค๋ฌ์ด ์ฝ๋๊ฐ ์์ฑ๋ฉ๋๋ค.
_ ์ฌ์ ์ ์ ๋ ์ฝ๋ _
# only edit below this line
def y(z):
return abs(5-z)
print(sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=y))
_src 1_
_ํด๊ฒฐ์ฑ
_
print(sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x)))
@robbiemu ๋๋จํ ์ผ! ๋ด ์ ์ผํ ์ ์์ # only edit this line
์ ๊ฐ์ ์ธ์ ์ค ์์์๋ ๋ฏธ๋ฆฌ ์ ์ ๋ ์ฝ๋ ์น์
์ ์ฃผ์์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. ๋ํ ๋๋ ์ด๊ฒ์ด ํ์ด์ฌ 2 ์ฝ๋๋ผ๊ณ ๋ฏฟ๊ณ ์ฐ๋ฆฌ๋ ํ์ด์ฌ 3์ ๊ฐ๋ฅด ์น ๊ฒ์ด๋ฏ๋ก ์ ์ผํ ๋ณํ๋ ์ธ์ ์ค์ '()'๋ฅผ ๋ํํด์ผํ๋ค๋ ๊ฒ์
๋๋ค.
๋น์ ์ ๊ธฐ์ฌ์ ๊ฐ์ฌํฉ๋๋ค!
์ด๋ , ๊ณ ๋ง์. ๊ณ์ํด์ ์์ ํ๊ฒ ์ต๋๋ค. ๋ฌธ์ ์ ํด๊ฒฐ์ฑ ์ด ๋ณ๊ฒฝ ๋ ์ ์์ผ๋ฏ๋ก ํฉ๋ฆฌ์ ์ธ ํ ์คํธ๋ ์์ต๋๋ค (์ฌ๊ธฐ์์๋ ๊ฒ์ฒ๋ผ ์ ์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ์ง ์์). ์ด๋ฅผ์ํ ์ต์ ์ ์ ๊ทผ ๋ฐฉ์์ ๋ํ ์์ ๊ฐ์๋ฅผ๋ณด๊ณ ์ถ์ต๋๋ค.
๋ฌผ๋ก @robbiemu . REPL.it์์ ๊ณ์ ์์ ์ค์ด๋ฉฐ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ๋ ์ฆ์์ด ์ค๋ ๋๋ฅผ ์ ๋ฐ์ดํธ ํ ์์ ์ ๋๋ค. ์ง๊ธ์ ์ ํ์ด์ ๐
์ด๊ฒ์์ด ์ค๋ ๋์ ์์ ๋ถ๋ถ์ ๋์ด๋ Beginner-Math ์น์ ์ ์ฝ๋ ๊ณผ์ ์ค ํ๋์ ๋๋ค.
_Title_-์ ๋ ๊ฐ
_ ์ค๋ช
/ ์ค๋ช
/ ๊ฐ์ _-
์ ๋ ๊ฐ์ ์ซ์๊ฐ 0์์ ์ผ๋ง๋ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์๋์ง๋ฅผ ๋ํ๋
๋๋ค.
์ซ์๊ฐ ์์์ด๋ฉด abs ()๋์ด๋ฅผ ์์๋ก ๋ณํํฉ๋๋ค.
abs (x)์์ x๋ ์ ์, ๋ถ๋ ์์์ ๋๋ ๋ณต์์ ์ผ ์ ์์ต๋๋ค.
https://docs.python.org/3/library/functions.html#abs
https://docs.python.org/3/library/stdtypes.html#numeric -types-int-float-complex
>>> abs(2)
2
>>> abs(-2)
2
>>> abs(-2.0)
2.0
_ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง _-
๋ณ์ absolute_value๋ -42์ ๊ฐ์ต๋๋ค.
-42์ ์ ๋ ๊ฐ๊ณผ ๊ฐ๋๋ก absolute_value๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
_ ์ฌ์ ์ ์ ๋ ์ฝ๋ _-
absolute_value = -42
_ํด๊ฒฐ์ฑ _ --
absolute_value = abs(-42)
_ ํ ์คํธ _-
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(absolute_value, int)
self.assertEqual(absolute_value, 42)
@bgroveben LGTM. ์ ํ์ด!
@ Ethan-Arrowood ๊ฐ์ฌํฉ๋๋ค! ์์ ๋์ด๋ ๋ค๋ฅธ ๊ธฐ๋ณธ / ์ํ ๋ฌธ์ ์ ๋ํ ์์ ๋ ์์ฑํ์ต๋๋ค. ์ํ์๋ฉด์ด ์ค๋ ๋์ ๊ฐ๊ฐ ๊ฒ์ ํ ์ ์์ต๋๋ค. ๋ํ ์ํ ๊ธฐ์ด ์์ ์ round (), sum (), max () ๋ฐ min ()์ ํฌํจํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@bgroveben ์๋ฃ๋ก ํ์ํ๊ณ ๋ค ๋ถํ๋๋ฆฝ๋๋ค. ๋ณ๋์ ์๊ฒฌ์ผ๋ก ๊ฐ ๋์ ์ ์ํํ์ญ์์ค. ๋ณ๊ฒฝ ์ฌํญ ๋ฑ์ ์ฐธ์กฐํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ๊ฒ์ ๋๋ค. ๊ทํ์ ๊ธฐ์ฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
@ Ethan-Arrowood
@amasad ์๋ ํ์ธ์! ๋น์ ์ด ์ฌ๊ธฐ์์์ด์ ๊ธฐ๋ป์ ๐
์ฌ๊ธฐ์์ด์ ๊ธฐ๋ป์ ๐
FCC Python ๊ณผ์ ์ Repl.it์ ์ฑํํ๋ ๋ฐ ์ง๋ฉด ํ ์ฃผ์ ์ฅ์ ๋ฌผ์ Repl.it Classroom unittest์ ์ธํฐํ์ด์คํ๋ ๊ฒ์ ๋๋ค. ๋จ์ ํ ์คํธ๋ฅผ ํตํด ๋ ๋ฆฝ์ ์ธ ํ์ผ์ ์คํํ ์์๋ Repl.it Classroom ๊ตฌ์กฐ๋ฅผ ์ข์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์๊ฐ ์ฑ๋ฆฐ์ง๋ฅผ ์๋ฃํ๋ฉด (๋ชจ๋ ๋จ์ ํ ์คํธ๋ฅผ ํต๊ณผ) ์ ์์๋ ๋ฐฉ๋ฒ์ ์ ์ ์์ต๋๋ค. ๋ฌผ๋ก ์ด ๋์์ Repl.it์ ํฌํจ๋์ด ์์ง๋ง ํ์ฌ FreeCodeCamp์ ๋๋์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉ์๊ฐ ์์ ์ ์๋ฃํ๋ฉด ์๋์ผ๋ก ๋ค์ ์ฑ๋ฆฐ์ง๋ก ์ด๋ (๋๋ ๊ทธ๋ ๊ฒํ๋๋ก ํ๋กฌํํธ) ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ํ์ฌ ์ฑ๋ฆฐ์ง (์ฆ, ๋ชจ๋ unittest๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ํต๊ณผ).
์ด๊ฒ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น? FCC๋ JavaScript๋ก ์์ฑ๋์์ผ๋ฏ๋ก ๋ชจ๋ ์ข ๋ฅ์ ์น API ๋๋ npm ๋ชจ๋์ด ์ ์๋ํฉ๋๋ค.
๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ์ฐ๋ฆฌ๊ฐ ๊ตฌ์๋ด๋ ๊ฒ์ ๋๋ค. ๊ต์ฌ ์ธก์ "์๋ ์งํ"๋ฑ์ ์ค์ ์ด ์์ต๋๋ค. (์ฐ๋ฆฌ๋ ์น ํํฌ ๋ฑ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋ฐ๋ํ๋ ๊ฒ์ด ์๋๋ผ ๋ณต์ก์ฑ์ ์ค์ด๊ธฐ ์ํด) ์๋ํ ๊น์?
@amasad ๋ "์๋ ์งํ"๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ Repl.it ๊ฐ์์ค์์ FreeCodeCamp๋ฅผ ํ์คํ ์๋ฎฌ๋ ์ด์ ํ ์ ์์ง๋ง FCC์ ๋๋์ ๋งค์ฐ ์ค์ํ FCC ๋์์ ์ฌ์ฉ์ ์งํ ์ํฉ์ ์ถ์ ํ ์๋ ์์ต๋๋ค.
'๊ต์ค'์ ๋ฐ์ดํฐ๋ฅผ GET / POST ํ ์์๋ ๊ธฐ๋ฅ์ ์ด๋ป์ต๋๊น? ์ด๋ ๊ฒํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
repl.getUser('classroomID', 'userID').then( () => {
// do stuff async
}).catch( (error) => {
// handle error
});
๋๋ ๋ ๋์ ๋ฐฉ๋ฒ :
repl.getProgress('classroomID', 'lessonID', 'userID').then( () => { }).catch( (e) => { });
์ด์ ์ด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ ๋ชจ๋ ์ฐ๋ฆฌ ์ชฝ์์ ์คํ๋์ง๋ง REPL ํด๋์ค ๋ฃธ์ iframe์ ํตํด ์๋ฒ ๋ ๋์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ ์ฌ์ฉ์ ์งํ ์ํฉ์ ์ ์ ํ๊ฒ ์ถ์ ํ๋ ค๋ฉด REPL ์ธก์ ๊ฐ๋จํ ์ด๋ฒคํธ ํธ๋ฆฌ๊ฑฐ๊ฐ ํ์ํฉ๋๋ค.
๋ํ ํด๋์ค ๋ฃธ์ iframe์ ํตํด ์๋ฒ ๋๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ์์ ์ ์๋ฃํ๋ฉด REPL ํด๋์ค ๋ฃธ์ด ๋ช ์ค์ JavaScript (์ ์๋ ํฌํธ์ ํตํด ์ ์ ํ ์ ์์)๋ฅผ ์คํํ์ฌ ๊ต์ค์์ FCC์ ํต์ ํฉ๋๊น?
์ฐ๋ฆฌ๋ ํ์ด์ฌ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ์ธ์ด์๋ REPL ๊ต์ค์ ์ฌ์ฉํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. FCC Python ์ปค๋ฆฌํ๋ผ์ด ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๊ณ ๋๋ฉด Java ๋๋ C ++ (๋๋ ๋ฌธ์ ๊ทธ๋๋ก REPL์์ ์ฌ์ฉํ ์์๋ ๋ชจ๋ ์ธ์ด)์ ๊ฐ์ ์ธ์ด๋ฅผ ๊ตฌํํ ๊ฒ์ ๋๋ค.
๋๋ ์ด๊ฒ์ ๋ํ
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ์๊ฒฌ๊ณผ ์ ์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@amasad ์ฌ๊ธฐ์์ ๊ทํ์ ์๊ฐ๊ณผ ์์ด๋์ด๋ฅผ ๊ณต์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. REPL.it์ด ํ๋ซํผ ๋ด์์ ํตํฉํ๊ณ ์ถ์ ๊ฐ์์ค ์ ํ์ ๋ํด ์์ ํ๊ณ ์๋ค๋ ์ฌ์ค์ ์๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค.
์ฐ์ ,์ด ์ปค๋ฆฌํ๋ผ ์ค๋ ๋ ๋์ ๋ณ๋์ ํ ๋ก ์์์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ ํตํฉ ์์ฒด์ ๋ ๊ด๋ จ์ฑ์ ์ ์งํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
@ Ethan-Arrowood ์ด๋์ ํฐ๋ธ์ ๋ํ ๋ฉ์ง ์์ . ๋น์ ์ ๋ ธ๋ ฅ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@amasad @QuincyLarson ๊ณต์์ ์ผ๋ก REPL ๊ฐ์์ค ํ ๋ก ์์ด ์ด์ ์ค๋ ๋๋ก ์ฎ๊ฒผ์ต๋๋ค ( @raisedadead ๊ถ์ฅ ์ฌํญ์ ๋ฐ๋ผ). https://github.com/freeCodeCamp/freeCodeCamp/issues/14736
cldershem ์ ๋๊ธ์ ๋ํ collections
-
๋ช ๋ช ๋ ํํ
1 https://en.wikipedia.org/wiki/Tuple
2 https://docs.python.org/3.6/library/collections.html
3 https://docs.python.org/3.6/library/collections.html#collections.namedtuple
4 https://pythonprogramming.net/reading-csv-files-python-3/
ํํ์ ์ํ์์ ์ผ๋ฐ์ ์ธ ๊ฐ๋
์
๋๋ค. ์ ํ ํ ์์์ ์์ ๋ชฉ๋ก์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. [1] ํ์ด์ฌ์์๋ ํค๊ฐ ๋ฏธ๋ฆฌ ์ ์๋์ด์๋ ์ฌ์ ๊ณผ ๊ธฐ๋ฅ์ ์ผ๋ก ์ ์ฌํฉ๋๋ค. Namedtuples๋ ์ด๋ค ์ฉ๋๋ก๋ ๋น ๋ฅธ ์์ฑ ํธ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฑ์ด ์๋ง์ ์ฒ๋ฆฌํด์ผํ๊ณ ๋ชจ๋ ์๋ง์ ํฌ๊ธฐ์ ๊ฐ๊ฒฉ์ด์๋ ๊ฒฝ์ฐ ๋ ๊ฐ์ ํ๋๊ฐ์๋ ํํ์ด ์ ์ฉํ๋ฉฐ ์ฌ์ {size: _size_, price: _price_}
์ ๋น์ทํฉ๋๋ค. . ์ด๋ฌํ ํ๋๊ฐ์๋ ํํ์ ์ป์ผ๋ ค๋ฉด ํ๋๋ฅผ collections.namedtuple
ํฉํ ๋ฆฌ ํจ์์ ์ ๋ฌํฉ๋๋ค. [2]
collections.namedtuple(Socks, ['size', 'price'])
ํธ์์, ํนํ ์ผ๋ฐ ํ
์คํธ ์์ค์ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌ ํ ๋ ํ๋ ์ด๋ฆ์ ๋ฐฐ์ด์ด๊ฑฐ๋ ์ผํ๋ก ๊ตฌ๋ถ ๋ ๊ฐ ๋ฐ / ๋๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ ๋ ๊ฐ์ด์๋ ๋จ์ผ ๋ฌธ์์ด ์ผ ์ ์์ต๋๋ค. [3]
EmployeeRecord = namedtuple('EmployeeRecord', 'name, age, title, department, paygrade')
๋ฐ์ค๋ก ์์ํ๋ ์ด๋ฆ์ ์ ์ธํ๊ณ ๋ชจ๋ ์ ํจํ Python ์๋ณ์๋ฅผ _fieldname_์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ํจํ ์๋ณ์๋ ๋ฌธ์, ์ซ์ ๋ฐ ๋ฐ์ค๋ก ๊ตฌ์ฑ๋์ง๋ง ์ซ์ ๋๋ ๋ฐ์ค๋ก ์์ํ์ง ์์ผ๋ฉฐ class, for, return, global, pass ๋๋ raise์ ๊ฐ์ ํค์๋๊ฐ ๋ ์ ์์ต๋๋ค. [3]
์์ฑ๋๋ฉด ์ฌ์ ๊ณผ ์ ์ฌํ ํญ๋ชฉ์ผ๋ก ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Point = namedtuple('Point', ['x', 'y'])
p = Point(x=11, y=22)
p[0] + p[1] # 33
x, y = p # (11, 22)
p.x + p.y # 33
p # Point(x=11, y=22)
_from_ [3]
namedtuples์ ์ข์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ CSV ๋ด๋ณด๋ด๊ธฐ์ ๊ฐ์ด ๋ฐ์ดํฐ ์์ง์ ์ฉ์ดํ๊ฒํ๋ ๊ฒ์ ๋๋ค. ๋ค์ ์ฝ๋์์ ํํ์ ์ฌ์ฉํ์ฌ์ด CSV ๊ฐ์ ธ ์ค๊ธฐ๋ฅผ ์์ ํฉ๋๋ค.
import csv
import collections
# only change code below this line!
recordData = ['fieldNames'] # find the fieldnames in the code below
# only change code above this line!
EmployeeRecord = collections.namedtuple('EmployeeRecord', recordData)
with open('employee-records.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')
for row in readCSV:
# onlt change code below this line!
name = row[0]
age = row[1]
title = row[2]
department = row[3]
paygrade = row[4]
processEmployee([name, age, title, department, paygrade]) # fails because processEmployee accepts an EmployeeRecord Tuple!
# only change code above this line!
_์์ ํ์ ๋จ _ [4]
_note_ : ์๋ ์ค์ ํ์ผ์ ์ฌ์ฉํ์ง๋ง with ... readCSV
์ค์ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ ์ ์์ต๋๋ค.
readCSV = csv.reader(['Alan,42,Manager,Sales, N1', 'Beth,38,Regional Director,Operations,CO','Robin,23,Associate,Sales,C2']
import csv
import collections
# only change code below this line!
recordData = ['name', 'age', 'title', 'department', 'paygrade']
# only change code above this line!
EmployeeRecord = collections.namedtuple('EmployeeRecord', recordData)
with open('employee-records.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')
for row in readCSV:
# onlt change code below this line!
employee = EmployeeRecord(*row)
processEmployee(employee)
# only change code above this line!
๊ฐ์ 2 :
namedtuples._make
1 https://docs.python.org/3.6/library/collections.html#collections.namedtuple
__make_๋ผ๋ NamedTuples ๋ฉ์๋๋ ๋ฐ๋ณต์ ํจ์ ๋ด์์ ์ธ์คํด์ค ์์ฑ์ ์ฉ์ดํ๊ฒํ๋ฏ๋ก ์ด์ ๋จ์์ ๋ฌธ์ ๋ฅผ ๋์ฑ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.
for emp in map(EmployeeRecord._make, allRows):
print(emp.name, emp.title)
์ด์ ๊ฐ์๋ฅผ ๋ค์ ๊ฒํ ํ๊ณ ์ฝ๋๋ฅผ ์์ ํ๊ณ ์์ต๋๋ค. ๊ฑฐ์ ๋ค ์์ง๋ง ์์ ์ด ๋๋์ง ์์์ต๋๋ค. ํธ์๋ฅผ ์ํด ์ผ๋ถ ๊ธฐ๋ก์ ๊ธฐ๋ก์ ์ฒ๋ฆฌํด์ผํ๋ ์์น์ ์ธ์๋ฉ๋๋ค. EmployeeRecord๋ฅผ ์์ฑํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋์ ๋ค๋ฅธ ๊ณณ์์ ํจ์์ ์ ๋ฌํด์ผํฉ๋๋ค.
employee = EmployeeRecord(*row)
processEmployee(employee)
import csv
from collections import namedtuple
EmployeeRecord = namedtuple('EmployeeRecord', 'name, age, title, department, paygrade')
for emp in map(EmployeeRecord._make, csv.reader(open("employees.csv", "rb"))):
# only change code below this line!
print(emp.name, emp.title)
EmployeeRecord = namedtuple('EmployeeRecord', 'name, age, title, department, paygrade')
import csv
for emp in map(EmployeeRecord._make, csv.reader(open("employees.csv", "rb"))):
# only change code below this line!
processEmployee(emp)
๋ค์์ ์ค๋ช ํ๋ ๊ฐ๋จํ ๊ตํ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
n = NamedTuple(**Dictionary)
._fields
๋ฅผ ์ฌ์ฉํ์ฌ ๋์ฒด ์์ ๋ง๋ค๊ธฐ : TwoD = namedtuple('TwoD', 'x y')
=> ThreeD = namedtuple('ThreeD', TWo._fields + ('z',))
๋๋จธ์ง ์ด๊ธ ์ํ ๊ณผ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
__Title : __ Python ์ถ๊ฐ
__ ์ค๋ช / ์ค๋ช / ๊ฐ์ : __
Python์์ ์ ์ (int)๋ ์ธ ๊ฐ์ง ๊ณ ์ ํ ์ซ์ ์ ํ ์ค ํ๋์
๋๋ค.
์ด ์ฐ์ต์์๋ ๋ํ๊ธฐ (+) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ ์ ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
>>> 2 + 2
4
__ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง : __
ํฉ๊ณ๊ฐ 20์ด๋๋๋ก 0์ ๋ณ๊ฒฝํฉ๋๋ค.
__ ์ฌ์ ์ ์ ๋ ์ฝ๋ : __
total = 10 + 0
__ํด๊ฒฐ์ฑ :__
total = 10 + 10
__ ํ ์คํธ : __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(total, int)
self.assertEqual(total, 20)
__ํ์ :__
divmod () ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ชซ๊ณผ ๋๋จธ์ง๋ฅผ ๊ณ์ฐํฉ๋๋ค.
__ ์ค๋ช / ์ค๋ช / ๊ฐ์ : __
Divmod๋ ๋ ๊ฐ์ (๋ณต์์๊ฐ ์๋) ์ซ์๋ฅผ ์ธ์๋ก ์ทจํ๊ณ ์ ์ ๋๋๊ธฐ๋ฅผ ์ฌ์ฉํ ๋ ๋ชซ๊ณผ ๋๋จธ์ง๋ก ๊ตฌ์ฑ๋ ์ซ์ ์์ ๋ฐํํฉ๋๋ค.
์ ์์ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ๋ (a // b, a % b)์ ๊ฐ์ต๋๋ค.
>>> divmod(1, 1)
(1, 0)
>>> divmod(3, 2)
(1, 1)
__ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง : __
์ด ์ฐ์ต์์๋ ๋ณ์ a์ b๊ฐ ์ ์๋ฉ๋๋ค.
๋ณ์ a ๋ฐ b์ ๋ํด divmod ํจ์๋ฅผ ํธ์ถํ๋ result๋ผ๋ ๋ณ์๋ฅผ ์ ์ํฉ๋๋ค (์์๋๋ก).
__ ์ฌ์ ์ ์ ๋ ์ฝ๋ : __
a = 11
b = 3
__ํด๊ฒฐ์ฑ :__
a = 11
b = 3
result = divmod(a, b)
__ ํ ์คํธ : __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(result, tuple)
self.assertEqual(result, (3, 2))
__Title : __ Python ์ง์
__ ์ค๋ช / ์ค๋ช / ๊ฐ์ : __
ํ์ด์ฌ์ ์ด์ค ๋ณํ (**) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ง์๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
๋ณํ ์์ ์ซ์๋ ๋ฐ์ด๊ณ ๋ค์ ์ซ์๋ ์ง์์
๋๋ค.
ํ์ด์ฌ์ ๋ํ ๋ด์ฅ ํจ์ pow (x, y)๋ฅผ ์ฌ์ฉํ ์์๊ฒํ์ฌ x์ y์ ๊ฑฐ๋ญ ์ ๊ณฑ์์ค๋๋ค.
>>> 2 ** 2
4
>>> pow(2, 4)
16
__ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง : __
์ฝ์์๋ ๋ ๊ฐ์ ๋ณ์ a์ b๊ฐ ์ ๊ณต๋ฉ๋๋ค.
์ด ๋จ์์ ์ค๋ช
๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ a์ b์ ๊ฑฐ๋ญ ์ ๊ณฑ๊ณผ ๊ฐ์ power๋ผ๋ ๋ณ์๋ฅผ ์ ์ํฉ๋๋ค.
__ ์ฌ์ ์ ์ ๋ ์ฝ๋ : __
a = 3
b = 4
__ํด๊ฒฐ์ฑ :__
a = 3
b = 4
power = pow(a, b)
# or #
power = a ** b
__ ํ ์คํธ : __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(power, int)
self.assertEqual(power, 81)
__Title : __ Python Float Division
__ ์ค๋ช / ์ค๋ช / ๊ฐ์ : __
Python 3์ ์ ์ (๋ฐ๋ฅ) ๋๋์
๊ณผ ๋ถ๋ (์ฐธ) ๋๋์
์ ๊ตฌ๋ถํฉ๋๋ค.
ํ์ด์ฌ์ float ๋๋๊ธฐ์ ๋จ์ผ ์ฌ๋์ (/) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
float ๋๋๊ธฐ๋ฅผ ์ฌ์ฉํ ๋ ๋ชซ (๊ฒฐ๊ณผ)์ด 1 ๋๋ 2์ ๊ฐ์ ์ ์์ธ ๊ฒฝ์ฐ์๋ ์ ์ ๋์ ๋ถ๋ ์์์ ์ซ์๊ฐ ๋ฐํ๋ฉ๋๋ค.
>>> 1 / 1
1.0
>>> 3 / 2
1.5
__ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง : __
๊ธฐ์กด ์ฝ๋๋ฅผ ์คํํ ๋ quotient๋ผ๋ ๋ณ์์ ๊ฐ์ 1.0์ด๋ฉ๋๋ค.
๋ชซ์ ๊ฐ์ด 2.5๊ฐ๋๋๋ก ๋ ๋ฒ์งธ ์ซ์ (๋ถ๋ชจ)๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
__ ์ฌ์ ์ ์ ๋ ์ฝ๋ : __
quotient = 5 / 5
__ํด๊ฒฐ์ฑ :__
quotient = 5 / 2
__ ํ ์คํธ : __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(quotient, float)
self.assertEqual(quotient, 2.5)
__Title : __ Python ์ ์ ๋๋๊ธฐ
__ ์ค๋ช / ์ค๋ช / ๊ฐ์ : __
Python 3์ ์ ์ (๋ฐ๋ฅ) ๋๋์
๊ณผ ๋ถ๋ (์ฐธ) ๋๋์
์ ๊ตฌ๋ถํฉ๋๋ค.
ํ์ด์ฌ์ ์ ์ ๋๋๊ธฐ์ ์ด์ค ์ฌ๋์ (//) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ ์ ๋๋์
์ ์ฌ์ฉํ ๋ Python์ ๋ชซ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์๋ก ๋ด๋ฆผํฉ๋๋ค.
>>> 1 // 1
1
>>> 3 // 2
1
__ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง : __
๊ธฐ์กด ์ฝ๋๋ฅผ ์คํํ ๋ quotient๋ผ๋ ๋ณ์์ ๊ฐ์ 1์ด๋ฉ๋๋ค.
๋ชซ์ ๊ฐ์ด 2๊ฐ๋๋๋ก ๋ ๋ฒ์งธ ์ซ์ (๋ถ๋ชจ)๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
__ ์ฌ์ ์ ์ ๋ ์ฝ๋ : __
quotient = 5 // 5
__ํด๊ฒฐ์ฑ :__
quotient = 5 // 2
__ ํ ์คํธ : __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(quotient, int)
self.assertEqual(quotient, 2)
__Title : __ Python ์ต๋ ๊ฐ
__ ์ค๋ช / ์ค๋ช / ๊ฐ์ : __
max () ํจ์๋ ๋ฐ๋ณต ๊ฐ๋ฅํ ํญ๋ชฉ (๋ชฉ๋ก ๋๋ ๋ฌธ์์ด ๋ฑ)์์ ๊ฐ์ฅ ํฐ ํญ๋ชฉ ๋๋ ๋ ๊ฐ ์ด์์ ์ธ์ ์ค ๊ฐ์ฅ ํฐ ํญ๋ชฉ์ ๋ฐํํฉ๋๋ค.
iterable์ ์ธ์๋ก ์ ๊ณตํ๋ ๋์ iterable์ ๋ชจ๋ ์์๊ฐ ๋์ผํ ์ ํ์ธ์ง ํ์ธํด์ผํฉ๋๋ค.
iterable์ด ๋น์ด ์๊ณ ๊ธฐ๋ณธ๊ฐ์ด ์ ๊ณต๋์ง ์์ผ๋ฉด ValueError๊ฐ ๋ฐ์ํฉ๋๋ค.
>>> max(1,2,3,4)
4
>>> list1 = ['a', 'e', 'i', 'o', 'u']
>>> max(list1)
'u'
>>> string1 = "largest"
>>> max(string1)
't'
__ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง : __
์์ ์ฝ๋์๋ ์ด๋ฆ์ด ์ง์ ๋ ์ซ์ ๋ชฉ๋ก์ด ์์ต๋๋ค.
๊ฐ์ฅ ๋์ ๋ณ์๋ ์ซ์๋ก ์ด๊ธฐํ๋ฉ๋๋ค.
๊ฐ์ฅ ๋์ ๊ฐ์ ์ซ์์์ ๊ฐ์ฅ ํฐ ์ซ์์ ๋์ผํ๊ฒ ๋ง๋์ญ์์ค.
__ ์ฌ์ ์ ์ ๋ ์ฝ๋ : __
numbers = [8, 2, 4, 3, 6, 5, 9, 1]
highest = numbers
__ํด๊ฒฐ์ฑ :__
numbers = [8, 2, 4, 3, 6, 5, 9, 1]
highest = max(numbers)
__ ํ ์คํธ : __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(highest, int)
self.assertEqual(highest, 9)
__Title : __ Python ์ต์๊ฐ
__ ์ค๋ช / ์ค๋ช / ๊ฐ์ : __
min () ํจ์๋ ์ดํฐ ๋ฌ๋ธ์์ ๊ฐ์ฅ ์์ ํญ๋ชฉ (์ : ๋ชฉ๋ก ๋๋ ๋ฌธ์์ด) ๋๋ ๋ ๊ฐ ์ด์์ ์ธ์ ์ค ๊ฐ์ฅ ์์ ํญ๋ชฉ์ ๋ฐํํฉ๋๋ค.
iterable์ ์ธ์๋ก ์ ๊ณตํ๋ ๋์ iterable์ ๋ชจ๋ ์์๊ฐ ๋์ผํ ์ ํ์ธ์ง ํ์ธํด์ผํฉ๋๋ค.
iterable์ด ๋น์ด ์๊ณ ๊ธฐ๋ณธ๊ฐ์ด ์ ๊ณต๋์ง ์์ผ๋ฉด ValueError๊ฐ ๋ฐ์ํฉ๋๋ค.
>>> min(1,2,3,4)
1
>>> list1 = ['a', 'e', 'i', 'o', 'u']
>>> min(list1)
'a'
>>> string1 = "smallest"
>>> min(string1)
'a'
__ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง : __
์์ ์ฝ๋์๋ ๋ฌธ์๋ผ๋ ์ด๋ฆ์ ๋ฌธ์ ๋ชฉ๋ก์ด ์์ต๋๋ค.
์ต์ ๋ณ์๋ ๋ฌธ์๋ก ์ด๊ธฐํ๋ฉ๋๋ค.
๊ฐ์ฅ ๋ฎ์ ๊ฐ์ ๋ฌธ์์ '๊ฐ์ฅ ์์'(์ํ๋ฒณ ์์๋ก ์ฒซ ๋ฒ์งธ) ๋ฌธ์์ ๋์ผํ๊ฒ ๋ง๋์ญ์์ค.
__ ์ฌ์ ์ ์ ๋ ์ฝ๋ : __
letters = ['m','o','n','t','y','p','y','t','h','o','n']
lowest = letters
__ํด๊ฒฐ์ฑ :__
letters = ['m','o','n','t','y','p','y','t','h','o','n']
lowest = min(letters)
__ ํ ์คํธ : __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(lowest, str)
self.assertEqual(lowest, 'h')
__Title : __ ํ์ด์ฌ ๊ณฑ์
__ ์ค๋ช / ์ค๋ช / ๊ฐ์ : __
ํ์ด์ฌ์ ๊ณฑ์ ์ ๋ณํ (*) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
>>> 3 * 3
9
__ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง : __
์ ํ์ด 80์ด๋๋๋ก 0์ ๋ณ๊ฒฝํฉ๋๋ค.
__ ์ฌ์ ์ ์ ๋ ์ฝ๋ : __
product = 8 * 0
__ํด๊ฒฐ์ฑ :__
product = 8 * 10
__ ํ ์คํธ : __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(product, int)
self.assertEqual(product, 80)
__Title : __ Python ๋๋จธ์ง
__ ์ค๋ช / ์ค๋ช / ๊ฐ์ : __
% (๋ชจ๋๋ก) ์ฐ์ฐ์๋ ์ฒซ ๋ฒ์งธ ์ธ์๋ฅผ ๋ ๋ฒ์งธ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ฐ์ถํฉ๋๋ค.
๋ชจ๋๋ก ์ฐ์ฐ์๋ ํญ์ ๋ ๋ฒ์งธ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ถํธ (๋๋ 0)๋ฅผ ๊ฐ์ง ๊ฒฐ๊ณผ๋ฅผ ์ฐ์ถํฉ๋๋ค.
>>> 3 % 2
1
>>> 3 % 2.0
1.0
์ซ์๊ฐ ํ์์ธ์ง ์ง์์ธ์ง ํ์ธํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ํด๋น ์ซ์๋ฅผ 2๋ก ๋๋ ๋ ๋๋จธ์ง๋ฅผ ํ์ธํ๋ ๊ฒ์
๋๋ค.
ํ์์ ๊ฒฝ์ฐ ๋๋จธ์ง๋ 1์
๋๋ค.
์ง์์ ๊ฒฝ์ฐ ๋๋จธ์ง๋ 0์
๋๋ค.
>>> 3 % 2
1
>>> 4 % 2
0
__ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง : __
๋๋จธ์ง ๋ณ์๋ฅผ ๋ชจ๋๋ก (%) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ 11์ 3์ผ๋ก ๋๋ ๋๋จธ์ง์ ๋์ผํ๊ฒ ์ค์ ํฉ๋๋ค.
__ ์ฌ์ ์ ์ ๋ ์ฝ๋ : __
remainder = "Solution goes here"
__ํด๊ฒฐ์ฑ :__
remainder = 11 % 3
__ ํ ์คํธ : __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(remainder, int)
self.assertEqual(remainder, 2)
__Title : __ Python ๋ฐ์ฌ๋ฆผ
__ ์ค๋ช / ์ค๋ช / ๊ฐ์ : __
round (number, n-digits) ํจ์๋ ์์์ ๋ค์ n ์๋ฆฌ ์ ๋ฐ๋๋ก ๋ฐ์ฌ๋ฆผ ๋ ์ฃผ์ด์ง ์ซ์๋ฅผ ๋ฐํํฉ๋๋ค.
n-digits๊ฐ ์๋ต๋๊ฑฐ๋ None์ด๋ฉด ์
๋ ฅ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์๋ฅผ ๋ฐํํฉ๋๋ค.
๋ฐํ ๊ฐ์ ํ๋์ ์ธ์๋ก ํธ์ถํ๋ฉด ์ ์์ด๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฃผ์ด์ง ์ซ์์ ๋์ผํ ์ ํ์
๋๋ค.
>>> round(5)
5
>>> round(5.5)
6
>>> round(5.555, 1)
5.6
__ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง : __
long_pi ๋ณ์์ ์์์ ์ดํ ์๋ฆฟ์๊ฐ ๋๋ฌด ๋ง์ต๋๋ค.
๋์ ์ฌ์ฉํ ์์๋ shorter_pi๋ผ๋ ๋ณ์๋ฅผ ๋ง๋ญ๋๋ค.
round () ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์์์ ๋ค์ ์ฒ์ 2 ์๋ฆฌ ๋ง ํ์ํ๊ณ ํด๋น ๊ฐ์ shorter_pi์ ํ ๋นํฉ๋๋ค.
__ ์ฌ์ ์ ์ ๋ ์ฝ๋ : __
longer_pi = 3.14159265358979323846
__ํด๊ฒฐ์ฑ :__
longer_pi = 3.14159265358979323846
shorter_pi = round(longer_pi, 2)
__ ํ ์คํธ : __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(shorter_pi, float)
self.assertEqual(shorter_pi, 3.14)
__Title : __ ํ์ด์ฌ ์ ๊ณฑ๊ทผ
__ ์ค๋ช / ์ค๋ช / ๊ฐ์ : __
math.sqrt () ํจ์๋ ํญ์ ์ฌ์ฉํ ์ ์์ง๋ง ๊ฐ์ ธ์์ผํ๋ Python ์ํ ๋ชจ๋์ ์ผ๋ถ์
๋๋ค.
Math.sqrt (x)๋ x์ ์ ๊ณฑ๊ทผ์ ๋ถ๋ ์์์ ์ซ์๋ก ๋ฐํํฉ๋๋ค.
>>> import math
>>> math.sqrt(4)
2.0
>>> math.sqrt(2)
1.4142135623730951
__ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง : __
square_root ๋ณ์๋ ์ซ์ 81๋ก ์ ์๋ฉ๋๋ค.
81์ ์ ๊ณฑ๊ทผ๊ณผ ๊ฐ๋๋ก square_root๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
์ํ ๋ชจ๋์ ๊ฐ์ ธ ์์ต๋๋ค.
__ ์ฌ์ ์ ์ ๋ ์ฝ๋ : __
import math
square_root = 81
__ํด๊ฒฐ์ฑ :___
import math
square_root = math.sqrt(81)
__ ํ ์คํธ : __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(square_root, float)
self.assertEqual(square_root, 9.0)
__Title : __ ํ์ด์ฌ ๋นผ๊ธฐ
__ ์ค๋ช / ์ค๋ช / ๊ฐ์ : __
Python์์ ์ ์ (int)๋ ์ธ ๊ฐ์ง ๊ณ ์ ํ ์ซ์ ์ ํ ์ค ํ๋์
๋๋ค.
์ด ์ฐ์ต์์๋ ๋นผ๊ธฐ (-) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ ์๋ฅผ ๋บ๋๋ค.
>>> 2 - 1
1
__ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง : __
ํฉ๊ณ๊ฐ 10์ด๋๋๋ก 0์ ๋ณ๊ฒฝํฉ๋๋ค.
__ ์ฌ์ ์ ์ ๋ ์ฝ๋ : __
total = 20 - 0
__ํด๊ฒฐ์ฑ :__
total = 20 - 10
__ ํ ์คํธ : __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(total, int)
self.assertEqual(total, 10)
__Title : __ Python ํฉ๊ณ
__ ์ค๋ช / ์ค๋ช / ๊ฐ์ : __
sum (iterable) ํจ์๋ Python iterable (๋ชฉ๋ก, ํํ ๋ฑ)์ ๋ชจ๋ ํญ๋ชฉ์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ถ๊ฐํ๊ณ ํฉ๊ณ๋ฅผ ๋ฐํํฉ๋๋ค.
์ ํ์ ์ธ ๋ ๋ฒ์งธ ์ธ์ ์ธ start๊ฐ ์์ผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ 0์ด๊ณ ํฉ๊ณ์ ์ถ๊ฐ๋ฉ๋๋ค.
์ดํฐ ๋ฌ๋ธ์ ํญ๋ชฉ์ ์ผ๋ฐ์ ์ผ๋ก ์ซ์์ด๋ฉฐ ์์ ๊ฐ์ ๋ฌธ์์ด์ด ๋ ์ ์์ต๋๋ค.
>>> numbers = [1, 2, 3, 4, 5]
>>> sum(numbers)
15
>>> sum(numbers, 1)
16
>>> sum(numbers, 10)
25
__ ์ฝ๋ ํ๋กฌํํธ / ์ฑ๋ฆฐ์ง : __
๋ ๊ฐ์ ์ซ์ ๋ชฉ๋ก์ด ์์ต๋๋ค.
๋ ๋ชฉ๋ก์์ ๋ชจ๋ ํญ๋ชฉ์ ํฉ๊ณ๋ฅผ ์ฐพ์ ๊ทธ ๊ฐ์ total์ด๋ผ๋ ๋ณ์์ ํ ๋นํฉ๋๋ค.
__ ์ฌ์ ์ ์ ๋ ์ฝ๋ : __
list1 = [1, 3, 5, 7, 9]
list2 = [2, 4, 6, 8, 10]
__ํด๊ฒฐ์ฑ :__
list1 = [1, 3, 5, 7, 9]
list2 = [2, 4, 6, 8, 10]
total = sum(list1, sum(list2))
__ ํ ์คํธ : __
class UnitTests(unittest.TestCase):
def test_main(self):
self.assertIsInstance(total, int)
self.assertEqual(total, 55)
๊ธฐ๋ณธ / ์ํ ์น์
์ ๋์ด๋ ๋ชจ๋ ๋ ์จ์ ๋ค๋ฃฌ๋ค ๊ณ ์๊ฐํฉ๋๋ค.
๋ ์ถ๊ฐํ๋ ค๋ฉด ์๋ ค์ฃผ์ธ์.
๋ํ ํธ์ง, ๋ณ๊ฒฝ, ์ ์ ๋ฑ์ ์์ ๋กญ๊ฒ ํ ์ ์์ต๋๋ค.
๋ฐฉ๊ธ .py ๋ฐ .md ํ์ผ์ ๊ฒ์ ํ ๋ชจ๋ ์์
์ด ์์ต๋๋ค.
https://github.com/bgroveben/FCC_Python.
๋ํ ๋ค์ ์์น์ REPL ํด๋์ค ๋ฃธ์ ์ค์ ํ์ต๋๋ค.
https://repl.it/community/classrooms/18388.
์ฐธ๊ณ -Python ์ฝ๋ฉ ๋ฌธ์ ์ ๋ํ ํ ๋ก ์์ด ์๋ก์ด ์ ์ฅ์ ( https://github.com/freeCodeCamp/python-coding-challenges/issues)๋ก ์ด๋ํ๊ณ ์์ต๋๋ค.
์ฐธ์กฐ๋ฅผ ์ํด ์ฌ๊ธฐ์ ๊ฒ์ :
Max์ Min์ด ๋ ๋ค ์ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์, ์ ๋ Repl.it์ ์ฐฝ๋ฆฝ์ ๊ฒธ CEO์ ๋๋ค. FCC๋ ์ฐ๋ฆฌ ๋ง์์ ๊ฐ๊น๊ณ ์์คํ๋ฏ๋ก ์ฌ๊ธฐ์ ์ง์ํ ์ ์๋๋ก ํ ์์๋ ๋ชจ๋ ์ผ์ ํ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ํด Repl.it ๊ฐ์์ค์ ์ฑํํ๋ ๋ฐ์์ด ์ฃผ์ ์ฅ์ ๋ฌผ์ ๋ฌด์์ ๋๊น?