F37.101 ์ปดํจํ ๊ธฐ์ด: ์ฒ์ ๋ง๋๋ ์ปดํจํ (First Adventures in Computing)
Chapter 3. ์กฐ๊ฑด๋ฌธ#
ํ์ต๋ชฉํ์ ๊ธฐ๋ํจ๊ณผ
ํ์ต๋ชฉํ
ํ๋ก๊ทธ๋๋ฐ์ ์ ์ด ๊ตฌ์กฐ๋ฅผ ์์๋ณด์.
์กฐ๊ฑด๋ฌธ์ ๊ฐ๋ ์ ์ดํดํ์.
๋ค์ฌ์ฐ๊ธฐ์ ์ค์์ฑ์ ์ดํดํ์.
๋น๊ต์ฐ์ฐ์, ๋ฉค๋ฒ์ฐ์ฐ์, ๋ ผ๋ฆฌ์ฐ์ฐ์๋ฅผ ์์๋ณด์.
๋ชจ๋์ ๋ถ๋ฌ์๋ณด๊ณ ๋์์ ๋ํด ์์๋ณด์.
๊ธฐ๋ํจ๊ณผ
์ปดํจํ ๋๋ฐ์ด์ค๋ค์ด ์ฃผ์ด์ง ์กฐ๊ฑด์ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋ฅผ ํ๋์ง ์ดํดํ ์ ์๋ค.
ํ๋ก๊ทธ๋๋ฐ ์ ์ด๊ตฌ์กฐ#
ํ๋ก๊ทธ๋๋ฐ ์ ์ด๊ตฌ์กฐ
ํ๋ก๊ทธ๋๋ฐ์ ์ ์ด๊ตฌ์กฐ๋ก๋ ์ฝ๋์ ์์๋๋ก ์คํํ๋ ์์ฐจ๊ตฌ์กฐ, ์กฐ๊ฑด์ ๋ฐ๋ผ ์คํ์ ๋ถ๊ธฐํ๋ ์กฐ๊ฑด๊ตฌ์กฐ, ์ผ์ ๋ถ๋ถ์ ๋ฐ๋ณตํ์ฌ ์คํํ๋ ๋ฐ๋ณต๊ตฌ์กฐ๊ฐ ์๋ค.
ํ๋ก๊ทธ๋จ์ ํ๋ฆ(flow)๋ฅผ ํ์ ํ๊ธฐ ์ํด ์ฐจ๋ก๋๋ก ๋ณด๊ธฐ ์ฝ๊ฒ ๊ทธ๋ฆฐ ๊ทธ๋ฆผ์ ํ๋ก์ฐ์ฐจํธ๋ผ๊ณ ํ๋ค.

์์ ์ฐ๋ฆฌ๋ ํ๋ก๊ทธ๋จ์ ์ฝ๋๋ฅผ ์์๋๋ก ์คํ์ํค๋ ์์ฐจ๊ตฌ์กฐ์ ๋ํด์ ์ตํ์๋ค. ์ด๋ฒ์๋ ํน์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์คํ์ ๋ถ๊ธฐ์ํค๋ ์กฐ๊ฑด๊ตฌ์กฐ์ ๋ํด์ ์์๋ณด์.
Sample Source Code #1#
# This is a guess the number game.
myName = input('Hello! What is your name? ')
number = 5
print('Well, ' + myName + ', I am thinking of a number between 1 and 20.')
guess = int(input('Take a guess.'))
if guess != number:
print('Your guess is wrong.')
if guess == number:
print('Good job, ' + myName + '! You guessed my number!')
---------------------------------------------------------------------------
StdinNotImplementedError Traceback (most recent call last)
<ipython-input-1-07715c7e3c4b> in <module>
1 # This is a guess the number game.
----> 2 myName = input('Hello! What is your name? ')
3 number = 5
4 print('Well, ' + myName + ', I am thinking of a number between 1 and 20.')
5
D:\users\anaconda3\lib\site-packages\ipykernel\kernelbase.py in raw_input(self, prompt)
853 if not self._allow_stdin:
854 raise StdinNotImplementedError(
--> 855 "raw_input was called, but this frontend does not support input requests."
856 )
857 return self._input_request(str(prompt),
StdinNotImplementedError: raw_input was called, but this frontend does not support input requests.
์ํ ์ฝ๋๋ฅผ ์คํ์์ผ๋ณด์. ์ด ์ฝ๋์์๋ ๋ณ์ guess์ ๋ณ์ number๋ฅผ ๋น๊ตํ๊ณ ์๋ค.
๋จผ์ ์กฐ๊ฑด์ ๋น๊ตํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋น๊ต์ฐ์ฐ์, ๋ฉค๋ฒ์ฐ์ฐ์, ๋ ผ๋ฆฌ์ฐ์ฐ์๋ถํฐ ์์๋ณด์.
๋น๊ต์ฐ์ฐ์#
๋น๊ต์ฐ์ฐ์๋ ์ ์, ๋ฌธ์์ด, ๋ณ์ ๋ฑ์ ๊ฐ์ ๋น๊ตํ ๋ ์ฌ์ฉํ๋ค. ๋น๊ต์ฐ์ฐ์์ ๊ฒฐ๊ณผ๋ ํญ์ bool ํ์ ์ธ True ๋๋ False๋ก ๋์จ๋ค.
๋น๊ต์ฐ์ฐ์์ ์ข ๋ฅ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ฐ์ฐ ๊ธฐํธ |
์๋ฏธ |
์์ |
์คํ ๊ฒฐ๊ณผ |
|---|---|---|---|
|
ํฌ๋ค |
|
|
|
์๋ค |
|
|
|
ํฌ๊ฑฐ๋ ๊ฐ๋ค |
|
|
|
์๊ฑฐ๋ ๊ฐ๋ค |
|
|
|
๊ฐ๋ค |
|
|
|
๊ฐ์ง ์๋ค |
|
|
a=10
b=7
print(a>b)
print(a<b)
print(a>=b)
print(a<=b)
print(a==b)
print(a!=b)
์ฃผ์
๋น๊ต์ฐ์ฐ์์์ ๊ฐ์์ง๋ฅผ ๋น๊ตํ ๋์๋
==์ ๊ฐ์ด ๋ฑํธ๋ถํธ(equal sign)๋ฅผ ๋ ๊ฐ ์ด๋ค๋ ๊ฒ์ ์ฃผ์ํ์.>=,<=์ ๊ฐ์ ๋ถํธ๋ ํญ์>๋<๊ฐ=๋ณด๋ค ์์ ๋์์ผ ํ๋ฉฐ ๋์ด์ฐ๋ฉด ์๋๋ค.
๋ฌธ์ ๋น๊ต๋ ๊ฐ๋ฅํ๋ค. ๋ฌธ์๋น๊ต๋ ๊ฐ ๋ฌธ์์ ๋ถ์ฌ๋์ด ์๋ unicode๊ฐ์ ๋น๊ตํ๋ค. ์ํ๋ฒณ ๋๋ฌธ์์ ์๋ฌธ์์ unicode๋ ๋ค๋ฅด๋ค. ์๋ฅผ ๋ค์ด ๋๋ฌธ์ โHโ์ ์๋ฌธ์ โhโ์ ์ฝ๋๊ฐ์ด ๋ค๋ฅด๋ค.
๋ง์ฝ ์ฒซ ๊ธ์์ ์ฝ๋ ๊ฐ์ด ๊ฐ๋ค๋ฉด ์ฐจ๋ก๋๋ก ๋ค์ ๋ฌธ์๋ฅผ ๋น๊ตํ๋ค.
์ ๋์ฝ๋
์ ๋์ฝ๋๋ ์ ์ธ๊ณ์ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ปดํจํฐ์์ ์ผ๊ด๋๊ฒ ํํํ๊ณ ๋ค๋ฃฐ ์ ์๋๋ก ์ค๊ณ๋ ํ์ค์ด๋ค. ํ์ฌ ์ ์ธ๊ณ์ ๋ชจ๋ ๋ฌธ์์ ์ด๋ชจํฐ์ฝ๊น์ง ํฌํจํ์ฌ 1,114,112๊ฐ์ ์ฝ๋๊ฐ์ด ์ง์ ๋์๊ณ , ์ด ๊ฐ์ด๋ฐ ํ,์ค,์ผ ํ์๊ฐ 97,058๊ฐ๋ฅผ ์ฐจ์งํ๋ค.(23๋ 2์ ๊ธฐ์ค)๐ฒ
print('HELLO'=='hello')
print('HELLO'=='Hello')
c='hello'
d='HELLO'
print(c == d)
ํ๊ธ๋ ๋น๊ต๊ฐ ๊ฐ๋ฅํ๋ค.
ํ๊ธ์ ์์, ๋ชจ์ ๊ฐ๊ฐ unicode๊ฐ ๋ถ์ฌ๋์ด ์๋ค.
์ ๋์ฝ๋ ๊ฐ ํ์ธ์ ord() ํจ์๋ฅผ ํตํด ๊ฐ๋ฅํ๋ค.
๋ฐ๋๋ก ์ ๋์ฝ๋ ๊ฐ์ผ๋ก ๋ฌธ์๋ฅผ ํ์ธํ๋ ํจ์๋ก๋ chr() ํจ์๊ฐ ์๋ค.
print('์์ธ๋' > '๊ณ ๋ ค๋')
print('ใ
' > 'ใฑ')
print('์', ord('์'))
print('๊ณ ', ord('๊ณ '))
print('ใฑ', ord('ใฑ'))
print('a', ord('a'))
print('A', ord('A'))
print('1', ord('1'))
print('9', ord('9'))
์ซ์ ๋ชจ์์ ๋ฌธ์ ๋น๊ต ์ ์ฃผ์
๊ฐ๋ ์ ๋ ฅ๋ฐ์ ๊ฐ์ ํ ๋ณํ์ ํ์ง ์์ ์ซ์ ๋ชจ์์ ๋ฌธ์๋ฅผ ์ซ์์ธ์ค ์๊ณ ๋น๊ตํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๊ณ ์ซ์ ๋ชจ์์ ๋ฌธ์ ์ ๋์ฝ๋ ๊ฐ์ ๋น๊ตํ๋ ์ฃผ์ํ์.
number1 = input('Input number1: ')
number2 = input('Input number2: ')
print(number1 > number2)
์ซ์์ ๋ฌธ์๋ ๋น์ฐํ ๊ฐ์ง ์๋ค.
print(5 == '5')
print(5 != '5')
์ซ์์ ๋ฌธ์์ ๋์(>, <, >=, <=) ๋น๊ต๋ ์๋ฌ๋ฅผ ๋ฐ์์ํจ๋ค.
print(123>'123')
๋ฉค๋ฒ์ฐ์ฐ์#
๋ฉค๋ฒ์ฐ์ฐ์๋ ์ด๋ค ๊ฐ์ด ํฌํจ๋์ด ์๋์ง ์๋์ง๋ฅผ ๊ฒ์ฌํ๋ ์ฐ์ฐ์์ด๋ค. ๋ฉค๋ฒ์ฐ์ฐ์์ ๊ฒฐ๊ณผ๋ ํญ์ True ๋๋ False๋ก ๋์จ๋ค.
์ฐ์ฐ ๊ธฐํธ |
์๋ฏธ |
์์ |
์คํ ๊ฒฐ๊ณผ |
|---|---|---|---|
|
ํฌํจ๋์ด ์๋ค |
|
|
|
ํฌํจ๋์ด ์์ง ์๋ค |
|
|
print('y' in 'yellow')
print('a' not in 'animal')
๋ฌธ์ . ๋จ์ด๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ๋ ฅ๋ฐ์ ๋จ์ด์ ์ํ๋ฒณ โaโ๊ฐ ์์ผ๋ฉด True๊ฐ ์์ผ๋ฉด False๊ฐ ์ถ๋ ฅ๋๋๋ก ํ์์ค.
๋ฌธ์์ด ์ธ๋ฑ์ฑ(Indexing)#
์ธ๋ฑ์ค๋ ๋ฌถ์๋ฐ์ดํฐ์์์ ๊ฐ ์์ดํ ์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฒํธ์ด๋ค. ๋ฌธ์์ด์์ ์์ดํ ์ ํ ๊ธ์์ด๋ค. ์ฆ, ํ ๊ธ์์ ์ ๊ทผํ๊ธฐ ์ํด ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ค.
์์ ์ธ๋ฑ์ค(positive index)#
positive index๋ ๊ฐ์ฅ ์ผ์ชฝ ์์ดํ ์์ 0๋ถํฐ ์์ํ์ฌ ์ค๋ฅธ์ชฝ์ผ๋ก 1์ฉ ์ฆ๊ฐํ๋ค.
a='hello'
print(a[0])
print(a[1])
print(a[4])
์์ ์ธ๋ฑ์ค(negative index)#
negative index๋ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ๋ ์์ดํ ์์ -1๋ถํฐ ์์ํ์ฌ ์ผ์ชฝ์ผ๋ก 1์ฉ ๊ฐ์ํ๋ค.
a='hello'
print(a[-1])
print(a[-2])
print(a[-5])
๋ฌธ์์ด ์ฌ๋ผ์ด์ฑ(Slicing)#
์ฌ๋ผ์ด์ฑ์ด๋ ์ํ๋ ๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ํด ์ถ์ถํ๋ ๊ฒ์ด๋ค. ํ์์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ฌธ์์ด[start:end:step]
start: ์ฌ๋ผ์ด์ฑ ์์ ์ธ๋ฑ์ค
end: ์ฌ๋ผ์ด์ฑ ๋ ์ธ๋ฑ์ค(๋ ์ธ๋ฑ์ค๋ ๋ฏธํฌํจ)
step: ์ด๋๊ฐ๊ฒฉ, ์์์ด๋ฉด ์ค๋ฅธ์ชฝ์ผ๋ก step๋งํผ ์ด๋ํ๋ค. ์์์ด๋ฉด ์ผ์ชฝ์ผ๋ก step๋งํผ ์ด๋ํ๋ค.
start, end, step ๋ชจ๋ ์๋ต ๊ฐ๋ฅํ๋ค.
a = "Life is too short, You need Python"
print(a[3:7])
print(a[ :7])
print(a[3: ])
print(a[3: :2])
print(a[-3: :-2])
print(a[::-1])
๋ฌธ์ . ๋จ์ด๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ๋ ฅ๋ฐ์ ๋จ์ด์ ์ํ๋ฒณ ์ฒซ๊ธ์๊ฐ โaโ์ด๋ฉด True, ์๋๋ฉด False๊ฐ ์ถ๋ ฅ๋๋๋ก ํ์์ค.
๋ ผ๋ฆฌ ์ฐ์ฐ์#
ํ๊ฐ ๋๋ ๋๊ฐ ์ด์์ ์กฐ๊ฑด์ ๋น๊ตํ์ฌ ๋ ผ๋ฆฌ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ค. ๋ ผ๋ฆฌ์ฐ์ฐ์์ ๊ฒฐ๊ณผ๋ ํญ์ True ๋๋ False๋ก ๋์จ๋ค.(์กฐ๊ฑด์ด ๋ฐ์ดํฐํ์ ์์ฒด์ธ ๊ฒฝ์ฐ ์ ์ธ, ex, โhelloโ or 1, 2 and 3, [1,2,3] or 2)
์ฐ์ฐ ๊ธฐํธ |
์๋ฏธ |
์์ |
์คํ ๊ฒฐ๊ณผ |
|---|---|---|---|
|
๋ ผ๋ฆฌ๊ณฑ(๊ทธ๋ฆฌ๊ณ ) |
|
|
|
๋ ผ๋ฆฌํฉ(๋๋) |
|
|
|
๋ ผ๋ฆฌ๋ถ์ (์๋๋ค) |
|
|
์๋์ ์ฝ๋๋ ๋ ผ๋ฆฌ์ฐ์ฐ์์ ์ฌ์ฉ์ ๋ณด์ฌ์ฃผ๋ ์์ด๋ค.
a=10
b=7
c=5
print(a>b and b>c)
print(a>b or b<c)
print(not a>b)
and ์ฐ์ฐ์๋ ๋ชจ๋ ์กฐ๊ฑด์ด True์ผ๋๋ง ๊ทธ ๊ฒฐ๊ณผ๊ฐ True์ด๋ค.
print(True and True)
print(True and False)
print(False and True)
print(False and False)
or ์ฐ์ฐ์๋ ํ๋์ ์กฐ๊ฑด์ด๋ผ๋ True์ด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ True์ด๋ค.
print(True or True)
print(True or False)
print(False or True)
print(False or False)
not ์ฐ์ฐ์๋ ์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ง๋๋ค.
print(not True)
print(not False)
๋ ผ๋ฆฌ์ฐ์ฐ์๋ not > and > or๋ก ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค. ์ฐ์ ์์๊ฐ ๋์ผํ ๊ฒฝ์ฐ์๋ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ ์์๋ก ์คํํ๋ค.
print(not False or True and False or True )
๋ฌธ์ . ์ฑ๋ณ๊ณผ ์ด๋ฆ์ ์ ๋ ฅ๋ฐ์ ์ฑ๋ณ์ด โ๋จ์โ์ด๋ฉด์ ์ฑ์ด โ๊นโ์ด๋ฉด True๋ฅผ ์ถ๋ ฅํ์์ค.
์ฌ๋ฌ๊ฐ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์ ํํ์ ์ฃผ์
โ๊ตญ์ด(kor), ์ํ(mat), ์ปด๊ธฐ(com) ์ ์๊ฐ 80์ ์ด์์ด๊ฑฐ๋โ๋ฅผ ์ฝ๋๋ก ํํํ ๋
if kor or mat or com >= 80: ์ด์ ๊ฐ์ด ํํํ๋ฉด ์๋๋ค. 0์ ์ ์ธํ ๋ชจ๋ ๊ฐ์ True์ด๋ฏ๋ก ์ด if๋ฌธ์ kor, mat๊ฐ 1์ด์์ด๋ฉด ํญ์ True๊ฐ ๋๋ค.
์๋ชป๋ ํํ์
kor = 70
mat = 60
com = 50
print((kor or mat or com) >= 80)
์ฌ๋ฐ๋ฅธ ํํ์
kor = 70
mat = 60
com = 50
print((kor>=80) or (mat>=80) or (com >= 80))
kor = 70
mat = 60
com = 50
print((kor>=80) or (mat>=80) or (com >= 80))
Short Circuit Effect
Short circuit ํจ๊ณผ๋ ์งง๊ฒ ์งง๊ฒ ์ ๊ธฐ๊ฐ ํ๋ฅธ๋ค๋ ๋ป์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์์๋ ์ด๋ค ๊ฒฝ์ฐ์๋ ์ ์์ ์ผ๋ก ์คํํ๊ณ ์ด๋ค ๊ฒฝ์ฐ์๋ ์๋ฌ๊ฐ ๋์ค๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๋ค.
ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ๊ฐ ํฌ๊ณ ๋ณต์กํ ๊ฒฝ์ฐ์๋ ์ด๋ฌํ ์์ธ์ ํ์
ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค๊ธฐ๋ ํ๋ค.
1/0์ 0์ผ๋ก ๋๋๋ ์ฐ์ฐ์ผ๋ก division by zero error๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด ๋ง๋ค.
1/0
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-13-9e1622b385b6> in <module>
----> 1 1/0
ZeroDivisionError: division by zero
๊ทธ๋ฐ๋ฐ ์๋์ ์ฝ๋๋ 1/0 ์ฐ์ฐ์ด ํฌํจ๋์ด ์์์๋ ๋ถ๊ตฌํ๊ณ ์๋ฌ๋ฅผ ๋ฐ์ํ์ง ์๋๋ค. ๊ทธ ์ด์ ๋ a>b ์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ True์ด๊ณ ๊ทธ ๋ค์ ์ฐ์ฐ์๊ฐ or์ด๋ฏ๋ก ๊ทธ ๋ค์์ ์กฐ๊ฑด์ ๊ฒฐ๊ณผ์ ์๊ด์์ด ์ ์ฒด ๊ฒฐ๊ณผ๋ True์ด๊ธฐ ๋๋ฌธ์ด๋ค.
a=10
b=7
print (a>b or 1/0)
์๋ ์ฝ๋ ๋ํ ๋ง์ฐฌ๊ฐ์ง๋ค. ๋ณ์ muyaho๊ฐ ์์์ ์ ํ ์ ์๋ ์ ์ด ์์์๋ ๋ถ๊ตฌํ๊ณ i%2 != 0 ์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ False์ด๊ณ ๊ทธ ๋ค์ ์ฐ์ฐ์๊ฐ and์ด๋ฏ๋ก ๊ทธ ๋ค์์ ์กฐ๊ฑด๊ณผ ์๊ด์์ด ์ ์ฒด ๊ฒฐ๊ณผ๋ False์ด๋ฉด์ ์๋ฌ๋ฅผ ๋ฐ์์ํค์ง ์๋๋ค.
๊ทธ๋ฌ๋ ๋ณ์ i์ ๊ฐ์ด 11์ด๋ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
i=10
print (i%2 != 0 and muyaho == 0)
if statements#
if๋ฌธ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์คํ์ ๋ถ๊ธฐ์ํค๋ ๋ฌธ์ผ๋ก if๋ฌธ, if ~ else๋ฌธ, if ~ elif ~ else๋ฌธ์ด ์๋ค.
์กฐ๊ฑด์์ ๋์๋ ๋ฐ๋์ ์ฝ๋ก (:)์ ๋ถ์ฌ์ผ ํ๋ค.
์กฐ๊ฑด์์ ๋ณ์๊ฐ ๋ค์ด๊ฐ๋ค๋ฉด ๋ฐ๋์ ๋ฏธ๋ฆฌ ์ ์๋์ด ์์ด์ผ ํ๋ค.
์กฐ๊ฑด์ ์ํด์ ์คํ๋๋ ๋ฌธ์ฅ๋ค์ ๋ฐ๋์ ๋ค์ฌ์ฐ๊ธฐ(Indentation)์ ํด์ผ ํ๋ค.
if ๋ฌธ#
๋น๊ตํด์ผ ํ ์กฐ๊ฑด์์ด ํ๋๋ผ๋ฉด if๋ฌธ์ผ๋ก ์ถฉ๋ถํ๋ค.
score = 75
if score >= 75:
print("success!")
๐๋ฌธ์ . ์ ๋ ฅ๋ฐ์ ์ ์๊ฐ 80์ ์ด์์ด๋ฉด โPass!โ๋ฅผ ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
test case-1
์ ์: 90
Pass!
test case-2
์ ์: 70
if ~ else ๋ฌธ#
๋น๊ตํด์ผ ํ ์กฐ๊ฑด์์ด True์ผ๋์ False์ผ๋๋ฅผ ๋ถ๊ธฐํ์ฌ ์คํํด์ผ ํ๋ค๋ฉด if ~ else๋ฌธ์ด ์ ํฉํ๋ค.
์๋ ์ฝ๋์์ print(โHappyโ)๋ ์กฐ๊ฑด์ ์ํด ์คํ๋๋ ๋ฌธ์ฅ์ด ์๋๋ค. ๋ฐ๋ผ์ ๋ค์ฌ์ฐ๊ธฐ๊ฐ ๋์ด ์์ง ์๋ค.
state = 'Hit'
if state == 'Hit':
print("Homerun!")
else:
print("Strike!")
print("Happy")
์ค์ฒฉ if๋ฌธ์ด๋ if๋ฌธ ์์ ๋ ๋ค๋ฅธ if๋ฌธ์ด ์๋ ๊ฒ์ ๋งํ๋ค. ์ค์ฒฉ if๋ฟ๋ง ์๋๋ผ ์ค์ฒฉ if ~ else๋ฌธ๋ ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฌ๋ ์ค์ฒฉ if, ์ค์ฒฉ if ~ else๋ฌธ์ ์ฝ๋๊ฐ ๊ธธ์ด์ง๊ฑฐ๋ ์ค์ฒฉ ๋ ๋ฒจ์ ๋ฐ๋ผ ๋ค์ฌ์ฐ๊ธฐ๊ฐ ๋จ๊ณ๋ณ๋ก ๊น์ด์ง๋ฏ๋ก ์ฝ๋๊ฐ ์์นซ ๋ณต์กํด์ง ์ ์๋ค.
a=10
b=7
c=3
query=5
if query>a:
print("๊ฐ์ฅ ํฐ ์ ์ด๋ค.")
else:
if query>b:
print("๋ ๋ฒ์งธ๋ก ํฐ ์ ์ด๋ค.")
else:
if query>c:
print("์ธ ๋ฒ์งธ๋ก ํฐ ์ ์ด๋ค.")
else:
print("๊ฐ์ฅ ์์ ์ ์ด๋ค.")
if ~ elif ~ else ๋ฌธ(๋ค์ค if๋ฌธ)#
์ค์ฒฉ if ~ else๋ฌธ ๋์ ์ ๋ค์ค if๋ฌธ(if ~ elif ~ elif ~ else)์ผ๋ก ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ ํ ์ ์๋ค.
๋ค์ค if๋ฌธ์ ์กฐ๊ฑด์์ด True์ธ ์กฐ๊ฑด์ ๋ง๋ ๋ ๊น์ง ๋น๊ตํ๋ฉด์ ๋ด๋ ค์จ๋ค.
์กฐ๊ฑด์์ด True์ธ ์กฐ๊ฑด์ ๋ง๋๋ฉด ๊ทธ ์กฐ๊ฑด์ ํด๋นํ๋ ์คํ๋ฌธ์ฅ์ ์คํํ ํ, ๋ค์ elif๋ฌธ์ ์กฐ๊ฑด์ ๋น๊ตํ์ง ์๊ณ ๋ค์ค if๋ฌธ ์ ์ฒด๋ฅผ ๋ฒ์ด๋๋ค.
else: ์์ด elif ์กฐ๊ฑด:์ผ๋ก ๋๋ ์๋ ์์ผ๋ฉฐ, ํ์ด์ฌ์์๋ ์ ํ ๋ฌธ์ ๋์ง ์๋๋ค.
score = 75
if score >= 90:
print('A์
๋๋ค.' )
elif score >= 80 : # score<=89 and score >=80 ์ด๋ ๊ฒ ์์ฑํ ํ์๊ฐ ์์
print('B์
๋๋ค.' )
elif score >= 70 :
print('C์
๋๋ค.' )
elif score >= 60 :
print('D์
๋๋ค.' )
else:
print('F์
๋๋ค.' )
๐๋ฌธ์ . ๋ณ์ number์ ๊ฐ์ ์, ํฐ ์, ์์ ์๋ฅผ ์ถ๋ ฅํ๊ณ ์ถ์๋ค. ๋ฌด์์ด ๋ฌธ์ ์ธ์ง ์ฐพ์๋ณด์์ค.
number = 85
if number == 75:
print('๊ฐ๋ค.')
if number > 75:
print('ํฌ๋ค.')
else:
print('์๋ค.')
Indentation#
๋์ผ ์กฐ๊ฑดํ์ ์คํํด์ผ ํ ๋ฌธ์ฅ๋ค์ ๋ธ๋ญ์ผ๋ก ๋ง๋ค์ด ์ค์ผ ํ๋ฉฐ, ๋์ผ ๋ธ๋ญ์ ๋ค์ฌ์ฐ๊ธฐ์ ๊น์ด๊ฐ ๊ฐ๋ค. ์ฃผ๋ก ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ ๋ฑ์ ์์ฑํ๊ฑฐ๋ ํจ์, ํด๋์ค ๋ฑ์ ์ ์ํ ๋ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ค.
ํค๋ณด๋์ space bar๋ฅผ ๋๋ฌ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ ์๋ ์์ง๋ง tab ํค๋ฅผ ๋๋ฌ ๋ค์ฌ์ฐ๋ฉด ํธํ๋ค. shift + tab์ ๋ฐ๋๋ก ๋ด์ด์ฐ๊ธฐ๊ฐ ๋๋ค.
์ฝ๋ฉ์
์ค์ >ํธ์ง๊ธฐ>๋ค์ฌ์ฐ๊ธฐ ๊ฐ์ด๋ ํ์๋ฅผ ์ ํํด ๋์ผ๋ฉด ๋ค์ฌ์ฐ๊ธฐ ๊ตฌ๋ถ์ด ์ฝ๋ค.๋ํ
์ค์ >ํธ์ง๊ธฐ>ํธ์ง๊ธฐ์์ ์ฝ๋ํด๋ฉ์ ์ฌ์ฉ์ค์ ํฉ๋๋ค.๋ฅผ ์ ํํด ๋์ผ๋ฉด ๋ค์ฌ์ฐ๊ธฐ ๋จ์๋ก ์ฝ๋๋ฅผ ์ ์ด ๋์ ์ ์๋ค.

๋์ผ ๋ธ๋ญ์์ ๋ค์ฌ์ฐ๊ธฐ๊ฐ ๋ฌ๋ผ Indentation error๊ฐ ๋ฐ์ํ๋ค.
score = 90
if score >= 90 :
print('ํฉ๊ฒฉ์
๋๋ค.')
print('A ๋ฑ๊ธ์
๋๋ค.')
print('์ฅํ๊ธ๋ ๋ฐ์ ์ ์์ต๋๋ค.')
print('ํจ๋ํ์๋๊ตฐ์!')
์๋ ์ฝ๋๋ ๋ค์ฌ์ฐ๊ธฐ๊ฐ ๋ค๋ฅด์ง๋ง ์๋ก ๋ค๋ฅธ ๋ธ๋ญ์ด๋ฏ๋ก ์ ์ ์คํ๋๋ค. ๊ทธ๋ ์ง๋ง ๋ธ๋ญ์ ๋ ๋ฒจ์ ๋ฐ๋ผ ๊ฐ๊ธ์ ๋ค์ฌ์ฐ๊ธฐ ๊น์ด๋ฅผ ๋์ผํ๊ฒ ์ฃผ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
score = 80
if score >= 90 :
print('ํฉ๊ฒฉ์
๋๋ค.')
print('A ๋ฑ๊ธ์
๋๋ค.')
print('์ฅํ๊ธ๋ ๋ฐ์ ์ ์์ต๋๋ค.')
print('ํจ๋ํ์๋๊ตฐ์!')
else :
print('๋ค์ํ๊ธฐ๋ฅผ ๋
ธ๋ ค๋ณด์ธ์.')
๋ธ๋ญ์ ๋ค์ด๊ฐ์ผ ํ ์ฝ๋๊ฐ ํ์ค๋ ์๋ ๊ฒฝ์ฐ์๋ Indentation error๊ฐ ๋ฐ์ํ๋ค.
๋ธ๋ญ์์ ๋ค์ด๊ฐ์ผ ํ ์ฝ๋๋ฅผ ์์ง ์๊ฐํ์ง ๋ชปํ๋ค๋ฉด ํค์๋ pass๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
if score >= 70:
else:
print('๋ค์ํ๊ธฐ๋ฅผ ๋
ธ๋ ค๋ณด์ธ์.')
print("end")
Sample Source Code #2#
๐ ๋ค์ ์ฝ๋๋ฅผ ์๋์ ์ธ๊ฐ์ง ์กฐ๊ฑด์ผ๋ก ์คํ๋๋๋ก ๋น๊ตํํธ๋ฅผ ์์ ํด๋ณด์ธ์.
(์กฐ๊ฑด1) guess๊ฐ number๋ณด๋ค ํฌ๋ฉด โYour guess is high.โ
(์กฐ๊ฑด2) guess๊ฐ number๋ณด๋ค ์์ผ๋ฉด โYour guess is low.โ
(์กฐ๊ฑด3) guess์ number๊ฐ ๊ฐ์ผ๋ฉด ์ง๊ธ ๋ฉ์์ง ๊ทธ๋๋ก
# This is a guess the number game.
myName = input('Hello! What is your name?')
number = 5
print( 'Well, ' + myName + ', I am thinking of a number between 1 and 20.')
guess = int(input('Take a guess.'))
if guess != number:
print( 'Your guess is wrong.')
if guess == number:
print( 'Good job, ' + myName + '! You guessed my number!')
๋ชจ๋๊ณผ ๋ชจ๋ ๋ถ๋ฌ์ค๊ธฐ#
๋ชจ๋์ ์๋ก ๊ด๋ จ์๋ ํจ์๋ค์ ๋ชจ์ ๋์ ์งํฉ์ด๋ค. ํ์ด์ฌ์๋ random, math, sys, โฆ ๋ฑ ์ ๋ง์ ๋ชจ๋๋ค์ด ์ ์๋์ด ์๊ณ ํ์ํ ๋ ๋ถ๋ฌ์ ์ธ ์ ์๋ค. ๋ชจ๋์ ํ๋ฒ๋ง ๋ถ๋ฌ์ค๋ฉด ํ์ฌ ์์ค์ฝ๋ ํ์ผ์ ๋ซ์ ๋๊น์ง ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ฌ๋ฌ ๋ฒ ๋ถ๋ฌ์ฌ ํ์๊ฐ ์๋ค. ๋ฐ๋ผ์ ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋์ ๋ถ๋ฌ์ค๋ ์ฝ๋๋ ์์ค์ฝ๋์ ๋งจ ์์ ๋ชจ์ ๋๋๋ค.
๋ชจ๋์ ๋ถ๋ฌ์ค๋ ํค์๋๋ import์ด๋ค. ๋ชจ๋์ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์๋ค.
์ฒซ ๋ฒ์งธ๋
import ๋ชจ๋๋ช์ผ๋ก ๋ถ๋ฌ์จ๋ค. ์๋ฅผ ๋ค์ด, random ๋ชจ๋์ ๋ถ๋ฌ์ค๋ ค๋ฉด
import random
์ด๋ผ๊ณ ์ฐ๋ฉด ๋๋ค. random ๋ชจ๋์์ ๋ค์ํ ํจ์๋ค, ์๋ฅผ ๋ค์ด randint(), seed(), sample(), โฆ, ๋ฑ ์ด ์๋๋ฐ ๋ชจ๋๋ช
.ํจ์๋ช
()์ ํ์์ผ๋ก ๋ถ๋ฌ์ ์ฌ์ฉํ๋ค.
import random
print(random.randint(1,100))
print(random.sample(range(100), 2))
๋ ๋ฒ์งธ๋
from ๋ชจ๋๋ช import *๋ก ๋ถ๋ฌ์จ๋ค. ์๋ฅผ ๋ค์ด,
from random import *
์ด๋ผ๊ณ ์ฐ๋ฉด ๋๋ค. ์ฌ๊ธฐ์์ *์ ๋ชจ๋ ๊ฒ์ด๋ผ๋ ์๋ฏธ๋ฅผ ๋ด๊ณ ์๋๋ฐ ์ฆ, random ๋ชจ๋์์ ๋ชจ๋ ๊ฒ์ ๋ถ๋ฌ์จ๋ค๋ ๋ป์ด๋ค. ๋ง์ฝ, random ๋ชจ๋์์ randint() ํจ์๋ง ๋ถ๋ฌ์ค๋ ค๋ฉด
from random import randint
์ ๊ฐ์ด ์ด๋ค. โfrom ๋ชจ๋๋ช importโ๋ฐฉ์์ผ๋ก ๋ถ๋ฌ์จ ๊ฒฝ์ฐ์๋ ๋ชจ๋๋ช .ํจ์๋ช ()์ด ์๋๋ผ ํจ์๋ช ()๋ง ์ด๋ค.
from random import *
print(randint(1,100))
print(sample(range(100), 2))
์ฌ๊ธฐ์์๋ random ๋ชจ๋์์ ๋ค์ด์๋ ํจ์์ค์ randint() ํจ์๋ง ์์๋ณด์.
randint() ํจ์๋ ํจ์๋ช ์์๋ ์ถ์ธกํ ์ ์๋ฏ์ด ์ ์์ธ ๋์๋ฅผ ๋ฐ์์ํค๋ ํจ์์ด๋ค.
randint() ๊ดํธ์์ ์์ ์์ ๋ ์๋ฅผ ๋ช ์ํด์ฃผ๋ฉด ๊ทธ ๋ฒ์ ์์์ ๋์๋ฅผ ๋ฐ์์ํจ๋ค.
randint(์์ ์, ๋ ์)๋์๋ ์์ ์๋ณด๋ค ๊ฐ๊ฑฐ๋ ์ปค์ผ ํ๋ค.
๋ฒ์์๋ ๋์๊น์ง ํฌํจํ๋ค.
import random
random.randint(1, 100)
์๋์ ์ฝ๋๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ๊ทธ ์ด์ ๋ฅผ ์๊ฐํด๋ณด์.
num = input( )
random.randint(1, num)
Sample Source Code #3#
๐ number์ ๊ฐ์ ๋๋ค์๋ก ์์ ํ์ธ์.
TODO-1: number = 5 ๋์ ์ 1๋ถํฐ 20 ์ฌ์ด์ ๋๋ค ์๋ฅผ number์ ์ ์ฅํ์ธ์.
TODO-2: Sample Source Code #2์์ ์ฌ๋ฌ๋ถ์ด ์์ฑํ ๋น๊ตํํธ ์ฝ๋๋ฅผ #TODO-2 ์๋์ ๋ฃ์ด์ฃผ์ธ์.
# This is a guess the number game.
myName = input('Hello! What is your name?')
number = 5
print( 'Well, ' + myName + ', I am thinking of a number between 1 and 20.')
guess = int(input('Take a guess.'))
# TODO-2
๋ง๋ฌด๋ฆฌ#
ํ๋ก๊ทธ๋๋ฐ ์ ์ด ๊ตฌ์กฐ๋ ์์ฐจ, ์ ํ, ๋ฐ๋ณต ๊ตฌ์กฐ๊ฐ ์๋ค.
์ ํ๊ตฌ์กฐ๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ์คํ๋ฌธ์ฅ์ ๋ค๋ฅด๊ฒ ๋ถ๊ธฐ ์์ผ ์ค๋ค.
์กฐ๊ฑด๋ฌธ์ ๋น๊ตํ ๋ ์ฌ์ฉํ๋ ๋ฌธ์ผ๋ก if๋ฌธ, if ~ else๋ฌธ, if ~ elif ~ else๋ฌธ์ด ์๋ค.
๋น๊ต์ฐ์ฐ์๋ if๋ฌธ, while๋ฌธ ๋ฑ์์ ์, ๋ฌธ์์ด, ๋ณ์ ๋ฑ์ ๊ฐ์ ๋น๊ตํ ๋ ์ฌ์ฉํ๋ค.
๋น๊ต์ฐ์ฐ์์๋ >, < , >=, <=, ==, != ์ฐ์ฐ์๊ฐ ์๋ค.
๋ ผ๋ฆฌ์ฐ์ฐ์์๋ and, or, not ์ฐ์ฐ์๊ฐ ์๋ค.
๋ฉค๋ฒ์ฐ์ฐ์์๋ in, not in ์ฐ์ฐ์๊ฐ ์๋ค.
๋น๊ต, ๋ ผ๋ฆฌ, ๋ฉค๋ฒ์ฐ์ฐ์์ ๊ฒฐ๊ณผ ๊ฐ์ bool ํ์ ์ผ๋ก True ์๋๋ฉด False๋ก ์ฐ์ถ๋๋ค.
import๋ ๋ชจ๋์ ์์ค์ฝ๋ ๋ด์์ ์ฌ์ฉํ ์ ์๋๋ก ํฌํจ์ํค๋ ํค์๋๋ค.
F37.101 ์ปดํจํ ๊ธฐ์ด: ์ฒ์ ๋ง๋๋ ์ปดํจํ (First Adventures in Computing) ์์ธ๋ํ๊ต ํ๋ถ๋ํ ๋ณํด์