본문 바로가기
python

[python]파이썬 - 제어문

by skysline 2023. 1. 24.
반응형
코드텍스트연결수정 가능
 

 

제어문

  • 코드의 흐름을 제어한는 문법
  • 주어진 조건에 따라 반복해서 코드를 실행할때 사용하는 것을 제어문이라고 한다.
 

조건문(Condition)

  • 특정 조건을 만족하면(True) 코드를 실행
  • if , elif , else
    • 우리 다음과 같이 if elif else 만을 이용해서 조건문을 만든다고 가정해볼게요.
    • if의 조건이 참이면 코드를 실행해라
    • elif(else if 약어): 그게아니고.... elif 의 조건이 참이면 실행해라
    • else : if  elif 모두 조건이 참이 아니라면 실행해라
  • 조건문 구조
if <condition>:
  conde context
elif <condition>:
  coode context
...
...
...
else:
  conde context
 
 
 
accuracy = 0.66
if accuracy >= 0.9:
    print("와우 최고의 인공지능 모델이네요.")
elif accuracy < 0.9 and accuracy >= 0.8:
    print("좋은 모델이네요.")
elif accuracy < 0.8 and accuracy >= 0.7:
    print("평범한 모델이네요.")
else:
    print("차라리 제가 예측하겠습니다.")
 
차라리 제가 예측하겠습니다.
 

 

  • if문은 단독으로 사용가능
 
 
 
10 / 0
 
 
 
 
 
num = 0
if num != 0:
    print(10/num)
 
 
 
 
num = 0 
if num: # 0 과 None 객체가 아닐경우 True
    print(10/num)
 
 
 
 
num = 0
if num != 0:
    print(10 / num)
else:
    print("0으로 나눌수 없습니다.")
 
0으로 나눌수 없습니다.
 
 
 
num = -1
if num > 0:
    print(10 / num)
elif num < 0:
    print("양수만 넣어주세요")
else:
    print("0으로 나눌수 없습니다.")
 
양수만 넣어주세요
 
회원가입시 넘어온 나이값이 정수형이면 "정상값"을 출력
그게 아니면 "잘못된 값" 을 출력하는 프로그램을 만들어 봅시다.
 
 
 
age = 42
if type(age) == int:
    print("정상값")
else:
    print("잘못된 값")
 
정상값
 
회원가입 시 나이값이 100 이상이면 "유효한 나이를 입력해주세요" 를 출력
0 미만(음수)이면 "태어난거 맞나요?" 출력
0~99 "DB저장완료" 출력
 
 
 
age = 100
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 저장 완료")
 
20세이상만 회원가입이 가능합니다.
 
 
 
input() # 사용자의 입력으로 부터 입력값을 받을수 있는 함수
 
 
 
 
 
age = input("나이를 입력하시오: ")
 
나이를 입력하시오: 42
 
 
 
age.isdigit()
 
True
 
 
 
"-3".isdigit()
 
False
 
scores = [90,100,51,78,66,88]
max 라는 단어를 입력받으면 최대값을 출력
min 라는 단어를 입력받으면 최소값을 출력
mean 라는 단어를 입력받으면 평균값을 출력
max, min, mean 외에 다른 단어를 입력 받으면 "똑바로 입력하세요" 를 출력해서 혼내주자
 
 
scores = [90,100,51,78,66,88]
agg = input("max, min , mean: ")

scores_sort = sorted(scores)

if agg == "max":
    print(scores_sort[-1])
elif agg == "min":
    print(scores_sort[0])
elif agg == "mean":
    print(sum(scores) / len(scores))
else:
    print("똑바로 입력하세요")
 
max, min , mean: mean
78.83333333333333
 
계좌에 10000원이 들어있습니다.
인출 금액을 입력 받습니다.
인출 금액이 `isdigit` 메소드를 이용하여 숫자가 아닐경우 "유효한 금액을 입력하세요" 출력

인출금액이 계좌에 있는 금액보다 크면 "인출 불가능합니다. {}원의 잔액이 부족합니다." 출력
인출금액이 계좌에 있는 금액보다 작으면 "{} 원이 인출되었습니다." 출력
정수가 입력될경우에는 항상 마지막에 현재 계좌의 잔액을 출력 ( "현재 잔액은 {} 원 입니다."  )
 
 
account = 10000
 
 
 
 
money = input("얼마 인출 할래? ")

if money.isdigit():
    money = int(money)
    if account < money:
        print(f"인출이 불가능 합니다. {money - account} 원의 잔액이 부족합니다.")
    else:
        account -= money
        print(f"{money} 원이 인출되었습니다.")
    
    print(f"현재 잔액은 {account} 원입니다.")
else:
    print("유효한 금액을 입력하세요.")
 
얼마 인출 할래? ㅇㅀㄹㅇ
유효한 금액을 입력하세요.
 
  • 중앙값
    • 주어진 값을 크기순으로 순서대로 정렬했을때 가장 중앙에 위치한 값
    • 이상치에 영향을 받지 않는다.
 
 
 
 
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)
 
[0.92, 0.83, 0.91, 0.77, 0.99, 0.61, 0.88, 0.76, 0.75]
[0.92, 0.83, 0.91, 0.77, 0.99, 0.61, 0.88, 0.76, 0.75, 0.51]
 
  • 조건문을 이용하여 중앙값을 추출하는 코드를 작성하세요
 
 
 
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)
 
0.8
 

반복문(loop)

  • 반복적으로 코드를 수행할때 사용
 

while

  • 조건이 참(True)인 동안 반복
  • 무한 반복 주의!!!
while <condition>:
    code context
 
  • 3단 출력해보기
 
 
 
n = 3 # 3단
i = 1 # 곱하는수 1~9 증가한다.

while i < 10: # i(곱하는수가) 10보나 작으면 반복해라
    print(f"{n} X {i} = {n*i}")
    i += 1 # i = i + 1
 
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
3 X 5 = 15
3 X 6 = 18
3 X 7 = 21
3 X 8 = 24
3 X 9 = 27
 
 
 
# n = 3 # 3단
# i = 0
# while i < 10: # i(곱하는수가) 10보나 작으면 반복해라
#     i += 1 
#     print(f"{n} X {i} = {n*i}")
 
 
  • break : 해당 반복문을 빠져 나온다.
 
 
 
n = 9
i = 1
while True:
    print(f"{n} X {i} = {n*i}")
    i += 1

    if i > 9: 
        break
 
9 X 1 = 9
9 X 2 = 18
9 X 3 = 27
9 X 4 = 36
9 X 5 = 45
9 X 6 = 54
9 X 7 = 63
9 X 8 = 72
9 X 9 = 81
 
  • continue
    • 진행을 중단하고 다음 반복으로 넘어간다.
 
 
 
n = 3
i = 1
while i < 10:
    if i % 2 != 0:
        i += 1
        continue

    print(f"{n} X {i} = {n*i}")
    i += 1

 
3 X 2 = 6
3 X 4 = 12
3 X 6 = 18
3 X 8 = 24
 
 
 
n = 3
i = 1
while i < 10:
    if i % 2 == 0:
        print(f"{n} X {i} = {n*i}")
    i += 1
 
3 X 2 = 6
3 X 4 = 12
3 X 6 = 18
3 X 8 = 24
 
다음과 같이 한영사전이  dict 형태로 되어있다.
{'사과': 'Apple', '바나나': 'Banana', '딸기': 'Strawberry'}
사용자의 입력을 받아 사전에 없는 단어(key)를 입력받으면 "사전에 없습니다. 다시 입력하세요" 출력 하고 입력 대기
사전에 단어(key)가 있으면 해당하는 단어(value)를 출력하고 반복문을 빠져나오게 하자.
 
 
 
fruits = {'사과': 'Apple', '바나나': 'Banana', '딸기': 'Strawberry'}
while True: 
    word = input("과일단어 입력: ")
    word = fruits.get(word)
    if word:
       print(word)
       break
    else:
        print("사전에 없습니다. 다시입력하세요")
    
 
과일단어 입력: 참외
사전에 없습니다. 다시입력하세요
과일단어 입력: 포도
사전에 없습니다. 다시입력하세요
과일단어 입력: 딸기
Strawberry
 
다음과 같이 학습에 사용할 나이 데이터가 리스트에 담겨있다.
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
 
[20, 42, None, 30, 25, None, 27, 50, 60]
 
 
 
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
 
36
 

구한 평균 값으로 age_list 의 결측치(None)를 채우세요.

 
 
 
index = len(age_list)
while index:
    index -= 1
    if age_list[index] is None:
        age_list[index] = avg
age_list
 
[20, 42, 36, 30, 25, 36, 27, 50, 60]
 
  • 중첩 while 문
 
 
 
i = 1
while i < 3:
    print(f"{i}번째 바깥쪽 while 문 입니다.")
    i += 1

    j = 1
    while j < 6: 
        print(f"    {j}번째 안쪽 while 문 입니다.")
        j += 1
    
 
1번째 바깥쪽 while 문 입니다.
    1번째 안쪽 while 문 입니다.
    2번째 안쪽 while 문 입니다.
    3번째 안쪽 while 문 입니다.
    4번째 안쪽 while 문 입니다.
    5번째 안쪽 while 문 입니다.
2번째 바깥쪽 while 문 입니다.
    1번째 안쪽 while 문 입니다.
    2번째 안쪽 while 문 입니다.
    3번째 안쪽 while 문 입니다.
    4번째 안쪽 while 문 입니다.
    5번째 안쪽 while 문 입니다.
 
  • 중첩 while 문 사용하여 구구단 출력하기
    2 단입니다.
    2 X 1 = 2
    2 X 2 = 4
    ...
    2 X 9 = 18
    ...
    ...
    ...
    9 단입니다.
    9 X 1 = 9
    9 X 2 = 18
    ...
    9 X 9 = 81
 
 
 
n = 2
while n < 10:
    print(f"{n} 단입니다.")

    i = 1
    while i < 10:
        print(f"{n} X {i} = {n*i}",sep="")
        i += 1
    n += 1
    
 
2 단입니다.
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
2 X 9 = 18
3 단입니다.
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
3 X 5 = 15
3 X 6 = 18
3 X 7 = 21
3 X 8 = 24
3 X 9 = 27
4 단입니다.
4 X 1 = 4
4 X 2 = 8
4 X 3 = 12
4 X 4 = 16
4 X 5 = 20
4 X 6 = 24
4 X 7 = 28
4 X 8 = 32
4 X 9 = 36
5 단입니다.
5 X 1 = 5
5 X 2 = 10
5 X 3 = 15
5 X 4 = 20
5 X 5 = 25
5 X 6 = 30
5 X 7 = 35
5 X 8 = 40
5 X 9 = 45
6 단입니다.
6 X 1 = 6
6 X 2 = 12
6 X 3 = 18
6 X 4 = 24
6 X 5 = 30
6 X 6 = 36
6 X 7 = 42
6 X 8 = 48
6 X 9 = 54
7 단입니다.
7 X 1 = 7
7 X 2 = 14
7 X 3 = 21
7 X 4 = 28
7 X 5 = 35
7 X 6 = 42
7 X 7 = 49
7 X 8 = 56
7 X 9 = 63
8 단입니다.
8 X 1 = 8
8 X 2 = 16
8 X 3 = 24
8 X 4 = 32
8 X 5 = 40
8 X 6 = 48
8 X 7 = 56
8 X 8 = 64
8 X 9 = 72
9 단입니다.
9 X 1 = 9
9 X 2 = 18
9 X 3 = 27
9 X 4 = 36
9 X 5 = 45
9 X 6 = 54
9 X 7 = 63
9 X 8 = 72
9 X 9 = 81
 

for

  • 반복 가능(iterable)한 객체를 더이상 꺼낼수 없을때까지 반복한다.
  • list, tuple, set , dict , str
for <variable> in <iterable>:
    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}") 
 
9 X 1 = 9
9 X 2 = 18
9 X 3 = 27
9 X 4 = 36
9 X 5 = 45
9 X 6 = 54
9 X 7 = 63
9 X 8 = 72
9 X 9 = 81
 
for문과 조건문을 이용하여 다음의 리스트에서 음수만 출력하세요
lst = [-2,1,4,-88,12,-12]
 
 
 
lst = [-2,1,4,-88,12,-12]
for n in lst:
    if n < 0:
        print(n)
 
-2
-88
-12
 
for문과 조건문을 사용하여 다음의 리스트에서 3의 배수만을 출력
lst = [3,33,100,23,81,44]
 
 
 
lst = [3,33,100,23,81,44]
for n in lst:
    if n % 3 == 0:
        print(n)
 
3
33
81
 
다음의 리스트에서 50미만의 3의 배수만 출력
lst = [3,33,100,23,81,44]
 
 
 
lst = [3,33,100,23,81,44]
for n in lst:
    if n < 50 and n % 3 ==0:
        print(n) 
 
3
33
 
다음과 같이 리스트에 동물 이름 있다. 첫글자를 대문자로 변경해서 출력하세요
lst = ["dog","cat","rabbit"]
 
 
 
lst = ["dog","cat","rabbit"]
for s in lst:
    print(s[0].upper() + s[1:])
 
Dog
Cat
Rabbit
 
다음과 같이 이메일 리스트에 담겨 있다. for 문과 문자열 메소드를 이용하여 아이디만 출력해보세요

email_list = ["user1004@gmail.com","user100@naver.com","user1@gmail.com","user14@hanmail.net"]
 
 
 
email_list = ["user1004@gmail.com","user100@naver.com","user1@gmail.com","user14@hanmail.net"]
for email in email_list:
    email = email.split("@")[0]
    print(email)
 
user1004
user100
user1
user14

 

 
gmail 해당하는 이메일 주소만 출력하세요.
email_list = ["user1004@gmail.com","user100@naver.com","user1@gmail.com","user14@hanmail.net"]
 
 
 
email_list = ["user1004@gmail.com","user100@naver.com","user1@gmail.com","user14@hanmail.net"]
for email in email_list:
    if email.endswith("gmail.com"):
        print(email)
 
user1004@gmail.com
user1@gmail.com
 

range 함수

  • 특정 구간의 숫자의 범위를 만들어주는 함수
  • 슬라이싱 기법을 이용해서 숫자의 범위를 만들어준다.
  • 파이썬의 range 라는 숫자의 범위를 가진 iterable한 특수한 객체를 반환
  • for문 정말 같이 자주 사용된다.
 
 
 
range(0,10) # 숫자 0~9까지 순차적으로 뽑겠다는 말입니다.
 
range(0, 10)
 
 
 
range(10) # range(0,10) 같음
 
range(0, 10)
 
 
 
type(range(0,10))
 
range
 
 
 
list(range(2,11,2))
 
[2, 4, 6, 8, 10]
 
 
 
range(10,0,-1)
 
range(10, 0, -1)
 
 
 
n = 9
for i in range(1,10):
    print(f"{n} X {i} = {n*i}")
 
9 X 1 = 9
9 X 2 = 18
9 X 3 = 27
9 X 4 = 36
9 X 5 = 45
9 X 6 = 54
9 X 7 = 63
9 X 8 = 72
9 X 9 = 81
 
for 와 range 함수를 사용해서 1 ~ 40까지 숫자들 중에서 4의 배수만 출력해보세요.
 
 
 
for x in range(4,41,4):
    print(x)
 
4
8
12
16
20
24
28
32
36
40
 
for와 range를 사용하여 1에서 40까지 숫자들 중 4의 배수를 내림차순으로 출력
 
 
 
for x in range(40,3,-4):
    print(x)
 
40
36
32
28
24
20
16
12
8
4
 
1~10까지의 숫자에 대해 모두 더한 값을 출력하는 프로그램을 for 문을 사용하여 작성하라.
 
 
 
sum_value = 0
for i in range(1,11):
    sum_value += i
sum_value
 
55
 

중첩 for 

 
 
 
for n in range(2,10):
    print(f"{n} 단 입니다.")
    for i in range(1,10):
        print(f"{n} X {i} = {n*i}")
 
2 단 입니다.
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
2 X 9 = 18
3 단 입니다.
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
3 X 5 = 15
3 X 6 = 18
3 X 7 = 21
3 X 8 = 24
3 X 9 = 27
4 단 입니다.
4 X 1 = 4
4 X 2 = 8
4 X 3 = 12
4 X 4 = 16
4 X 5 = 20
4 X 6 = 24
4 X 7 = 28
4 X 8 = 32
4 X 9 = 36
5 단 입니다.
5 X 1 = 5
5 X 2 = 10
5 X 3 = 15
5 X 4 = 20
5 X 5 = 25
5 X 6 = 30
5 X 7 = 35
5 X 8 = 40
5 X 9 = 45
6 단 입니다.
6 X 1 = 6
6 X 2 = 12
6 X 3 = 18
6 X 4 = 24
6 X 5 = 30
6 X 6 = 36
6 X 7 = 42
6 X 8 = 48
6 X 9 = 54
7 단 입니다.
7 X 1 = 7
7 X 2 = 14
7 X 3 = 21
7 X 4 = 28
7 X 5 = 35
7 X 6 = 42
7 X 7 = 49
7 X 8 = 56
7 X 9 = 63
8 단 입니다.
8 X 1 = 8
8 X 2 = 16
8 X 3 = 24
8 X 4 = 32
8 X 5 = 40
8 X 6 = 48
8 X 7 = 56
8 X 8 = 64
8 X 9 = 72
9 단 입니다.
9 X 1 = 9
9 X 2 = 18
9 X 3 = 27
9 X 4 = 36
9 X 5 = 45
9 X 6 = 54
9 X 7 = 63
9 X 8 = 72
9 X 9 = 81
 
 
 
print("출력후 자동 줄바꿈이 되는 이유는\n")
print("뭘까?")
 
출력후 자동 줄바꿈이 되는 이유는
뭘까?
 
 
 
print(end=" ")
print(end=" ")
print(end=" ")
 
 
 
 
 
print("abc" , end=" ")
print("123",end="!")
 
abc 123!
 
 
 

  별찍기

 
 
 
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 문
    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()
 
*****
 ****
  ***
   **
    *
 
  • 가로 구구단 출력하기
    2 X 1 = 1    3 X 1= 3     ..... 9 X 1 = 9
    2 X 2 = 4    3 X 2 = 6    ..... 9 X 2 = 18
    ....
    ....
    2 X 9 = 18   3 X 9 = 27  ..... 9 X 9 = 81
 

end 인자에 "\t" 활용

 
 
 
print("2 X 1 = 1",end="\t")
print("3 X 1 = 3",end="\t")
print("4 X 1 = 4",end="\t")
 
2 X 1 = 1	3 X 1 = 3	4 X 1 = 4	
 
 
 
for i in range(1,10):
    for n in range(2,10):
        print(f"{n} X {i} = {n*i}" , end="\t")
    print()
 
2 X 1 = 2	3 X 1 = 3	4 X 1 = 4	5 X 1 = 5	6 X 1 = 6	7 X 1 = 7	8 X 1 = 8	9 X 1 = 9	
2 X 2 = 4	3 X 2 = 6	4 X 2 = 8	5 X 2 = 10	6 X 2 = 12	7 X 2 = 14	8 X 2 = 16	9 X 2 = 18	
2 X 3 = 6	3 X 3 = 9	4 X 3 = 12	5 X 3 = 15	6 X 3 = 18	7 X 3 = 21	8 X 3 = 24	9 X 3 = 27	
2 X 4 = 8	3 X 4 = 12	4 X 4 = 16	5 X 4 = 20	6 X 4 = 24	7 X 4 = 28	8 X 4 = 32	9 X 4 = 36	
2 X 5 = 10	3 X 5 = 15	4 X 5 = 20	5 X 5 = 25	6 X 5 = 30	7 X 5 = 35	8 X 5 = 40	9 X 5 = 45	
2 X 6 = 12	3 X 6 = 18	4 X 6 = 24	5 X 6 = 30	6 X 6 = 36	7 X 6 = 42	8 X 6 = 48	9 X 6 = 54	
2 X 7 = 14	3 X 7 = 21	4 X 7 = 28	5 X 7 = 35	6 X 7 = 42	7 X 7 = 49	8 X 7 = 56	9 X 7 = 63	
2 X 8 = 16	3 X 8 = 24	4 X 8 = 32	5 X 8 = 40	6 X 8 = 48	7 X 8 = 56	8 X 8 = 64	9 X 8 = 72	
2 X 9 = 18	3 X 9 = 27	4 X 9 = 36	5 X 9 = 45	6 X 9 = 54	7 X 9 = 63	8 X 9 = 72	9 X 9 = 81	
 
  • 각 학생들의 평균과의 점수 차이인 편차를 알고 싶다면?
 
 
 
scores = [90,81,65,77,98,70,82]
avg = sum(scores) / len(scores)
for score in scores:
    deviation = avg - score
    print(deviation)
 
-9.57142857142857
-0.5714285714285694
15.42857142857143
3.4285714285714306
-17.57142857142857
10.42857142857143
-1.5714285714285694
 
  • 편차의 평균인 표준편차를 구해보자

 

μ=1Ni=1Nxi

 

σ2=1Ni=1N(xiμ)2
 

 

 
 
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
 
108.81632653061224
 
 
 
var ** 0.5
 
10.431506436302104
 
  • Min-Max Scaling
    • 데이터의 수치의 범위를 바꿔주는 정규화 스케일링 기법이다.
    • 데이터의 범위를 0~1 사이로 바꿔준다.
      나이데이터 = [20,30,60,65,38,63]
      연봉데이터 = [3000,3500,4000,9000,8000,12000]
      xMin(X)Max(X)Min(X)
 
 
 
lst = [20,30,60,65,38,63]
minmax = [] # 스케일링을 적용할 데이터를 넣어주면 됩니다.

min_value = min(lst)
size_value = max(lst) - min_value

for x in lst:
    x = (x-min_value) / size_value
    minmax.append(x)
minmax
 
[0.0, 0.2222222222222222, 0.8888888888888888, 1.0, 0.4, 0.9555555555555556]
 
 
 
for x in minmax:
    x = x * size_value + min_value
    print(x)
 
20.0
30.0
60.0
65.0
38.0
63.0
 

주어진 데이터에서 최빈값(가장 많이 나온값)을 구하시오

grades = ["A-","A" ,"A+","B","A","A","A+","A-","B","B","B","C+","C","C+","C"]
 
 
 
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)
 
B

 

 
 
 
set(grades)
 
{'A', 'A+', 'A-', 'B', 'C', 'C+'}
 
  • 문자열도 iterable 하다.
 
 
text = "Hello word"
for s in text:
    print(s)
 
H
e
l
l
o
 
w
o
r
d
 
 
text = "Hello word"
cnt = 0
for s in text:
    if s == "l":
        cnt += 1
print(cnt)
 
2
 

enumerate 함수

  • iterable한 객체를 꺼낼때 인덱스도 같이 꺼낸다.
 
반응형

댓글