🦁 멋사 4번째 ν™œλ™

황닀은·2023λ…„ 4μ›” 8일
0
post-thumbnail

λ‚˜λ„ λˆ„μ›Œμ„œ μžκ³ μ‹ΆμœΌλ‹ˆκΉŒ ν™©κ³ λͺ… μ‹€μ‹œκ°„ μ‚¬μ§„μœΌλ‘œ μ‹œμž‘γ…‹

μ˜€λŠ˜μ€ 반볡문과 ν•¨μˆ˜, 클래슀, 상속, 객체지ν–₯의 기초적인 κ°œλ…μ„ ν•™μŠ΅ν–ˆλ‹€.
μˆ˜μ—…μ€ λŒ€ν‘œ, λΆ€λŒ€ν‘œλ‹˜μ΄ μ§„ν–‰ν–ˆλ‹€.

1. 반볡문

ν”„λ‘œκ·Έλž¨ λ‚΄μ—μ„œ 같은 λͺ…령을 일정 횟수만큼 λ°˜λ³΅ν•΄ μˆ˜ν–‰ν•˜λ„λ‘ μ œμ–΄ν•˜λŠ” λͺ…령문이닀.
μ’…λ₯˜λ‘œλŠ” whileλ¬Έκ³Ό forλ¬Έ, do~whileλ¬Έ, switch문이 μžˆλŠ”λ° κ·Έ 쀑 κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” whileλ¬Έκ³Ό for문을 μ •λ¦¬ν•΄λ³΄μž!

1.1 while문

  • 반볡 νšŸμˆ˜κ°€ λͺ…ν™•ν•˜μ§€ μ•Šμ„ λ•Œ 주둜 μ‚¬μš©ν•œλ‹€.
  • λ¬΄ν•œ 루프가 ν•„μš”ν•  λ•Œλ„ 주둜 μ‚¬μš©ν•˜λŠ” λ°˜λ³΅λ¬Έμ΄λ‹€.

쑰건식이 True일 경우 μ‹€ν–‰λ¬Έμž₯ 반볡

while 쑰건식 :
	μ‹€ν–‰λ¬Έμž₯

예제λ₯Ό ν•œλ²ˆ μ‚΄νŽ΄λ³΄λ©΄μ„œ while문을 이해해보도둝 ν•˜κ² λ‹€.
Q. while문을 μ‚¬μš©ν•΄ 1λΆ€ν„° 10κΉŒμ§€ 좜λ ₯ν•΄λ³΄μž

num = 1
while num <= 10 :
	print(num, end=' ')
    num += 1

πŸ’‘ μˆ˜ν–‰κ²°κ³Ό
1 2 3 4 5 6 7 8 9 10

1.2 for문

  • λ¬Έμžμ—΄ λ˜λŠ” 리슀트, νŠœν”Œ -> μ•ˆμ— μžˆλŠ” μš”μ†Œ ν•˜λ‚˜μ”© 반볡
  • 주둜 λ°˜λ³΅νšŸμˆ˜κ°€ μ •ν•΄μ Έμžˆμ„λ•Œ μ‚¬μš©ν•œλ‹€.
for λ³€μˆ˜ in λ¬Έμžμ—΄(or 리슀트 or νŠœν”Œ):
	print(λ³€μˆ˜)
    
    ν˜Ήμ€
  
for λ³€μˆ˜ in range(μ‹œμž‘ 숫자, μ’…λ£Œ 숫자 - 1, μ¦κ°€λŸ‰) :
	print(λ³€μˆ˜)

for문도 예제λ₯Ό μ΄μš©ν•΄μ„œ 이해해보도둝 ν•˜κ² λ‹€.
Q. for문을 μ‚¬μš©ν•΄ 1λΆ€ν„° 10κΉŒμ§€ 좜λ ₯ν•΄λ³΄μž

for i in range(1, 11) :
	print(i, end=' ')

πŸ’‘ μˆ˜ν–‰κ²°κ³Ό
1 2 3 4 5 6 7 8 9 10



2. ν•¨μˆ˜

ν•¨μˆ˜λž€ νŠΉμ • λͺ©μ μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ λ…λ¦½μ μœΌλ‘œ μ„€κ³„λœ μ½”λ“œμ˜ 집합을 의미

  • ν•¨μˆ˜ μ‚¬μš© 이유
    1. 반볡적인 ν”„λ‘œκ·Έλž˜λ°μ„ ν”Όν•  수 있음
    2. λͺ¨λ“ˆν™” -> μ½”λ“œ 가독성이 μ „μ²΄μ μœΌλ‘œ 쒋아짐
    3. ν”„λ‘œκ·Έλž¨μ— μ—λŸ¬/κΈ°λŠ₯ λ³€κ²½ ν•„μš”μ‹œ μ†μ‰¬μš΄ μœ μ§€λ³΄μˆ˜

ν•¨μˆ˜λŠ” def λΌλŠ” μ˜ˆμ•½μ–΄λ₯Ό μ‚¬μš©ν•˜λ©°, ν•¨μˆ˜λͺ…은 μž„μ˜λ‘œ 지정할 수 μžˆλ‹€.
(μ—¬κΈ°μ„œ defλŠ” define을 μ˜λ―Έν•¨)

def ν•¨μˆ˜λͺ…(λ§€κ°œλ³€μˆ˜):
	μ‹€ν–‰λ¬Έμž₯
    return λ°˜ν™˜λ³€μˆ˜

λ§€κ°œλ³€μˆ˜ : ν•¨μˆ˜μ— μž…λ ₯으둜 μ „λ‹¬λœ 값을 λ°›λŠ” λ³€μˆ˜
인수 : ν•¨μˆ˜ ν˜ΈμΆœμ‹œ μ •λ‹¬ν•˜λŠ” μž…λ ₯κ°’

ex)
def add(a, b): -> a, bλŠ” λ§€κ°œλ³€μˆ˜
return a + b

print(add(3, 4)) -> 3, 4λŠ” 인수

ν•¨μˆ˜μ˜ ν˜•νƒœλŠ” μž…λ ₯κ°’κ³Ό 리턴값 μœ λ¬΄μ— 따라 μœ ν˜•μ΄ λ‚˜λ‰œλ‹€.

1) 일반적 ν•¨μˆ˜ : μž…λ ₯κ°’κ³Ό 리턴값이 μžˆλŠ” 일반적인 ν•¨μˆ˜
μ˜ˆμ‹œ μ½”λ“œλ‘œ ν•œλ²ˆ 일반적 ν•¨μˆ˜λ₯Ό μ‚΄νŽ΄λ³΄μž.

def add(a, b):
	return a + b
    
a = add(3, 4):
print(a)

addν•¨μˆ˜κ°€ 2개의 μž…λ ₯값을 λ°›μ•„μ„œ μ„œλ‘œ λ”ν•œ κ²°κ³Όκ°’ 리턴

2) μž…λ ₯κ°’x ν•¨μˆ˜ : ν•¨μˆ˜λ₯Ό μ§€μ •ν–ˆμ„λ•Œ κ΄„ν˜Έμ•ˆμ— 아무값도 μ—†λŠ” ν•¨μˆ˜
μ΄λ²ˆμ—λ„ μ½”λ“œλ‘œ ν•œλ²ˆ μž…λ ₯값이 μ—†λŠ” ν•¨μˆ˜λ₯Ό μ‚΄νŽ΄λ³΄μž.

def say():
	return 'Hi'
a = say()
print(a)

say() : κ΄„ν˜Έμ•ˆμ— 아무값도 μ—†λ‹€. μž…λ ₯값은 μ—†μ§€λ§Œ 리턴값 Hiκ°€ μžˆμœΌλ―€λ‘œ
a = say() -> a에 HiλΌλŠ” λ¬Έμžμ—΄μ΄ λŒ€μž…λœλ‹€.

슬슬 ν—·κ°ˆλ¦¬κΈ° μ‹œμž‘ν•œλ‹€.... ν•¨μˆ˜λΆ€λΆ„λΆ€ν„° μ œλŒ€λ‘œ λ³΅μŠ΅ν•΄μ•Όν•  것 κ°™λ‹€..



3. 객체지ν–₯κ³Ό 클래슀

이 뢀뢄을 정말 잘 μ΄ν•΄ν•΄μ•Όν•˜λŠ”λ° μ‰½μ§€μ•Šλ‹€...... 이번 κΈ°νšŒμ— ν™•μ‹€ν•˜κ²Œ 작고 λ„˜μ–΄κ°€λ³΄μž!πŸ˜­πŸ˜‚

객체 = μ„±μ§ˆκ³Ό 행동이 λ‹΄κΈ΄ 자료. 즉, μ–΄λ– ν•œ 속성값과 행동을 κ°€μ§€λŠ” 데이터
클래슀 = 속성과 λ™μž‘ 으둜 ꡬ성
속성 = ν΄λž˜μŠ€κ°€ κ°€μ§€λŠ” λ³€μˆ˜
λ™μž‘ = ν΄λž˜μŠ€κ°€ ν•  수 μžˆλŠ” λ™μž‘

은행을 예둜 λ“€μ–΄λ³΄μž.
속성에 ν•΄λ‹Ήν•˜λŠ” 것은 κ³„μ’Œμ˜ μž”μ•‘, κ³„μ’Œ 주인, 이자율, μ†‘κΈˆμΈλͺ… 등이 λœλ‹€.
λ™μž‘μ— ν•΄λ‹Ήν•˜λŠ” 것은 좜금, μž…κΈˆ, κ³„μ’Œ 폐쇄, μΉ΄λ“œλ°œκΈ‰ 등이 λœλ‹€.


μ΄λ²ˆμ—” μ‚¬λžŒμœΌλ‘œ 예λ₯Ό λ“€μ–΄λ³΄μž.
속성에 ν•΄λ‹Ήν•˜λŠ” 것은 이름, λ‚˜μ΄, 성별, μ£Όμ†Œμ§€, 별λͺ… 등이 λœλ‹€.
λ™μž‘μ— ν•΄λ‹Ήλ˜λŠ” 것은 앉기, μΌμ–΄μ„œκΈ°, κ±·κΈ°, μš΄λ™ν•˜κΈ°, λ¨ΉκΈ°, 달리기 등이 λœλ‹€.

μœ„μ—μ„œ 예λ₯Ό λ“€μ—ˆλ˜ 은행과 μ‚¬λžŒμ€ ν΄λž˜μŠ€μ— ν•΄λ‹Ήν•œλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€!!


μƒμ„±μž

ν•¨μˆ˜ => ν•¨μˆ˜λͺ…()으둜 ν˜ΈμΆœν•΄μ•Ό μ½”λ“œκ°€ μˆ˜ν–‰λ˜μ§€λ§Œ, ν΄λž˜μŠ€λŠ” 클래슀 λ‚΄μ—μ„œ νŠΉλ³„ν•œ 이름(__init__)만 있으면 객체가 생성될 λ•Œ μžλ™μœΌλ‘œ ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜κ°€ μžˆλŠ”λ° 이λ₯Ό μƒμ„±μžλΌκ³  ν•œλ‹€.

class 클래슀λͺ… :
	def __init__(self) :

μœ„μ— μ–ΈκΈ‰ν•œ μ‚¬λžŒμ„ μ½”λ“œλ‘œ λ§Œλ“€μ–΄ 이해해보도둝 ν•˜μž.

class Human:
	def __init__(self, name, age, sex):
    	self.name = name
        self.age = age
        self.sex = sex
        
topping = Human("κ³ λͺ…", 3, "λ‚¨μž")
print(topping.name)

πŸ’‘ μˆ˜ν–‰κ²°κ³Ό
κ³ λͺ…

topping에 클래슀 Human()에 μžˆλŠ” ν•¨μˆ˜μ˜ 인자λ₯Ό μž…λ ₯ν•΄ λŒ€μž…ν•˜λ©΄ λ³€μˆ˜λͺ….속성을 μ΄μš©ν•΄ 지정해쀀 μΈμžκ°’μ„ print()둜 좜λ ₯ν•  수 μžˆλŠ” 것을 λ³Ό 수 μžˆλ‹€!


상속

  • κΈ°μ‘΄ ν΄λž˜μŠ€μ—μ„œ κΈ°λŠ₯을 μΆ”κ°€ν•˜κ±°λ‚˜ λ³€κ²½ν• λ•Œ μ‚¬μš©ν•œλ‹€.
  • κΈ°μ‘΄ν΄λž˜μŠ€κ°€ 라이브러리 ν˜•νƒœλ‘œ μ œκ³΅λ˜κ±°λ‚˜ μˆ˜μ •μ„ ν•  수 μ—†μ„λ•Œ 상속을 μ‚¬μš©ν•œλ‹€.
class λΆ€λͺ¨ν΄λž˜μŠ€ :
	λ‚΄μš©
    
class μžμ‹ν΄λž˜μŠ€(λΆ€λͺ¨ν΄λž˜μŠ€) :
	λ‚΄μš©

상속 μ—­μ‹œ μ½”λ“œλ‘œ μ΄ν•΄ν•΄λ³΄μž!

Q. μŠ€ν¬μΈ λΌλŠ” λΆ€λͺ¨ν΄λž˜μŠ€λ₯Ό μƒμ†λ°›λŠ” 배ꡬ와 좕ꡬ μžμ‹ 클래슀λ₯Ό λ§Œλ“€κ³ , 슀포츠 ν΄λž˜μŠ€μ— ν•œκ°€μ§€ 속성을 λ„£μ–΄μ£Όκ³  배ꡬ 클래슀λ₯Ό μ΄μš©ν•΄ 속성을 좜λ ₯ν•΄λ³΄μž.

class sports:
	def like_sports(self):
    	print("μ’‹μ•„ν•˜λŠ” μŠ€ν¬μΈ λŠ”?")

class volley(sports):
	def volleyball(self):
    	print("배ꡬ")
        
class soccer(sports):
	def soccerball(self):
    	print("좕ꡬ")
        
def main():
	v = volley()
    v.like_sports()
    v.volleyball()
    
main()

πŸ’‘ μˆ˜ν–‰κ²°κ³Ό
μ’‹μ•„ν•˜λŠ” μŠ€ν¬μΈ λŠ”?
배ꡬ




λ‚΄κ°€ λ‚Έ 파이썬 과제...... νŒŒμ΄μ¬μ„ λ‹€κΉŒλ¨Ήμ–΄μ„œ λ‚˜λ¦„ μ—΄μ‹¬νžˆ λ§Œλ“€μ–΄λ΄€λ‹€..
λ‚˜λ„ μ–΄λ ΅λ‹€...... λ‡Œμ— μ₯ λ‚˜λŠ”μ€„..

1. μ •μˆ˜ 3개λ₯Ό μž…λ ₯ λ°›μ•„ κ°€μž₯ 큰 μ •μˆ˜λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€. - max()ν•¨μˆ˜λ„ μ‚¬μš© κ°€λŠ₯

A, B, C = map(int, input().split())
print(max(A, B, C))

πŸ’‘ μˆ˜ν–‰κ²°κ³Ό
20, 30, 10
30

map() -> μ •μˆ˜ν˜•μ˜ μ—¬λŸ¬ 값을 .split()으둜 곡백으둜 ꡬ뢄해 λ°›μ•„μ˜¬ 수 μžˆλ‹€.
max(A, B, C) -> A, B, C 쀑 κ°€μž₯ 큰 값을 κ°€μ Έμ˜¨λ‹€.

2. κ³ λͺ…μ΄μ˜ 간식을 μ£Όλ¬Έν•˜λ €κ³  ν•œλ‹€. S, A, B λ“±κΈ‰ λ³„λ‘œ S등급은 무료, A등급은 2μ²œμ›, B등급은 3μ²œμ›μ˜ 배솑비가 λΆ™λŠ”λ‹€. 간식 값이 25,000원일 경우, μ£Όλ¬Έμžμ—κ²Œ 등급을 μž…λ ₯λ°›μ•„ 총 결제 κΈˆμ•‘μ΄ μ–Όλ§ˆμΈμ§€ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“œμ‹œμ˜€.

snack = 25000
grade = input()
total = 25000 + 3000

if grade == "A":
	print("%d % (snack + 2000))
elif grade == "B":
	print(f'{total}')
elif grade == "S":
	print("%d" % snack)
else:
	print("ν•΄λ‹Ήν•˜λŠ” 등급이 μ—†μŠ΅λ‹ˆλ‹€.")

πŸ’‘ μˆ˜ν–‰κ²°κ³Ό
S
25000

μ½”λ“œκ°€ κ°„λ‹¨ν•˜κΈ° λ•Œλ¬Έμ— ꡳ이 total μ΄λΌλŠ” λ³€μˆ˜λ₯Ό μ„ μ–Έν•  ν•„μš”λŠ” μ—†μ§€λ§Œ 포맷 슀트링 ν•¨μˆ˜λ₯Ό 써보기 μœ„ν•΄μ„œ ν•œλ²ˆ ν•΄λ΄€λ‹€....!


3. μ‚¬μš©μžμ—κ²Œ 단을 μž…λ ₯λ°›μ•„ ν•΄λ‹Ήν•˜λŠ” ꡬꡬ단을 while문을 μ‚¬μš©ν•΄ 좜λ ₯ν•˜μ‹œμ˜€.

dan = int(input())

i = 1
while i < 10:
	print("%d X %d = %d" % (dan, i, dan * i))

πŸ’‘ μˆ˜ν–‰κ²°κ³Ό
3
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
3 X 5 = 15
3 X 6 = 18
3 X 7 = 21
3 X 8 = 24
3 X 9 = 27


4. numbers = [50, 21, 4, 689, 2, 103, 90, 273, 79, 36]이 μžˆμ„ λ•Œ if문을 μ‚¬μš©ν•΄ 50μ΄μƒμ΄λ©΄μ„œ ν™€μˆ˜μΈ 숫자λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

numbers = [50, 21, 4, 689, 2, 103, 90, 273, 79, 36]

for num in numbers:
	if num >= 50 and num % 2 != 0:
		print(num)

πŸ’‘ μˆ˜ν–‰κ²°κ³Ό
689
103
273
79

and 논리 μ—°μ‚°μžλ₯Ό μ΄μš©ν•΄ 두 쑰건이 λͺ¨λ‘ 참일경우 print() μ‹€ν–‰


5. μž…λ ₯받은 숫자만큼 κ³„λ‹¨μ‹μœΌλ‘œ 별이 ν•˜λ‚˜μ”© μ¦κ°€ν•˜κ²Œ 좜λ ₯ν•˜μ‹œμ˜€.

num = int(input())

for i in range(num):
	for j in range(i + 1):
    	print("*", end='')
    print()

πŸ’‘ μˆ˜ν–‰κ²°κ³Ό
4
*
**
***
****

슬슬 μ–΄λ €μ›Œμ§€κΈ° μ‹œμž‘ν–ˆλ‹€... λ‚΄κ°€ μ™œ 이런 문제λ₯Ό λ§Œλ“€μ—ˆμ„κΉŒ..............
for문을 μ™„λ²½ν•˜κ²Œ 이해할 수 μžˆμ§€μ•Šμ„κΉŒν–ˆλŠ”λ° ν—ˆν—ˆ..


6. while문을 μ΄μš©ν•΄ 100μ΄ν•˜μ˜ μžμ—°μˆ˜ 쀑 22의 배수λ₯Ό ν•œμ€„λ‘œ 좜λ ₯ν•˜μ‹œμ˜€.

num = 1
while num <= 100:
	if num % 22 == 0:
    	print(num, end='')
    num += 1

πŸ’‘ μˆ˜ν–‰κ²°κ³Ό
22 44 66 88


7. μž…λ ₯받은 숫자만큼 κ³„λ‹¨μ‹μœΌλ‘œ 별이 ν•˜λ‚˜μ”© κ°μ†Œν•˜κ²Œ 좜λ ₯ν•˜μ‹œμ˜€.

num = int(input())

for i in range(num):
	for j in range(num - i):
    	print("*", end='')
    print()

πŸ’‘ μˆ˜ν–‰κ²°κ³Ό
4
****
***
**
*

첫번째 for문은 μ„Έλ‘œμ€„μ„, λ‘λ²ˆμ§Έ for문은 κ°€λ‘œμ€„μ„ μ˜λ―Έν•œλ‹€.
첫번째 for문은 μ„Έλ‘œλ₯Ό num만큼 좜λ ₯ν•˜κ³  λ‘λ²ˆμ§Έ for문은 κ°€λ‘œμ€„ ν•˜λ‚˜λ‹Ή num-i-1만큼의 을 좜λ ₯ν•΄μ€€λ‹€.
ex) num = 3, i = 0일 λ•Œ, for j in range(3)이 λ˜λ―€λ‘œ print()λ₯Ό κ°€λ‘œμ€„μ— μ„Έλ²ˆ μ‹€ν–‰(
이 μ„Έλ²ˆ λ‚˜μ˜€κ²Œ μ‹€ν–‰)
i = 1μΌλ•Œ, for j in range(2)κ°€ λ˜λ―€λ‘œ print()λ₯Ό λ‹€μŒμ€„μ— λ‘λ²ˆ μ‹€ν–‰(이 λ‘λ²ˆ)
i = 2μΌλ•Œ, for j in range(1)이 λ˜λ―€λ‘œ print()λ₯Ό λ‹€μŒμ€„μ— ν•œλ²ˆ μ‹€ν–‰(
이 ν•œλ²ˆ)


8. 숫자 5κΉŒμ§€ 좜λ ₯ν•˜λ˜ 별을 κ³„λ‹¨μ‹μœΌλ‘œ 좜λ ₯ν•˜μ‹œμ˜€.

for i in range(1, 6):
	for j in range(1, i + 1):
    	print(j, end='')
    for k in range(5 - i):
    	print("*", end='')
   	print()

πŸ’‘ μˆ˜ν–‰κ²°κ³Ό
1****
12***
123**
1234*
12345

첫번째 for문은 μ„Έλ‘œμ€„μ„ μ˜λ―Έν•˜κ³  λ‘λ²ˆμ§Έ for문은 숫자λ₯Ό, μ„Έλ²ˆμ§Έ for문은 을 좜λ ₯ν•˜λŠ” λ°˜λ³΅λ¬Έμ΄λ‹€.
숫자λ₯Ό 좜λ ₯ν•  λ•Œμ—λŠ” κ³„λ‹¨μ‹μœΌλ‘œ μˆ«μžκ°€ 1μ”© μ¦κ°€ν•˜κ²Œ 좜λ ₯ν•˜κ³ ,
을 좜λ ₯ν• λ•Œμ—λŠ” 좜λ ₯된 숫자의 자릿수 뢀뢄에 좜λ ₯ ν•˜κΈ° μœ„ν•΄ 1μ”© κ°μ†Œν•˜κ²Œ 좜λ ₯ν•œλ‹€.
i = 1일 λ•Œ, for j in range(1, 2) -> print(j) => 1을 좜λ ₯ν•˜κ³  for k in range(4) -> 1에 λΆ™μ—¬μ Έμ„œ *을 4개 좜λ ₯ν•œ ν›„ print()λ₯Ό λ§Œλ‚˜ λ‹€μŒ μ€„λ‘œ μ»€μ„œκ°€ μ΄λ™ν•œλ‹€.
i = 2일 λ•Œ, for j in range(1, 3) -> print(j) => 1κ³Ό 2λ₯Ό 좜λ ₯ν•˜κ³  for k in range(3) -> 12에 λΆ™μ—¬μ Έμ„œ *을 3개 좜λ ₯ν•œ ν›„ print()λ₯Ό λ§Œλ‚˜ λ‹€μŒμ€„λ‘œ μ»€μ„œκ°€ μ΄λ™ν•œλ‹€.

이 λ°˜λ³΅μ„ 5번 λ°˜λ³΅ν•˜λ©΄ λœλ‹€^^ ν•˜ν•«^^

0개의 λŒ“κΈ€