흐름
을 제어하는 문법True
) 코드를 실행if
, elif
, else
if
의 조건이 참이면 코드를 실행해라elif
(else if 약어): 그게아니고..... elif
의 조건이 참이면 실행해라else
: if
와 esif
모두 조건이 참이 아니라면 실행해라 acuracy = 0.92
if acuracy >=0.9:
print("와우 최고의 인공지능 모델이네요.")
elif acuracy < 0.9 and acuracy >= 0.8:
print("좋은 모델이네요.")
elif acuracy < 0.8 and acuracy >=0.7:
print("평범한 모델이네요.")
else:
print("차라리 제가 예측하겠습니다.")
tii = 20
if tii <= 19:
print("이건 구라야")
elif tii <21 and tii >19:
print("이건맞아")
else:
print("둘다 구라야")
ace = 25
if ace > 25:
print("여윽시 에이스")
elif ace < 30:
print("멍청이내가 더 어려")
else:
print("gg")
회원가입시 넘어온 나이값이 정수형이면 "정산값"을 출력
그게 아니면 "잘못된 값" 을 출력하는 프로그램을 만들어 봅시다.
age = 42
if type(age) == int:
print("정상값")
else:
print("잘못된 값")
lst = 55
if type(lst) == int:
print("정상")
else:
print("잘못")
회원가입시 나이값이 100 이상이면 '유효한 나이를 입력해주세요'
0 미만 (음수)이면 '태어난거 맞나요?" 출력
age = 120
if age > 99:
print("우효한 나이를 입력해주세요")
elif age < 0:
print("태어난거 맞나요?")
else:
print("DB저장완료")
age = 18
if age > 99 or age < 0:
print("유효한 나이를 입력해주세요.")
else:
if age < 20:
print("20세이상만 회원가입이 가능 합니다.")
else:
print("DB 저장 완료")
input() # 사용자의 입력으로 부터 입력값을 받을수 있는 함수
age = input("나이를 입력하시오: ")
scoer = [90,100,51,78,66,88]
max 라는 단어를 입력받으면 최대값을 출력
min 라는 단어를 입력받으면 최소값을 출력
mean 라는 단어를 입력 받으면 평균값을 출력
max, min, mean 외에 다른 단어를 입력 받으면 "똑바로 입력하게요" 를 출력해서 혼내주자
scores = [90,100,51,78,66,88]
agg = input("max","min","mean: ")
from typing import AsyncContextManager
money = input ("얼마 인출 할래? ")
if money.isdigit():
money = int(money)
if account < money:
print(f"인출이 불가능 합니다. {money - account}원의 잔액이 부족합니다. ")
else:
account -= money
print(f"현재 잔액은 {account} 원입니다. ")
else:
print(f"유효한 금액을 입력하세요. ")
model_scores1 = [0.92 , 0.83 , 0.91 , 0.77, 0.99 , 0.61 , 0.88,0.76,0.75] # 홀수 개수
model_scores2 = [0.92 , 0.83 , 0.91 , 0.77, 0.99 , 0.61 , 0.88,0.76,0.75 , 0.51] # 짝수 개수
print(model_scores1)
print(model_scores2)
scores = model_scores1
scores = model_scores2
length = len(scores)
index = length // 2
if length % 2:
median_val = sorted(scores)[index]
else:
median_val = (sorted(scores)[index] + sorted(scores)[index-1]) / 2
print(median_val)
while
while <condition>:>
code context
n = 3 # 3단
i = 1 # 곱하는수 1~9 증가한다.
while i < 10: # i(곱하는수가) 10보다 작으면 반복해라
print(f"{n} X {i} = {n*i}")
i += 1 # i = i+1
break
: 해당 반복문을 빠져 나온다.n = 2
i = 1
while True:
print(f"{n} X {i} = {n*i}")
i += 1
if i > 9:
break
continue
n = 3
i = 1
while i < 10:
if i % 2 i= 0:
i += 1
continue
print(f"{n} X {i} = {n*i}")
i += 1
fruits = {'사과': 'Apple', '바나나': 'Banana', '딸기': 'Strawberry'}
while True:
word = input('사과')
word = fruits.get(word)
if word:
print(word)
break
else:
print("사전에 없습니다. 다시입력하세요")
다음과 같이 학습에 사용할 나이 데이터가 리스트에 담겨있다.
age_list = [20, 42,None,30,25,None,27,50,60]
None 값들은 결축지
None 값을 제외한 나이값들의 평균 구하시오.
age_list = [20,42,None,30,25,None,27,50,60]
age_list
index = len(age_list)
tmp = []
while index:
index -= 1
if age_list[index] is not None:
tmp.append(age_list[index])
avg =sum(tmp) / len(tmp)
avg = int(avg)
avg
index = len(age_list)
while index:
index -=1
if age_list[index] is None:
age_list[index] = avg
age_list
i = 1
while i < 3:
print(f"{i}번째 바깥쪽 while 문 입니다.")
i += 1
j = 1
while j < 6:
print(f" {j}번째 안쪽 while 문 입니다.")
j += 1
i = 1
while i < 10:
k = 1
while k < 10:
print(f"{i} X {k} = {i*k}")
k = k+1
i += 1
a = 9
b = 1
while a < 10:
print(f"{a} X {b} = {a*b}")
b += 1
if b > 9:
break
i = 2
k = 1
while i < 9:
print(f"{i} X {k} = {i*k}")
k += 1
if k > 9:
break
i = 3
k = 1
while True:
print(f'{i} X {k} = {i*k}')
k += 1
if k > 15:
break
i = 40
if i < 50:
print:("진실")
elif i < 25:
print("거짓)")
else:
print("gkgk")
n = 2
while n < 10:[링크 텍스트](https://)
n = 2
while n < 10:
print(f"{n} 단입니다.")
i = 1
while i < 10:
print(f"{n} X {i} = {n*i}")
break
for
for <variab> in <ierable>
conde context
lst =[1,2,3,4]
for item in lst:
print(item ** 2)
n = 9
lst =[1,2,3,4,5,6,7,8,9]
for i in lst:
print(f"{n} X {i} = {n*i}")
lst = [-2,1,4,-88,12,-12] # 음수만 출력
for i in lst:
if i < 0:
print(i)
lst = [3,33,100,23,81,44] # 3의 배수 출력
for i in lst:
if i % 3 == 0:
print(i)
lst = [3,33,100,23,81,44]
for i in lst:
if i < 50 and i % 3 == 0:
print(i)
lst =["dog","cat","rabbit"]
for i in lst:
print(i.title()) # 대문자만 출력
lst =["dog","cat","rabbit"]
for i in lst:
print(i[0].upper() + i[1:])
email_list = ["user1004@gmail.com","user100@naver.com","user1@gmail.com","user14@hanmail.net"] # 아이디만 추출
for i in email_list:
i = i.split("@")[0]
print(i)
email_list = ["user1004@gmail.com","user100@naver.com","user1@gmail.com","user14@hanmail.net"]
for i in email_list:
if i.endswith("gmail.com"): # 해당 메일 주소만 추출
print(i)
range
함수range(0,10) # 숫자 0~9 까지 순차적으로 뽑겠다.
range(10) # range(0,10) 과 같다
type(range(0,10))
list(range(2,11,2))
range(10,0,-1)
n = 9
for i in range(1,10):
print(f"{n} X {i} = {n*i}")
for i in range(1,40): # 내가 한거 4의배수
if i % 4 == 0:
print(i)
for x in range(4,41,4): # 선생님이 한거
print(x)
for x in range(40,3,-4): # 역순 출력 가능함
print(x)
sum_value = 0
for i in range(1,11):
sum_value += i
sum_value
sum(range(1,11))
tt = 0
for i in range(1,11):
tt += i
tt
for
문for n in range(2,10):
print(f"{n} 단 입니다.")
for i in range(1,10):
print(f"{n} X {i} = {n*i}")
print("출력후 자동 줄바꿈이 되는 이유는")
print("뭘까?")
print(end=" ")
print(end=" ")
print(end=" ")
for i in range(1,6):
print("$"*i)
n = 5
for i in range(n):
for j in range(i + 1):
print("*",end = "")
print()
*
**
***
***
****
n = 5
for i in range(n):
# 공백 for문
for _ in range(n-i-1):
print(" ", end="")
for _ in range(i+1):
print("*", end=" ")
print()
n = 5
for i in range(n):
# 공백 for문
for _ in range(i):
print(" ", end="")
# 별 for 문
for _ in range(n-i):
print("*", end="")
print()
for i in range(1,10):
for j in range(2,10):
print(f'{j} X {i} = {j*i}', end = "\t" )
print()
for j in range(1,10):
for i in range(2,10):
print(f'{i} X {j} = {i*j}', end = '\t')
print()
- 각 학생들의 평균과의 점수 차이인 편차를 알고 싶다면?
scores = [90,81,65,77,98,70,82]
avg = sum(scores) / len(scores)
for scores in scores:
deviation = avg - scores
print(deviation)
scores = [90,81,65,77,98,70,82]
avg = sum(scores) / len(scores)
deviation_list = []
for score in scores:
deviation = avg - score
deviation_list.append(deviation**2)
var = sum(deviation_list) / len(deviation_list)
var
var ** 0.5
나이 데이터 = [20,30,60,65,38,63]
연봉데이터 = [3000,3500,4000,9000,8000,12000]
lst = [20,30,40,60,65,38,630]
minmax = [0] # 스케일링을 적용할 데이터를 넣어주면 됩니다.
min_value = min(lst)
size_value = max(lst) - min_value
for X in lst:
X = (X-min_value) / size_value
minmax.append(X)
minmax
grades = ["A-","A" ,"A+","B","A","A","A+","A-","B","B","B","C+","C","C+","C"]
cnt = 0 # 값의 개수를 체크 하기 위한 용도
for g in set(grades): # set 을 이용하여 중복 제거 비효율적인 반복을 방지
if cnt < grades.count(g): # g변수의 개수가 cnt 변수보다 크다면 최빈값
cnt = grades.count(g) # 현재 최대 빈도수 cnt 에 업데이트
mode = g # 최빈값 mode 변수에 저장
print(mode)
grades = ["A-","A" ,"A+","B","A","A","A+","A-","B","B","B","C+","C","C+","C"]
cnt =0
for g in set(grades):
if cnt < grades.count(g):
cnt = grades.count(g)
mode = g
print(mode)
input = [2,2,2,5,5,5,6,6,6,6,6,6,9,9,11,11,11,11,11,11]
max_input = max(input)
my_list = [0] * max_input
print(my_list) #11개가 생김
for i in input:
my_list[i-1] += 1 #input의 값 = my_list의 위치값, 나올때마다 +1하는
#i-1을 하는 이유는 파이썬의 index는 0부터 시작하기 때문이다.
#즉 input의 1의 값은 my_list의 첫번째 index인 0번 index에서 +1을 하기위해서이다.
print(my_list)
#[0, 3, 0, 0, 3, 6, 0, 0, 2, 0, 6]
#2-3번, 5-3번, 6-6번, 9-2번, 11-6번 나옴
#-------------경우1, 2의 다른 부분 ---------------#
print('my_list의 index를 1부터라고 했을 때, 최빈값은 %d 이며, 총 %d번 나왔다'
% (my_list.index(max(my_list))+1,max(my_list) ))
#list.index(인덱스번호 알고싶은값) => list에서 가장 최댓값의 index를 구하는 함수
#my_list.index(max(my_list)) 이 함수는 첫번째 최빈값만 불러옴.
text = "Hello wold"
for s in text:
print(s)
text = "Hello word"
cnt = 0
for s in text:
if s == "l":
cnt += 1
print(cnt)
### `enumerlatee` 함수
- iterable한 객체를 꺼낼때 인덱스도 같이 꺼낸다.
sr =[90,54,21]
k = 1
for i in sr:
print(f'{k}번째 점수는 {i} 입니다.')
k += 1
score_list = [90,87,93]
i = 0
for score in score_list:
print(f"{i}번째 인덱스의 점수는 {score}")
i += 1
for i,score in enumerate(score_list):
print(f"{i}번째 인덱스의 점수는{score}")
enumerate(score_list)
list(enumerate(score_list))
dict(enumerate(score_list))
### `zip` 함수
class_list =["A반","B반","C반"]
score_list =[90 , 87 , 93]
length = len(class_list)
for i in range(length):
print(f"{class_list[i]}의 점수는 {score_list[i]}점 입니다.")
class_list =["A반","B반","C반"]
score_list =[90 , 87 , 93]
for c,s in zip(class_list,score_list):
print(f"{c}의 점수는{s}점")
score_list2 = [70,50,63]
for c , s , s2 in zip(class_list, score_list, score_list2):
print(f"{c} {s} {s2}")
list(zip(class_list,score_list))
dict(zip(class_list,score_list))
lst1 = [10,20,30,40,50,60]
lst2 = ["A","B","C","D"]
for item1, item2 in zip(lst1,lst2):
print(item1, item2)
# `dict` for 문
score_dict = {
"국어" : 100,
"수학" : 90,
"영어" : 50
}
score_dict.keys()
for k in score_dict.keys():
print(f"{k}는 {score_dict[k]}점")
score_dict.values()
for v in score_dict.values():
print(f"{v}")
for k , v in score_dict.items():
print(f"{k}는 {v}점")
sale = { '연필' : 500, '공책':1200, '신발':58000}
for k, v in sale.items():
print(f"{k} 20% 할인가격: {v*0.8}원")
if
, else
를 사용하여 삼항연산 수행<True 일때 사용할 값> if <condition> else <False일때사용할 값>
age = 20
if age >= 20:
msg = "회원가입 가능"
else:
msg = "회원가입 불가능"
print(msg)
age = 19
msg = "회원가입 가능" if age >= 20 else "회원가입 불가능"
print(msg)
if age >= 20 : msg = "회원가입 가능"
for i in range(3) : print(i)
## 컴프리헨션 (Comprehension)
- 반복 가능한 객체를 활용해서 새로운 반복가능한 객체를 만들떄 유용하다.
- `list`, `set`,`dict` 를 자료형을 간단하게 만드는
- `tuple` 은 컴프리헨션 지원 안한다.
list Comprehension
```python
[<추가할 값 for <변수> in <컬렉션> if <값에 대한 조건>]
result =[]
for data in range(1,6):
result.append(data**2)
result
result = [ data**2 for data in range(1,6)]
result
num_list = list(range(1,21))
num_list
result = [ num for num in num_list if num % 2 ==0]
result
result = [ num*2 if num % 2 == 0 else num for num in num_list]
result
[ f"{n} X {i}={n*i}" for n in range(2,10) for i in range(1,10)]
%%timeit
lst = []
for data in range(1,100001):
lst.append(data)
%%timeit
lst = []
for data in range(1,100001):
lst.append(data)
s_list = []
for w in 'python':
s_list,append(\)
s_list
s_list = [ w for w in "python"]
list
b_list = [ i for v in "b_list"]
list
lib_list = ["pandas","numpy","sklerarn","python"]
lst =[]
for i, v in enumerate(lib)
n_list = [ ]
for x in zip((1,2,3),(10,20,30),(100,200,300)):
n_list.append(sum(x))
n_list
n_list = [sum(x)for x in zip((1,2,3),(10,20,30),(100,200,300))]
n_list
n_list = [ ]
for i in range(100):
if i % 10 == 0 :
n_list.append(i)
n_list
n_list = [ i for i in range(100) if i % 10 == 0 ]
n_list
s_list = [ ]
for i in range(1,11):
if i % 2 == 0:
s_list.append("짝수")
else:
s_list.append("홀수")
s_list
s_list = [ "짝수" if i%2 == 0 else "홀수" for i in range(1,11)]
s_list
files = ["magage.py","run.exe" , "urls.py" ,"run.bat" ,"image.jpg"]
[f for f in files if f.endswith(".py") or f.endswith(".exe")]
lst = [
[1,2,3],
[4,5,6],
[7,8,9]
]
[ n_list[1] for n_list in lst]
lst = [x for x in lst if x.endswith([2]) or x.endswith([5])] # 내 실패작
age_list = [20,42,None,30,25,None,27,50,60]
tmp = [ age for age in age_list if age is not None]
avg = sum(tmp)/len(tmp)
avg
[age if age is not None else avg for age in age_list]
(실습)
- 쇼핑 구매기록을 학습데이터로 활용하여 남자인지 여자인지 맞추는 인공지능 모델을 만든다고 가정하자.
- 다음과 같이 인공지능이 예측한 값에 대한 리스트와 실제 정답값 리스트가 있다.
```python
pred_list = [0,1,0,0,0,1,0,0,0,1]
label_list = [0,1,0,1,0,1,0,1,0,1]
0 은 여자 이고 , 1 은 남자이다.
인공지능 모델의 예측과 정답값을 일치한 개수를 리스트 컴프리헨션과 메소드 혹은 함수를 이용해서 구하고 데이터의 개수로 나누어 정확도를 구하시오.
set 컴프리헨션
a = {data for data in range(1,6)}
a
dict 컴프리헨션
a = ["아침", "점심", "저녁"]
b = ["샌드위치", "유부초밥", "피자"]
result = { meal:food for meal,food in zip(a,b)}
result
dict(zip(a,b))
result = {f"{meal}시간" : food for meal,food in zip(a,b)}
result
{ meal : food for meal,food in zip(a,b) if meal != "점심"}
population = {
"종로구" : 149384,
"중구" : 125240,
"용산구": 230040,
"성동구": 293556,
"광진구":346682,
"동대문구":342837,
"중랑구":394702,
"성북구":437153,
"강북구":308055,
"도봉구":325257,
"노원구":523037,
"은평구":479835
}
{ k:v for k,v in population.items() if v >= 300000}
lst = [v for v in population.values() if v >=300000 ]
sum(lst)
text = "#안녕#파이썬#파이썬#최고#파이썬#안녕"
{ word:text.count(word) for word in set(text.split("#")[1:])}
{ice:text.count(ice) for ice in tuple(text.split("#")[1:])}
def hhh():
print('a')
print('b')
return
print(hhh())
def values(*vv):
num = 1
for i in vv:
num *= i
return num
print(values(5,4,8,6))
lst1 = ["안녕 ㅋㅋㅋㅋ"]
lst2 = ["나는 안 안녕 ㅋㅋㅋㅋ"]
def jjj(lst):
for i in lst:
print(i.replace("ㅋ",""))
jjj(lst1)
jjj(lst2)
def numsum(num1,num2):
result = num1+num2
return result
numsum(10,100)
num1 = int(input('첫번째'))
num2 = int(input('두번째'))
def num_test(i1,i2):
result = num1+num2
return result
num_test(num1,num2)
def num_test(num1,num2):
result = num1+num2
return result
num1 = int(input('첫번째'))
num2 = int(input('두번째'))
print(f'{num1} + {num2} = {num_test(num1,num2)}')
s = input("ff")
def no(aa):
return s.replace("ㅋ","")
no(s)
num1 = int(input("정수"))
num2 = int(input("정수"))
op = input("연산자")
def num_list(*args):
if op == '+':
result = num1 + num2
elif op == '-':
result = num1 - num2
elif op == '/':
result = num1 / num2
elif op == '*':
result = num1 * num2
return result
else:
print("값이 없습니다")
print(f'{num1} {op} {num2}{op}{num3}{op}{num4}{op}{num5}{op}{num6} = {num_list(num1,num2,num3,num4,num5,num6)} ')