list
파이썬
[특징]
1. 문법이 간단함
2. 학습자료가 많고 다양한 분야에 활용가능함.
[파이썬 설치]
1. https://www.python.org/downloads/
Download Python
The official home of the Python Programming Language
www.python.org
2. VScode Extension 설치
[code runner 설정]
# VScode extension ->code runner 설치 -> setting 변경 // "code-runner.runInTerminal": true
# 코드 실행단축키 [ ctrl + alt + N ]
[터미널]
clear (cls) : 터미널 출력내용 지우기
[특징]
1. 코드는 위에서 아래 방향으로 실행된다.
2. 주석은 # 으로 처리. // vscode 단축키 [ctrl + / ]
3. 일반적으로, 변수 선언시 별도의 키워드가 필요하지않다.
파이썬 사용 - 입출력
[출력]
print("HI") #괄호 열고닫기 , 문자열은 큰따옴표(or 외따옴표) 열고닫기
print("1")
print("2")
print("3")
#1
#2
#3
print("this is \'Python\'")
# 이스케이프 문자로 문자처리 가능
[변수] 데이터를 저장하는 공간
name = "test" # 변수 name을 선언하고 문자열 "test" 할당.
print(name)
[여러 항목 출력]
* 변수 이름은 영어 ,숫자 , 언더바(_) 사용함.
# 콤마로 구분해서 출력.
print("test1", "test2", "test3") #test1 test2 test3
# 여러 변수를 출력
name1 = "kim"
name2 = "lee"
name3 = "park"
print(name1, name2, name3) #kim lee park
# 문자열에 덧셈 뺄셈 연산 가능
str1 = " K"+" Y"
str2 = "initial"
str3 = str2 + str1
print(str3) # initial K Y
str1 = "first"
str2 = "second"
str3 = "third"
print(str1, str2, str3, sep="\n")
# sep 인수로 문자열 사이에 들어갈 값을 지정할수있다.
[입력] - 사용자로부터 입력받는다.
x = input("입력하세요.")
print(x)
1.
name = input("이름을 입력하세요.")
print("안녕하세요.", name+"님", "환영합니다.", sep=" ")
2.
name = input("type your name")
age = input("type your age")
print("your name: ", name)
print("your age: ", age)
[자료형] - 데이터의 형태 : 문자열,숫자,논리
* type 함수로 데이터의 형식을 알수있다.
print(type("문자입니다."))
print(type(100))
print(type(3.14))
print(type(True)) # true 대문자!
# <class 'str'>
# <class 'int'>
# <class 'float'>
# <class 'bool'>
[각종 연산]
# 사칙연산
print(4+2)
print(4-2)
print(4*2)
print(4/2) # 나누기연산은 실수로 표현된다.
# 몫, 나머지, 제곱
print(4//2)
print(4 % 2)
print(4**2)
[참고 - 연산 우선순위]
괄호 > 지수 > 곱셈,나숫셈,몫,나머지 > 덧셈,뺄셈 > 같은 우선순위에서는 왼쪽->오른쪽.
result = 100+20/(4-2)*5
print(result) #150
[예제]
* input함수는 문자열 출력하므로 int 함수로 입력값 정수 변환해준다.
1.
hour_wage = int(input("시급을 입력: "))
work_hour = int(input("일일 근무시간을 입력: "))
day_work = int(input("근무일수를 입력: "))
bonus = int(input("보너스가 있나요? : "))
total = hour_wage*work_hour*day_work+bonus
print("총 급여입니다: ", total)
2. 등차수열 합 구하기
num = int(input("입력하였던 숫자는? : "))
sum = num*(2+(num-1))/2
print("total number of"+str(num)+"phase: ", sum)
3. 나머지 구하기
num = int(input("type number: "))
re1 = 1 % num
re2 = 2 % num
re3 = 3 % num
re4 = 4 % num
re5 = 5 % num
print("result of remainder: ", re1, re2, re3, re4, re5)
[자료형 변환] - 데이터 형식이 같으면 자료형 변경할수있다.
# 문자열 -> 정수
a = "100"
b = int(a)
c = int("200")
print(type(b), type(c))
# 문자열 -> 실수
num = "3.14"
num_t = float(num)
print(type(num_t), type(num))
# 정수,실수 -> 문자열
a = 100
b = 3.14
c = str(a)
d = str(b)
print(type(c), type(d))
[문자열* 숫자] - 문자열을 숫자만큼 이어준다.
str = "test "
num = 2
print(str*num)
# test test
str = input("문자 입력하세요: ")
multiple = int(input("반복 횟수: "))
print(str*multiple)
파이썬 사용 - 조건문
비교연산 - 데이터의 크기를 비교하는 연산 -> 결과값을 참(true) or 거짓(false)으로 반환
x = 5
y = 8
print(x < y) # True
print(x > y) # False
print(x >= 10) # False
print(x <= 10) # True
print(x == y) # False
print(x != y) # True
[조건문] - 조건이 true이면 if 절을 실행한다.
1.
pass_origin = "1234"
pass_input = "1234"
if pass_origin == pass_input:
print("참일때 실행1")
print("참일때 실행2222")
elif pass_origin != pass_input:
print("거짓 조건입니다.")
print("거짓 조건입니다.22222")
else:
print("위에서 만족하는 조건이 없음")
print("조건문 빠져 나옴.")
# 조건이 참이므로 실행되었다.
# 명령블록은 다수 가질수있다.
# 자바스크립트와 달리 괄호로 묶지 않아야하고 콜론을 써야한다. 들여쓰기 해야한다.
2.
study = int(input("공부시간은? : "))
if study >= 10:
print("잠금해제")
elif study >= 5:
print("리미트")
else:
print("No")
[반복문-for] - 반복 명령 수행시 사용한다.
for i in range(5):
print(i, "번째")
print("반복문 빠져나오면 실행.")
# i : 반복하고자 하는 변수
# range(5) : 반복횟수
num = int(input("숫자 입력하세요: "))
# 사칙연산으로 계산
result = num*(num+1)/2
print(result)
# 반복문으로 계산
sum = 0
for i in range(num):
sum = sum+(i+1)
print(sum)
[복합 할당 연산자] - 동일 변수에 대한 연산 수행시 축약해서 사용할수있다.
for i in range(num):
# sum = sum+(i+1)
sum += (i+1) #복합할당 연산자
[range] - 특정 구간범위 control
# range(start , end)
for i in range(1, 6): # range 끝 번호는 포함하지 않는다.
print(i)
# 1부터 n까지 출력
n = int(input("숫자 입력하세요: "))
for i in range(1, n+1): # range 끝 포함되도록.....
print(i)
# range(start ,end, step)
for i in range(1, 11, 2): # step : 건너뛸때 사용 , i에 2씩 더해준다.
print(i)
for i in range(10, 0, -1): # step : i에 -1 씩 더해준다.
print(i)
[반복문 - while] - 특정 조건을 만족하는 경우에만 반복을 수행. 반복횟수 정해져있지 않을때
# 반복횟수 정해져 있지않고,
# 조건으로 반복 수행하고자 할때
i = 0
while i < 3:
print("test")
i += 1 # 없으면 무한루프 빠지므로 주의
1. 특정 범위내에 있는 숫자들의 합
num1 = int(input("숫자 1: "))
num2 = int(input("숫자 2: "))
sum = 0
# num1 부터 num2 까지의 합계 구해주는
for i in range(num1, num2+1):
sum += i
print(sum)
2.
# for문과 while문의 변환 연습
for i in range(1, 11, 2):
print(i)
print("done")
i = 1
while i < 11:
print(i)
i += 2
3. 구구단
num = int(input("몇단을 출력? : "))
for i in range(1, 10):
result = num*(i)
print(str(num)+"*"+str(i)+"="+str(result))
print(f"{num}*{i}= {result}") # f string 사용하면 간편하게 표현할수 있다.
[참고 - 문자열과 변수 함께 나열]
1. C# : $ " " 내부에 중괄호 { (변수) }
2. JavaScript : ``(백틱) 내부에 ${ (변수) }
파이썬 - 자료형 , 변수 , 입출력 , 자료형 변환 , 조건문 , 반복문
파이썬 - 라이브러리
1. 난수생성 random
# create random number [range 1~10]
import random
n = random.randint(1, 10)
print(n)
2. 시간 함수 time
import time
print("hi")
time.sleep(2)
print("time sleep 2 seconds")
time.sleep(2)
print("time sleep 4 seconds")
# 순차 실행되므로 시간 지연이 누적된다.
# 동기(synchronous) 일까? 블로킹(blocking) 일까?
👩💻 완벽히 이해하는 동기/비동기 & 블로킹/논블로킹
동기/비동기 & 블로킹/논블록킹 프로그래밍에서 웹 서버 혹은 입출력(I/O)을 다루다 보면 동기/비동기 & 블로킹/논블로킹 이러한 용어들을 접해본 경험이 한번 쯤은 있을 것이다. 대부분 사람들은
inpa.tistory.com
파이썬 - 알고리즘
[제어문] - 논리연산 [논리합 , 논리곱 , 논리부정]
1. and (논리곱)
sub_count = int(input(" 구독자 수 : "))
watch_time = int(input(" 시청시간 : "))
if sub_count >= 1000 and watch_time >= 4000:
print("Possible!!")
else:
print("Impossible")
2. or(논리합) , not(논리 부정)
test1 = int(input(" input test1: "))
test2 = int(input(" input test2: "))
test3 = int(input(" input test3: "))
if test1 >= 30 or test2 >= 35 or test3 >= 5:
print("pass!!!")
else:
print("fail...")
if test1 != 10:
print("not enough")
[참고] - 논리연산 (JavaScript)
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=zzz7692&logNo=221240535182
And(논리곱), Or(논리합), Not(논리 부정), E(X)or(배타적 논리합)
게임메이커는 C언어처럼 논리 연산자를 가지고 있습니다. 대부분 조건문과 반복문 정도까지 배우신 분들은...
blog.naver.com
[다중조건문]
test = int(input("필기 점수는? : "))
if test >= 80:
interview = input("면접 결과는? : ")
if interview == "pass":
print("you Passed")
elif interview == "fail":
print("you Failed")
else:
print("you Failed")
[다중반복문]
for i in range(5):
for j in range(5):
print(i, j)
1. 별찍기
for i in range(5):
for j in range(i+1):
print("*", end="")
print()
2. 거꾸로
for i in range(5):
for j in range(5-i):
print("*", end="")
print()
3. 크리스마스 트리
[방법1]
for i in range(5):
print(" "*(4-i), "*"*(2*i+1))
[방법2]
for i in range(5): # 트리의 단 수
for j in range(4-i):
print(' ',end='') # 공백 찍기
for j in range(2*(i+1)-1):
print('*',end='') # 별 찍기
print() # 줄 바꾸기
[조건문 속의 반복문 or 반복문 속의 조건문]
* 특정 조건이 만족하기전까지 무한 반복하면서 입력받으며 출력한다.
while True:
order = input("order please: ")
if order == "go":
print("keep going")
elif order == "stop":
print("exit")
break
else:
print("wrong order")
리스트
[리스트]
여러개의 데이터를 저장할수 있는 자료형 예) 배열
[형태]
변수 = [데이터 ,데이터,데이터]
*인덱싱 - 데이터에 접근.
*추가 하기(append) , 삭제하기(del) , 리스트 길이(len) , 슬라이싱(start:end:step)
[참고 - 슬라이싱] https://twpower.github.io/119-python-list-slicing-examples
# 리스트 만들기
test_arr = ["data1", "data2", "data3", "data4", "data5"]
# 데이터 접근하기(인덱싱)
print(test_arr[0])
print(test_arr[1])
print(test_arr[2])
print()
# 데이터 할당하기
test_arr[0] = "sample1"
test_arr[1] = "sample2"
test_arr[2] = "sample3"
print(test_arr)
print()
# 데이터 추가하기
test_arr.append("additional")
print(test_arr)
print()
# 데이터 삭제하기
del test_arr[0]
print(test_arr)
print(test_arr[0]) # 인덱스 1번이 0번으로 지정됨.
print()
# 리스트 길이
print(len(test_arr))
print()
# 리스트 슬라이싱
print(test_arr[0:2]) # 인덱스 0~2번 (2번 미포함)
print(test_arr[0:]) # 인덱스 0~끝까지 (시작 끝은 생략가능)
print(test_arr[::2]) # 시작 포함하여 2스텝씩 건너가며 포함
[리스트와 반복문]
리스트를 반복문(for) 을 사용해서 활용할수있다.
testArr = ["data1", "data2", "data3", "data4"]
for text in testArr:
print(text, "get!!!")
numArr = [1, 2, 3, 4, 5]
for num in numArr:
print(num*3)
[2차원 리스트]
arr_2d = [["str", 111, "str1"], ["str", 222, "str2"], ["str", 333, "str3"]]
print(arr_2d[0][0]) # 시작은 0번 인덱스 , 왼쪽차원 인덱스부터 파악한다.
print(arr_2d[2][1])
arr_2d.append(["str", 444, "str4"])
print(arr_2d)
1. 최소값 찾기
nums = [5, 15, 2, -8, -12, -29, 43, 1]
x = 9999
for i in nums:
if i < x:
x = i
print(x)
2. 최대값 찾기
nums = [5, 15, 2, -8, -12, -29, 43, 1]
x = -9999
for i in nums:
if i > x:
x = i
print(x)
3. 홀수 번째 원소들의 합계
nums = [5, 15, 2, -8, -12, -29, 43, 1]
x = 1
sum = 0
for i in nums:
if i % 2 == 1:
sum += i
i += 1
print(sum)
4. 로또 번호 뽑기
import random
lotto_num = []
count = 0 # 로또 뽑은 갯수
while True:
num = random.randint(1, 45) # 로또 번호 랜덤 추출
if num not in lotto_num: # 멤버십 연산자 (추출한 번호가 리스트에 포함되어 있는지)
lotto_num.append(num) # 없으면 리스트에 추가....
count += 1
if count == 6:
break
lotto_num.sort() # 오름차순 리스트 정렬....
for lotto in lotto_num:
print(lotto, end=" ") # 리스트 요소를 순회하면서 요소를 출력함. end 옵션으로 스페이스 간격을 준다.
함수
함수 - 특정 작업을 수행하는 코드를 모아놓은 것.
1. 반복되는 코드를 줄일수 있음.
2. 재사용 가능.
3. 코드 수정 수월해짐
1.
import random
# 기본 함수 형태
def add_num(a,b):
result = a+b
return result
# function with no return value
def div_num(a,b):
res=a/b
print("나눗셈 결과",res)
# 매개변수 없는 함수
def get_random_number():
res=random.randint(1,100)
return res
# 결과값, 매개변수가 없는 함수
def say_hello():
print("Hello")
print("there")
print(add_num(20,30))
div_num(20,30)
print(get_random_number())
say_hello()
2. 문자열 함수 - 문자열을 다룬다
# 문자 갯수를 세보자
message = "some message from server to server some message from server to server"
print(message.count("some"))
# 문자 찾기
name = "sadasdsadasdsrgasfafdas"
print(name.find("s")) # 먼저 찾은 인덱스 번호를 반환!!!
print(name.count("s"))
# 문자 바꾸기
sayhello = "hello. hello. hello. hello. hello. hello."
print(sayhello)
sayhi = sayhello.replace("hello","hi") # hello를 hi로 전부.... 대치한다
print(sayhi)
# 문자 자르기
text = "some text text text text text"
print(text.split()) # 공백을 기준으로 문자열을 자른다 + 자른 문자열을 리스트 요소로 할당한다.+ [원본유지]
print(len(text.split())) # 자른 후 총 요소를 구할수도있다.
text2 = "some,text,text,text,text,text"
print(text2.split(",")) # 콤마를 기준으로 문자열 스플릿.
# 문자 합치기 [join]
text = ["monday", "tuesday", "wednesday", "thursday"]
print("".join(text)) #공백없이
print(" ".join(text)) #공백 추가
print(":".join(text)) #콜론추가
# 공백문자 제거 [strip]
text ="******* long spaces *******"
print(text.strip("*")) # 좌우 볊표 제거함.
print(text.strip()) # 좌우 공백 제거
print(text.lstrip()) # 왼쪽 공백 제거 -> 별표먼저 제거해야함
print(text.lstrip("*").lstrip()) # 메서드 체이닝 -> 별표제거+ 공백제거
print(text.rstrip()) # 오른쪽 공백 제거 -> 별표먼저
print(text.rstrip("*").rstrip()) # 메서드 체이닝 -> 별표제거+ 공백제거