이숭간 공부기록

파이썬 기본_2 (feat.나도코딩 유투브) 본문

공부공부/Python

파이썬 기본_2 (feat.나도코딩 유투브)

이숭간 2020. 7. 31. 16:45
728x90

https://www.youtube.com/watch?v=kWiCuklohdY&t=129s

 

 

<if> 

weather = "비"
if weather == "비" & weather = "폭우":

     print("우산챙겨")
elif weather=="미세먼지":
      print("마스크챙겨")
else:
      print("날씨조하하하")

#input() - 사용자로부터 인풋 받아들여서 스트링값으로 저장. (java에서 scanner같은거인듯)

# int(input()) - 정수값 입력받아야할때 int로감싸서 정수로 타입변환해줘야함


반복문

 

 <for> 

for waiting_no in [0,1,2,3,4]:    #연속된 숫자일경우 range(5)로도 표현가능 

     print("대기번호 : {0}".format(waiting_no))

<while>

customer = "토르"
index = 5
while index >=1:
    print("{0}손님, 커피가 준비되었습니다. {1}번 호출남았습니다.".format(customer,index))
    index -= 1
    if index <1:
        print("커피는 버리겠습니다.")

토르손님, 커피가 준비되었습니다. 5번 호출남았습니다.
토르손님, 커피가 준비되었습니다. 4번 호출남았습니다.
토르손님, 커피가 준비되었습니다. 3번 호출남았습니다.
토르손님, 커피가 준비되었습니다. 2번 호출남았습니다.
토르손님, 커피가 준비되었습니다. 1번 호출남았습니다.
커피는 버리겠습니다

 

<한줄for>

students = [1,2,3,4,5]
#출석번호를 101부터 시작하기로 바꿧음
print(students)
students = [100+i for i in students]
print(students)

[1, 2, 3, 4, 5]
[101, 102, 103, 104, 105]

 

<continue & break>

 continue - 다음에 있는 문장을 실행시키지 않고 다음 반복으로 넘어가게함

break - 반복할것이 남아있다 하더라도 바로 반복문 종료하고 끝냄

 

<<<퀴즈>>> 2:24:26 (내가푼방법)

-- 반복속에서 조건에따라 반복문의 출력이 달라지는 형태

from random import *

temp = 0  # 총탑승승객수
for i in range(1,51):  # 50명의 승객이있으니까
    time = randint(5, 50)  # 5부터 50까지의 정수 랜덤추출
    if time>=5 and time<=15: # 5<= time <= 15 로 해도 되는군
        print("[o] {0}번째 손님 (소요시간: {1}분)".format(i, time))
        temp += 1 
    else:
        print("[ ] {0}번째 손님 (소요시간: {1}분)".format(i, time))


print("총 탑승승객:" + str(temp))

출력
[ ] 1번째 손님 (소요시간: 42분)
[ ] 2번째 손님 (소요시간: 47분)
[ ] 3번째 손님 (소요시간: 36분)
[ ] 4번째 손님 (소요시간: 29분)
[ ] 5번째 손님 (소요시간: 16분)
[o] 6번째 손님 (소요시간: 5분)
[ ] 7번째 손님 (소요시간: 25분)
[o] 8번째 손님 (소요시간: 14분)
[ ] 9번째 손님 (소요시간: 31분)
[ ] 10번째 손님 (소요시간: 19분)
[o] 11번째 손님 (소요시간: 13분)
[o] 12번째 손님 (소요시간: 13분)
[ ] 13번째 손님 (소요시간: 22분)
[ ] 14번째 손님 (소요시간: 36분)
[ ] 15번째 손님 (소요시간: 35분)
[ ] 16번째 손님 (소요시간: 19분)
[ ] 17번째 손님 (소요시간: 34분)
[o] 18번째 손님 (소요시간: 5분)
[o] 19번째 손님 (소요시간: 8분)
[o] 20번째 손님 (소요시간: 11분)
[ ] 21번째 손님 (소요시간: 49분)
[o] 22번째 손님 (소요시간: 9분)
[ ] 23번째 손님 (소요시간: 34분)
[ ] 24번째 손님 (소요시간: 35분)
[ ] 25번째 손님 (소요시간: 44분)
[ ] 26번째 손님 (소요시간: 22분)
[ ] 27번째 손님 (소요시간: 49분)
[ ] 28번째 손님 (소요시간: 41분)
[o] 29번째 손님 (소요시간: 15분)
[ ] 30번째 손님 (소요시간: 48분)
[ ] 31번째 손님 (소요시간: 40분)
[ ] 32번째 손님 (소요시간: 31분)
[o] 33번째 손님 (소요시간: 9분)
[ ] 34번째 손님 (소요시간: 19분)
[o] 35번째 손님 (소요시간: 9분)
[ ] 36번째 손님 (소요시간: 16분)
[ ] 37번째 손님 (소요시간: 44분)
[ ] 38번째 손님 (소요시간: 46분)
[ ] 39번째 손님 (소요시간: 20분)
[o] 40번째 손님 (소요시간: 5분)
[o] 41번째 손님 (소요시간: 15분)
[ ] 42번째 손님 (소요시간: 28분)
[ ] 43번째 손님 (소요시간: 46분)
[ ] 44번째 손님 (소요시간: 33분)
[ ] 45번째 손님 (소요시간: 50분)
[ ] 46번째 손님 (소요시간: 29분)
[ ] 47번째 손님 (소요시간: 29분)
[ ] 48번째 손님 (소요시간: 34분)
[ ] 49번째 손님 (소요시간: 50분)
[ ] 50번째 손님 (소요시간: 36분)
총 탑승승객:13



<함수>

함수선언 - def 함수이름(): 끝....  

cf) java - public void main(){} - 접근제어자, 리턴값, 함수이름

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

def deposit(balance, money):
    print("입금이 완료되었습니다. 잔액은{0}원입니다.".format(balance+money))
    return balance + money

balance = 0
balance = deposit(balance, 1000)

# 소소한팁 - 코드가 길어서 한줄에 안들어올때 \ 붙이고 다음줄로 넘기면 이것들은 한줄이다 를 의미함

(파이썬에서는 중괄호로 구분하지않고 들여쓰기로 구문을 구분하기때무네)

 

기본값설정 - def profile(name, age=17, main_lang = "파이썬")으로하면 name이외에 나머지 두 매개변수는 기본설정값으로 들어감


<키워드값>

def profile(name, age, lang):
    print(name,age,lang)

profile("유재석", 30, "java")
profile(age=20,lang="java",name="유재석")  # 매개변수에서 키워드를 사용하면 순서에 상관없이 줄수있음.

<가변인자>

하나의 매개변수로 정해지지않은 개수의 매개변수가 있는 효과를 줄수있다.

서로다른 갯수의 매개변수를 주어도 같은 함수를 이용할수있는것을 볼 수 있다. 

#소소한팁 - print문에서 맨마지막에 end=" " 를 추가해주면 두줄에걸친 프린트문을 한줄에 출력해줌.

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++","JavaScript")
profile("김태호", 30, "Kotlin", "Swift")

... 
출력
이름:유재석 	 나이:20 	 Python java C C++ JavaScript 
이름:김태호 	 나이:30 	 Kotlin Swift 
...

<전역변수와 지역변수>

#java에서 전역변수가 해당 클래스내의 모든곳에서 사용가능한반면, 지역변수는 해당 메소드 내에서만 사용가능한것과 동일하다.

전역변수 - 전역공간에있는 어디서든 쓸수잇는 변수 

--> 전역변수를 함수내에서 쓰고싶을땐 global 을 변수앞에 붙여준다.

지역변수 - 변수가 선언된 함수 내부에서만 사용가능한 변수 

 

#가급적 전역변수는 최소한하는것이 좋다.  -> 함수의 매개변수로 전역변수를 주고, 함수 계산하고 리턴값으로 외부로 던져줌으로서 전역변수를 바꿀수있다. 

guns = 10   # 전역변수

def checkpoint_ret(gun,soldiers):    # 지역변수
    gun = gun - soldiers
    print("남은 총: {0}".format(gun))
    return gun

guns = checkpoint_ret(guns, 2)

<<퀴즈>> 표준체중을 구하시오.

내코드 - 이렇게하지말고 함수안에서 리턴을하고 바깥에서 전역변수를 이용해서 print하는것이 더 좋다.

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

std_weight(175, "남자")

선생님 코드 - 함수호출부분에서 인자에 직접값 할당하지말고 변수로 주기!

def std_weight(height, gender):
    if gender == "남자":
        return height * height * 22
    elif gender == "여자":
        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))

'공부공부 > Python' 카테고리의 다른 글

파이썬 기초함수 및 자료구조  (0) 2020.07.31