이숭간 공부기록
파이썬 기본_2 (feat.나도코딩 유투브) 본문
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 |
---|