https://www.inflearn.com/course/%EB%82%98%EB%8F%84%EC%BD%94%EB%94%A9-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B8%B0%EB%B3%B8
[지금 무료] 파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자 | 나도코딩 - 인프런
나도코딩 | 6시간. 여러분이 파이썬 개발자가 되는데 필요한 시간입니다. 핵심 내용만 선정 / 챕터마다 퀴즈 & 해설 / 실생활 기반 예제로 아주 쉽게 설명합니다. 그리고 완전 무료입니다., 배우지
www.inflearn.com
강의명 : 파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
수강 기한 : 무제한
강의 구성 : 71강
시작일 : 2024.6.3.
커리큘럼 :
[기본편]
1. 기본문법
1) 자료형 (6/3 학습)
2) 연산자 (6/3 학습)
3) 문자열처리 (6/3 학습)
4) 자료구조 (6/3 학습)
5) 제어문 (6/4 학습)
6) 함수 (6/4 학습)
7) 입출력 (6/4 학습)
8) 클래스
9) 예외처리
10) 모듈과 패키지
2. 실생활 기반 예제
3. 퀴즈
5) 제어문
#If
whether = input("오늘 날씨는 어때요?")
if whether == "비" or whether == "눈":
print ("우산을 챙기세요")
elif whether == "미세먼지":
print("마스크를 챙기세요")
else :
print("오늘은 준비물이 없어요")
temp = int(input("기온은 어때요?"))
if 30 <= temp:
print("너무 더워요")
elif 10 <= temp and temp < 30:
print("날씨가 좋아요")
elif 0 <= temp < 10 :
print("외투를 챙기세요")
else:
print("너무 추워요")
input값을 집어넣으면 그 값의 범위에 따라 다른 조건문이 시행된다
for waiting_no in [1,2,3,4]:
print("대기 번호 : {}".format(waiting_no))
for waiting_no in range(1, 10): # 1~ 9
print("대기 번호 : {}".format(waiting_no))
starbucks = ["토르", "슈퍼맨", "그루트"]
for customer in starbucks:
print("{0}님, 주문하신 커피 나왔습니다".format(customer))
for A in [ ] :
for A in range( ) : # 시작점 ~ 끝점+1 (시작점을 미지정시 0 ~ )
A = [ ]
for a in A :
A라는 리스트 안의 개체?들을 a 로 지정?하는 개념..
#while
customer = "철수"
index = 5
while (index >= 1):
print("{0}, 커피 나왔습니다. {1}번 남았습니다".format(customer, index))
index -= 1
if index == 0:
print("커피 처분 각")
index = 0
while True :
print("{0}, 커피 나왔습니다. {1}번 호출했습니다".format(customer, index))
index += 1 #무한루프 발생 > ctrl + C 로 종료
customer = "토르"
person = "unknown"
while person != customer : #person이 customer가 아니면 반복문을 반복. 토르가 찾아오면 반복문 탈출
print("{0}, 커피 가져가삼".format(customer))
person = input("이름이 머삼?") #person에 이름을 입력받기
#continue, break
absent = [2,5] #:결석한 학생의 번호 리스트
no_book = [7]
for student in range(1,11): #:1 ~ 10 번
if student in absent:
continue # 아래 명령문을 시행하지않고 다음 번호로 넘어가게함
elif student in no_book:
print("수업끝.{0}는 교무실로".format(no_book))
break #뒤의 반복문을 시행하지않고 거기서 끝냄
print("{0}야, 책읽어라".format(student))
if와 elif에 안걸리면 for 반복문에 걸려있는 명령문이 계속 시행되는거고
if 조건에 해당하면 continue
elif 조건에 해당하면 break
#한줄 for?
#출석번호 1234 > 101 102 103 104로 변환
student = [1,2,3,4]
print (student)
student = [i+100 for i in student]
print (student)
#학생이름을 길이로 변환
student = ["iron man", "super man", "groot"]
print(student)
# student = [len(i) for i in student]
# print(student)
#학생이름을 대문자로 변환
student = [i.upper() for i in student]
print(student)
.upper() < 괄호 빼먹지말기
print( )
QUIZ.
from random import *
# time = int(random() * 45 + 5) # 난수 0~ 1.0 * 45 + 5 = 5 ~ 50
count = 0
for i in range(1, 51):
time = randrange(5, 51)
if 5 <= time <= 15:
print("[o], {0}번째 손님 (소요시간 : {1})".format(i, time))
count += 1
else:
print("[ ], {0}번째 손님 (소요시간 : {1})".format(i, time))
# #반복문 종료 후
print("총 탑승 승객 : {0}".format(count))
각 i (승객)에게 time을 배정해줘야한다고 생각했는데 그럴필요없이
1~50 i 마다 time이 랜덤하게 출력되면 된다
6) 함수
#함수 정의 하고 호출하기
def open_account():
print("새로운 계좌가 생성되었습니다.")
open_account()
()좀 빼먹지말장
def deposit(balance, money): #입금하는 함수
print("{0}원이 입금되었습니다. 잔액은 {1}원입니다.".format(money, balance + money))
return balance + money
def withdraw(balance, money): #출금하는 함수
if balance >= money:
print("{0}원이 출금되었습니다. 잔액은 {1}입니다.".format(money, balance - money))
return balance - money
else:
print("출금 불가. 잔액이 {0}원 입니다.".format(balance))
return balance
def withdraw_night(balance, money): #저녁에 출금
commission = 100 #수수료 100원
return commission, balance - money - commission
balance = 0
balance = deposit(balance, 1000)
balnace = withdraw(balance, 500)
commission, balance = withdraw_night(balance, 400)
print("수수료는 {}원이며, 잔액은 {}원 입니다.".format(commission, balance))
함수에서 return 하는 이유는 뭐지?
함수 호출 할때 왜 balance = ~~ 를 붙이는거지? 그거 없어도 함수 호출은 되는데? *** balance 라는 변수를 선언 return을 통해서 반환된 값을 balance에 저장
commission, balance = ~~ 하고 두개를 같이 쓰는게 뭔가 혼란스러움.. ***튜플 형식으로 두개의 값을 콤마(,)로 구분해서 반환해준다 > 이런식으로 여러개의 값을 한번에 반환할 수 있음
마지막 print 는 왜 함수 안에 안넣었지? ***넣어도되는데 return이 함수를 종료하는 역할도 하기때문에 return 윗줄에 넣어줘야함
# def profile(name, age, main_lang):
# print("이름은 {0}, 나이는 {1}, 주 개발언어는 {2}입니다.".format(name, age, main_lang))
# profile("유재석", 20, "java")
#기본값 설정하기
def profile(name, age=17, main_lang="파이썬"):
print("이름은 {0}, 나이는 {1}, 주 개발언어는 {2}입니다.".format(name, age, main_lang))
profile("유재석")
profile("김태호")
def profile(name, age, main_lang):
print(name, age, main_lang)
#입력하는 순서가 바뀌어도 함수에서 정의한 순서대로 출력됨
profile(age=12, name="유재석", main_lang="자바")
def profile(name, age, *language):
print("이름 : {0}, 나이 : {1}".format(name, age), end=" ")
for lang in language :
print(lang, end=" ")
print()
profile("김태호", 20, "p", "a", "s", "c")
*language라는 가변 인자를 사용해서
입력되는 값의 개수가 일정치않아도 동일한 폼으로 출력됨
[전역 변수와 지역 변수 (global / local)]
gun = 10
def checkpoint(soldiers):
gun = 20 # 값 지정을 안해주면 함수실행이 안됨
gun = gun - soldiers
print("함수 안에서/ 남은 총의 개수:{0}".format(gun))
print(gun)
checkpoint(2)
print("남은 총 : {0}".format(gun))
[출력값]
10
함수 안에서/ 남은 총의 개수:18
남은 총 : 10
gun = 10
def checkpoint(soldiers):
global gun #전역 변수를 함수에서 사용함
gun = gun - soldiers
print("함수 안에서/ 남은 총의 개수:{0}".format(gun))
print(gun)
checkpoint(2)
print("남은 총 : {0}".format(gun))
[출력값]
10
함수 안에서/ 남은 총의 개수:8
남은 총 : 8
gun = 10
def checkpoint_ret(gun, soldiers):
gun = gun - soldiers
print("함수 안에서/ 남은 총의 개수:{0}".format(gun))
return gun
print(gun)
gun = checkpoint_ret(gun, 2)
print("남은 총 : {0}".format(gun))
함수에서 gun 변수를 받고, return 해줌으로써 전역 변수인 gun 값에 계산된 값이 반환됨
#QUIZ_함수: 표준체중을 구하는 프로그램 작성
def std_weight(height, gender):
if gender == "여자":
std_weight = round(height * height * 21 / 10000,2)
print("키 {0}cm 여자의 표준체중은 {1}kg 입니다.".format(height, std_weight))
else :
std_weight = round(height * height * 22 / 10000,2)
print("키 {0}cm 남자의 표준체중은 {1}kg 입니다.".format(height, std_weight))
std_weight(158, "여자")
std_weight(174, "남자")
[다른 답안 : 강의 내용]
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
공통적으로 연산하는 부분은 밖에서 한번만 적어준다.
공통적으로 출력하는 것도 한번만 적어준다 : 함수안에서 출력할 필요는 없음
값을 입력해주는 방법이 다르다 나는 함수 변수로 바로 받았고 강의에서는 별도로 변수를 선언했음
간결한 방식으로 코드 짜기
7) 표준 입출력
print("java", "python", sep=" & ", end="?")
print("몰랑")
sep= " " : 문자열 사이에 들어감 (separate)
end= " " : 뒤에오는 print 문 이 줄 넘김 되지 않고 붙어서 출력됨
import sys
print("python", "java", file=sys.stdout)
print("python", "java", file=sys.stderr)
scores = {"수학":0, "영어":50, "코딩":100}
for subject, score in scores.items():
print(subject.ljust(4), str(score).rjust(4), sep=":")
for num in range(1,20):
print("대기번호 : "+str(num).zfill(3))
sys.stdout & sys.stderr : 이건 나중에 추가적으로 찾아봐야겠음..
숫자는 str으로 감싸주기
answer = input("아무거나 입력하세요 : ")
# answer=10
print(type(answer))
# print("입력하신 값은 {0}입니다.".format(answer))
input으로 입력받은 값은 항상 str type임
#다양한 출력 포맷
print("{0:$>+20,}".format(99999999999))
0:
$빈공간채우기
정렬방향(>:오른쪽)
+ 양수음수 표시
20자릿수
, 3자리마다 콤마표시
print("{0}".format(7/6))
print("{0:f}".format(7/6))
print("{0:.3f}".format(7/6))
[출력값]
1.1666666666666667
0:f 1.166667
0:.3f 1.167
#파일 생성해서 내용 입력하기
score_file = open("score.txt", "w", encoding="utf8") #score_file 이라는 변수에 파일 write 모드로 읽기 utf8 해줘야 한국어 안씹힘
print("오 짱 신 기", file=score_file)
print("파일을 만들어서 내용 입력하기", file=score_file)
score_file.close() #파일을 열면 항상 닫아줘야함
score_file = open("score.txt", "a", encoding="utf8") #append
score_file.write("append 추가도 가능함")
score_file.write("\n 근데 print 안쓸땐 줄바꿈 따로 해줘야됨")
score_file.close()
#출력하기
score_file = open("score.txt","r",encoding="utf8") #read
print(score_file.read())
score_file.close()
#한줄씩 출력하기
score_file = open("score.txt","r",encoding="utf8")
print(score_file.readline())
print(score_file.readline())
print(score_file.readline())
print(score_file.readline())
score_file.close()
#파일이 몇줄인지 모를때 반복문 활용
score_file = open("score.txt","r",encoding="utf8")
while True:
line = score_file.readline()
if not line:
break
print(line)
score_file.close()
score_file = open("score.txt", "r", encoding="utf8")
lines = score_file.readlines() # -> list 형태로 저장
for line in lines:
print(line, end="")
score_file.close()
나 이거 좀 신기하잖아
파일을 열어서 거기에 입력하기 !!
그리고 그 입력한 내용도 다시 가져올수있음
pickle 라이브러리
프로그램상에서 사용하고있는 데이터를 파일형태로 저장 & 불러오기
import pickle
profile_file = open("profile.pickle", "wb") #파일 만들어주고 write binary로 정의
profile = {"이름":"박명수", "나이":30, "취미":["축구", "골프", "코딩"]} #변수에 데이터 할당
print(profile)
pickle.dump(profile, profile_file) #profile 변수에 있는 정보를 file에 저장
profile_file.close()
profile_file = open("profile.pickle", "rb")
profile = pickle.load(profile_file) #파일에 있는 정보를 profile에 불러옴
print(profile)
profile_file.close()
import pickle
with open("profile.pickle","rb") as profile_file:
print(pickle.load(profile_file))
#with 사용시 별도의 close 필요없음
with open("study.txt","w", encoding="utf8") as study_file:
study_file.write("여기에 입력하면 파일에 내용이 생성됨")
with open("study.txt", "r", encoding="utf8") as study_file:
print(study_file.read())
with를 써서 파일 쓰고 읽기 : 2줄로 쌉가능
for i in range (1, 51):
week_file = open(str(i) +"주차.txt", "w", encoding="utf8")
print("-"+ str(i)+"주차 주간 보고 - \n 부서 : \n 이름: \n 업무 요약 : ", file=week_file)
week_file.close()
# 왜 .format 쓰면 실행이 안되나요?
# 왜 하나의 프린트문 안에서 줄바꿈 하지않고 프린트문을 다 따로 써줘야하나요?
for i in range (1,51):
with open (str(i)+"주차.txt", "w", encoding="utf8") as report_file:
report_file.write("- {0}주차 업무보고".format(i))
report_file.write("\n 부서:")
report_file.write("\n 이름:")
report_file.write("\n 업무 요약:")
[내 풀이]
[강의 풀이]
format은 프린트문안에서만 쓰는건강?
강의에서는 file close를 안하기위해 with로 풀이