본문 바로가기

Back-end/Python

파이썬 기초 - 3 ( 노트정리 ) with 나도코딩

5-1. if

weather = "비"
if 조건:
	실행 명령문
    
weather = input("오늘 날씨는 어때요?")
if weather == "비" or weather == "눈":
	print("우산을 챙기세요")
elif weather == "미세먼지":
	print("마스크를 챙기세요")
else:
	print("준비물 필요 없어요")

- 조건문에 or 을 사용해서 2가지 이상 적을 있다.

- if 이후에는 : 표시로 마무리해야 실행된다.

 

temp = int(input("기온은 어때요?"))
if 30 <= temp:
	print("너무 더워요. 나가지 마세요")
elif 10 <= temp and temp < 30:
	print("괜찮은 날씨에요")
elif 0 <= temp < 10:
	print("외투를 챙기세요")
else:
	print("너무 추워요. 나가지 마세요")

- input 항상 문자열로 입력값을 받기 때문에 int (정수:숫자로 변경) 감싸준다.

 

5-2. for

for waiting_no in [0, 1, 2, 3, 4]:
	print("대기번호 : {0}".format(waiting_no))

 

- 대기번호 1,2,3,4 하나씩 출력하기 힘들기때문에 for문을 사용한다.

- 아래 [0,1,2,3,4] 에서 아래 print 숫자 하나씩 대입해서 출력해준다.

 

#randrange()

for waiting_no in range(1, 6): #1,2,3,4,5
	print("대기번호 : {0}".format(warting_no)
    

- range를 사용하면 (6) 또는 (1,6) 해당 범위의 숫자를 한 줄씩 출력해준다.

 

starbucks = ["아이언맨", "토르", "아이엠 그루트"]
for customer in starbucks:
	print("{0}, 커피가 준비되었습니다.".format(customer))

 

5-3. while

#while

customer = "토르"
index = 5
while index >= 1:
	print("{0}, 커피가 준비 되었습니다. {1} 번 남았어요.".format(customer,index))
    index -= 1
    if index == 0:
    	print("커피는 폐기처분되었습니다.")

- While 어떤 조건이 만족할때까지 반복

 

customer = "토르"
person = "Unknown"

while person != customer :
	print("{0}, 커피가 준비 되었습니다.".format(customer))
    person = input("이름이 어떻게 되세요? ")

 

while 예시

 

5-4. continue break

absent = [2, 5] #결석
for student in range(1, 11): #1,2,3,4,5,6,7,8,9,10
	if student in absent:
    	continue
    print("{0}, 책을 읽어봐".format(student))
    

Continue 만나면 밑에있는 문장을 실행하지 않고 다음반복을 이어서한다.(skip하고 넘어간다)

 

ansent = [2, 5] #결석
no_book = [7] #책을 깜빡했음
for student in range(1, 11): # 1,2,3,4,5,6,7,8,9,10
	if student in absent:
    	continue
    elif student in no_book:
    	print("오늘 수업 여기까지. {0}는 교무실로 따라와".format(student))
        break
    print("{0},책을 읽어봐".format(student))

Break 만나면 뒤에 반복문이 있더라도 반복을 끝낸다

 

5-5.한 줄 for

# 출석번호가 1 2 3 4, 앞에 100을 붙이기로 함 -> 101,102,103,104
students = [1,2,3,4,5]
print(students)
students = [i+100 for i in students]
print(students)

# 학생 이름을 길이로 변환
students = ["Iron man", "Thor", "I am groot"]
students = [len(i) for i in students]

 

- i 내가 변경할 값으로 바꿔준다.

       i.upper() 또는 i.lower() 사용해서  전부대문자, 전부소문자로 바꿔준다.

 

#퀴즈

Quiz) 당신은 Cocoa 서비스를 이용하는 택시기사님입니다.

50명의 승객과 매칭 기회가 있을 때, 총 탑승 승객 수를 구하는 프로그램을 작성하시오.

 

조건1 : 승객별 운행 소요 시간은 5분~ 50분 사이의 난수로 정해집니다.

조건2 : 당신은 소요시간 5분 ~15분 사이의 승객만 매칭해야 합니다.

 

(출력문 예제)

[0] 1번째 손님 (소요시간 : 15분)

[ ] 2번째 손님 (소요시간 : 50분)

[0] 3번째 손님 (소요시간 : 5분)

. . .

[ ] 50번째 손님 (소요시간 : 16분)

총 탑승 승객 : 2분

 

#해답

from random import *
cnt = 0
for i in range(1, 51)
	time = randrange(5, 51)
    if 5 <= time <= 15:
    	print("[0] {0}번째 손님 (소요시간 : {1}분)".format(i, time))
        cnt += 1
    else: 
    	print("[ ] {0}번째 손님 (소요시간 : {1}분)".format(i, time))
        
print("총 탑승 승객 : {0} 분".format(cnt))

 


 

6-1. 함수

 

- 어떤역활을 하는 박스

- 함수는 정의만 하는것이지 호출하기 전까진 실행되지 않는다

def open_account():
	print("새로운 계좌가 생성되었습니다.")
    
open_account()
 

 

6-2. 전달값과 반환값

def open_account():
	print("새로운 계좌가 생성되었습니다.")

def deposit(balance, money): # 입금
	print("입금이 완료되었습니다. 잔액은 {0} 원입니다.".format(balance + money))
    return balance + money
    
balance = 0 # 잔액
balance = deposit(balance, 1000)
print(balance)
def withdraw(balance, money): 
	if balance >= money: 
    	print("출금이 완료되었습니다. 잔액은 {0} 원입니다.".format(balance - money)
        return balance - money
    else:
    	print("출금이 완료되지 않았습니다. 잔액은 {0} 원입니다.".format(balance))
        return balance
        
def withdraw_night(balance, money):
	commission = 100
    return commission, balance - money -commission
    
balance = 0
balance = deposit(balance, 1000)
commission, balance = withdraw_night(balance, 500)
print("수수료 {0} 원이며, 잔액은 {1} 원입니다.".format(commission, balance)

 

6-3. 기본값

def profile(name, age, main_lang):
	print("이름 : {0}\t나이 : {1}\t주 사용언어: {2}" \.format(name, age, main_lang)
    
profile("유재석", 20, "파이썬")
profile("김태호", 25, "자바")

def profile(name, age=17, main_lang="파이썬"):
	print("이름 : {0}\t나이 : {1}\t주 사용언어: {2}" \.format(name, age, main_lang)
    
profile("유재석")
profile("김태호")

 

6-4. 키워드값

def profile(name, age, main_lang):
	print(name, age, main_lang)
    
profile(name="유재석", main_lang="파이썬", age=20
profile(main_lang="자바", age=25, name="김태호")

Profile호출값 순서가 바껴도 함수값에 name, age, main_lang 순서를 따라간다.

 

6-5. 가변인자

프린트문이 끝날때 줄바꿈을 하지 않고 이어서 출력한다는 명령어

def profile(name, age, *language):
	print("이름 : {0}\t나이 : {1}\t".format(name,age), end=" ")
    for lang in language:
    	print(lang, end=" ")
    print()
    
profile("유재석", 20, "python", "java", "C", "C++", "C#", "JavaScript)
profile("김태호", 25, "Kotlin", "Swift")

서로 다른갯수에 값을 넣어줄땐 가변인자(Variable parameter) 이용할 있다

 

6-6. 지역변수와 전역변수

지역변수 = 함수내에서만 있는것

전역변수 = 모든공간에서 부를 있는것

gun = 10

def checkpoint(soldiers):
	gun = 20
   	gun = gun - soldiers
    print("[함수 내] 남은 총 : {0}:.format(gun))
    
print("전체 총 : {0}".format(gun))
checkpoint(2)
print("남은 총 : {0}".format(gun))

함수안에 있는 gun 지역변수, 함수안에서만 작동한다.

 

def checkpoint(soldiers):
	global gun
   	gun = gun - soldiers
    print("[함수 내] 남은 총 : {0}:.format(gun))
    
def checkpoint_ret(gun, soldiers):
	gun = gun - soldiers
    print("[함수 내] 남은 총 : {0}:.format(gun))
    return gun
 
print("전체 총 : {0}".format(gun))
gun = checkpoint_ret(gun, 2)
print("남은 총 : {0}".format(gun))

 

#퀴즈

Quiz) 표준 체중을 구하는 프로그램을 작성하시오

* 표준 체중 : 각 개인의 키에 적당한 체중

(성별에 따른 공식)

남자 : 키(m) x 키(m) x 22

여자 : 키(m) x 키(m) x 21

 

조건1 : 표준 체중은 별도의 함수 내에서 계산

          * 함수명 : std_weight

          * 전달값 : 키(height), 성별(gender)

조건2 : 표준 체중은 소수점 둘째자리까지 표시

 

(출력예제)

175cm 남자의 표준 체중은 67.38kg입니다.

 

 

#해답

def std_weight(height, gender):
	if gender == "남자":
    	return height * height * 22
    else:
    	return height * height * 21
        
height = 175 
gender = "남자"
weight = round(std_weight(height / 100, gender), 2)
print("키 {0}cm {1}의 표준 체중은 {2}kg 입니다.".format(height, gender, weight))

 

출처 : https://www.youtube.com/channel/UC7iAOLiALt2rtMVAWWl4pnw