if문
프로그래밍에서 조건을 판단하여 해당 조건에 맞는 상황을 수행하는 데 쓰는 것이 바로 if 문입니다.
money = True if money: print('hi') else: print('hello') #True이므로 hi가 출력됩니다. """ if 조건문: 수행할_문장1 수행할_문장2 ... else: 수행할_문장A 수행할_문장B ... """ #기본 if와 else의 기본 구조 #그렇기에 들여쓰기를 잘 해야한다. + f 조건문 뒤에는 반드시 콜론(:)이 붙습니다. #비교 연산자 # x < y -> x가 y보다 작다. # x > y -> x가 y보다 크다. # x == y -> x와 y가 같다. # x != y -> x와 y가 같지 않다. # x >= y -> x가 y보다 크거나 같다. # x <= y -> x가 y보다 작거나 같다. #그렇기에 상황을 보면서 True와 False를 잘 섞어내서 써야한다. #and, or, not # x or y -> x와 y 둘 중 하나만 True이어도 True이다. # x and y -> x와 y 모두 참이어야 True이다. # not x -> x가 거짓이면 True이다. money = [1000, 2000, 50000] if 50000 in money: #50000이 있어서 이용 가능이라고 출력 print('이용 가능') if 500 not in money: print('작은 것') #500이 없기에 True 반환 및 작은 것 출력 #조건문에서 아무 일도 하지 않게 설정하고 싶다면? #주머니에 돈이 있으면 가만히 있고, 주머니에 돈이 없으면 카드를 꺼내라. pocket = ['paper', 'money', 'cellphone'] if 'money' in pocket: pass # else: print("카드를 꺼내라") #elif - if문 하나 만으로 설명이 부족할 때 쓰는 또 다른 if문 if 1500 in money: #pocket 리스트 안에 money 문자열이 있기 때문에 if 문 다음 문장인 pass가 수행되고 #아무런 결괏값도 보여 주지 않는다. print(money) elif 2000 in money: print('2000') # 1500은 없지만 2000은 있기에 2000 출력 """ # elif 기본 구조 if 조건문: 수행할_문장1 수행할_문장2 ... elif 조건문: 수행할_문장1 수행할_문장2 ... elif 조건문: 수행할_문장1 수행할_문장2 ... ... else: 수행할_문장1 수행할_문장2 ... """ #if 문을 한 줄로 작성하기 print('1000' if 1000 in money else '없음') # 여기서 if와 else를 한 줄에 썼다. 1000이 있기에 1000 출력 #혹은 pocket = ['paper', 'money', 'cellphone'] if 'money' in pocket: pass #pass를 통해 아무런 값도 출력하지 않는다. else: print("카드를 꺼내라")
While
문장을 반복해서 수행해야 할 경우 while 문을 사용한다. 그래서 while 문을 ‘반복문’이라고도 부른다.
import time #기본 구조 """ while 조건문: 수행할_문장1 수행할_문장2 수행할_문장3 ... """ time = 0 while time < 6: print(f'{time}초가 지났습니다') if time == 5: print('시간이 끝났습니다') time += 1 #만약 time이 6이 되면 거짓이 되면서 출력이 멈춘다 prompt = """ 1. Add 2. Del 3. List 4. Quit Enter number: """ number = 0 while number != 4: print(prompt) number = int(input()) #여기서 뭘 눌러도 prompt안에 있는 값들이 전부 출려되지만 4를 출력하면 False로 바뀌어 끝난다 #break 5 snack = 3 while snack: money = int(input('돈을 넣어주세요:')) if money >= 1000: print('꼬부기') print(f'남은 과자의 갯수: {snack -1}') print(f'잔돈: {money - 500}') snack -= 1 elif money >= 500: print('사탕') print(f'남은 과자의 갯수: {snack -1}') print(f'잔돈: {money - 500}') snack -= 1 elif money >= 1500: print('라면') print(f'남은 과자의 갯수: {snack -1}') print(f'잔돈: {money - 1500}') snack -= 1 if snack == 0: #과자의 수가 0일 때 빠져나가기 break #continue - continue는 break와 비슷하지만, while문을 빠져나가지 않고, 한 턴 쉰다는 느낌입니다.
For문
While문과 비슷하지만 문장 구조가 한눈에 들어온다.
#for문 기본 구조 """for 변수 in 리스트(또는 튜플, 문자열): 수행할_문장1 수행할_문장2""" list = [1,2,3] for a in list: print(a) #리스트에 있는 값들을 하나씩 가져온다 a = [(1,2), (3,4), (5,6)] for (first, last) in a: print(first + last) #이러면 first, last에 값이 하나 씩 들어가면서 더해지면서 나온다 #게다가 #if문에 썼던 한 줄 코드 처럼 for문도 마찬가지로 쓸 수 있다. a = [1,2,3,4] result = [num * 3 for num in a if num % 2 == 0] # 먼저 1,2,3,4가 각 들어오게 되는데 만약 짝수인 값들만 가져오게 끔 하고, 가져온 값들을 * 3한다. print(result) #이렇게 많이 쓸 수 있다. result = [x * y for x in range(2,10) for y in range(1,10)] print(result)
함수
그냥 쉽게 말해 미리 정의해놓은 레시피 같은 느낌이다. 레시피에 맞게 사용자가 입력한 값에 따라 결과물도 레시피에 따라 달라지는 것이다. 입력값(x)에 따라 출력값(y)이 변하는 느낌이다.
프로그래밍을 하다 보면 똑같은 내용을 반복해서 작성해야 할 때가 있는데, 이때가 바로 함수가 필요한 때입니다. 즉, 반복되는 부분이 있을 경우, ‘반복적으로 사용되는 가치 있는 부분’을 한 뭉치로 묶어 ‘어떤 입력값을 주었을 때 어떤 결괏값을 리턴해 준다’라는 식이 함수입니다.
#함수 기본 구조 """def 함수_이름(매개변수): 수행할_문장1 수행할_문장2 ...""" #def는 함수를 만들 때 사용하는 예약어이며, #함수 이름은 함수를 만드는 사람이 임의로 만들 수 있습니다. #이 함수의 이름은 add이고 입력으로 2개의 값을 받으며 리턴값(출력값)은 2개의 입력값을 더한 값입니다. def add(a,b): #a,b를 받는다는 뜻 -매개변수(parameter) return a + b w = 3 #중요한 점은 a,b를 받는다고 변수 이름이 무조건 a와 b일 필요가 없다. b = 2 print(add(w,b)) #인수(arguments) #매개변수(parameter) #인수(arguments)는 함수를 호출할 때 전달하는 입력값을 의미한다. #입력값이 없는 함수 def hi(): return 'hi' print(hi()) #입력값이 없으면 호출될 때 그냥 return값을 반환한다. #리턴값이 없은 함수 def minus(a, b): #참고로 a =2, a = 5 이런식으로 미리 값을 지정해 줄 수 있다. print("%d, %d의 마이너스는 %d입니다." % (a, b, a-b)) print(minus(4,3)) #하지만 여기선 None이 반환되는데 return이 없어서 그렇다. 즉 리턴값이 없어서 그렇다 #입력값이 몇 개일지 모를 때 *args def add_many(*args): result = 0 for i in args: result = result + i # *args에 입력받은 모든 값을 더한다. return result print(add_many(4,2,6,2,1)) #그러면 15가 출력되는 것을 볼 수 있다. #참고로 *args말고도 옆에 여러가지 값들을 받을 수 있다. #예: def add_mul(choice, *args): #키워드 매개변수, **kwargs - *args는 숫자, kwargs는 문자열이기 때문에 **이 두번 붙는다. #그런데 알아야할 점은 딕셔너리 형태도 값을 반환한다. def print_kwargs(**kwargs): print(kwargs) print_kwargs(a=1) #{'a': 1}이렇게 출력이 된다. print_kwargs(name='foo', age=3) # {'name': 'foo', 'age': 3}이렇게 출력이 된다. #참고로 리턴값은 언제나 하나이다. def add_and_mul(a,b): return a+b, a*b result = add_and_mul(3,4) print(result) #그러면 (7, 12)가 나오는데 이것 자체가 하나의 값으로 나옵니다. result1, result2 = add_and_mul(3,4) print(result1, result2) #이러면 각각 값이 들어가 7 12가 출력이 된다. #global - global 명령어를 쓰면 함수 밖에 있는 즉, 지역 밖에 있는 변수를 불러오는 방법이다. g = 3 def vartest(): global g g = g + 2 vartest() print(g) #그러면 함수가 호출되고 global에 있는 g의 값이 써지면서, 5로 출력이 된다. #lambda - def와 동일한 역할을 하며, 보통 함수를 한 줄로 간결하게 만들 때 사용합니다. #기본 구조 -> 함수_이름 = lambda 매개변수1, 매개변수2, ... : 매개변수를_이용한_표현식 a = [1,2,3] b = [4,5,6] add = lambda x, y: x + y print(add(4,3)) #7출력
사용자 입출력
대표적인 input()과 print()이 있습니다
#input() a = input("입력하세요:") #그러면 입력하세요:라는 문구와 함께 무엇을 쓸 수 있는 창이 나타난다 #참고로 input은 입력되는 모든 것을 문자열로 취급합니다 #print() #큰따옴표로 둘러싸인 문자열은 + 연산과 동일하다 print("life" "is" "too short") # 1번 lifeistoo short 출력 print("life"+"is"+"too short") # 2번 lifeistoo short 출력 #문자열 띄어쓰기는 쉼표로 한다 print("life", "is", "too short") #life is too short 출력 #한 줄에 결괏값을 계속 이어서 출력하려면 매개변수 end를 사용해 끝 문자를 지정해야 합니다. for i in range(10): print(i, end=' ') #0 1 2 3 4 5 6 7 8 9 출력
파일 생성하기
#파일을 생성하기 위해 파이썬 내장 함수 open을 사용해야 합니다. #open 함수는 다음과 같이 ‘파일 이름’과 ‘파일 열기 모드’를 입력값으로 받고 #결괏값으로 파일 객체를 리턴합니다 #파일_객체 = open(파일_이름, 파일_열기_모드)- 구조 #a = open(..... , 'w') #파일 열기 모드 #r -> 읽기 모드: 파일을 읽기만 할 때 사용한다. #w -> 쓰기 모드: 파일에 내용을 쓸 때 사용한다. #a -> 추가 모드: 파일의 마지막에 새로운 내용을 추가할 때 사용한다. #새 파일을 디렉터리에 생성하고 싶으면 #f = open("C:/doit/새파일.txt", 'w') #f.close -> 오류를 위해 무조건 .close를 통해 닫아줘야 한다. """ f = open("C:/doit/새파일.txt", 'w') for i in range(1, 11): data = "%d번째 줄입니다.\n" % i f.write(data) f.close() """ #처럼 f.write(data)를 파일안에 적어준다. #파일을 읽는 여러 가지 방법 readline 함수 이용하기 """ f = open("C:/doit/새파일.txt", 'r') line = f.readline() print(line) #이러면 가장 첫번째 줄이 나온다. 1번째 줄입니다 출력 f.close() """ #만약 모든 줄을 꺼내고 싶다면, """ f = open("C:/doit/새파일.txt", 'r') while True: line = f.readline() if not line: break print(line) f.close() """ #이 처럼 while True:인 무한 루프를 통해 계속해서 가져오는데, #만약 더 이상 읽을 줄이 없으면 break를 수행한다 #readline()은 더 이상 읽을 줄이 없을 경우, 빈 문자열('')을 리턴한다 #readlines 함수 사용하기 - readlines 함수는 파일의 모든 줄을 읽어서 #각각의 줄을 요소로 가지는 리스트를 리턴한다. """ f = open("C:/doit/새파일.txt", 'r') lines = f.readlines() for line in lines: print(line) f.close() ["1번째 줄입니다.\n", "2번째 줄입니다.\n", ..., "10번째 줄입니다.\n"]라고 출력이 되는데 \n을 없애고 싶으면 f = open("C:/doit/새파일.txt", 'r') lines = f.readlines() for line in lines: line = line.strip() # 줄 끝의 줄 바꿈 문자를 제거한다. print(line) f.close() 이렇게 치면 된다. """ #read 함수 사용하기 - f.read()는 파일의 내용 전체를 문자열로 리턴한다. #따라서 위 예의 data는 파일의 전체 내용이다. """ f = open("C:/doit/새파일.txt", 'r') data = f.read() print(data) f.close() 혹은 for문을 사용해 줄 단위로 읽을 수 있다. f = open("C:/doit/새파일.txt", 'r') for data in f: print(data) f.close() """ #with 문과 함께 사용하기 - 파일을 열고 닫는 것을 자동으로 처리할 수 있다 """ with open("foo.txt", "w") as f: f.write("Life is too short, you need python") """ #이러면 파일을 자동으로 닫아준다.
여기까지..