[문제] 1부터 10까지 출력하세요. 단, 4,6은 제외하세요.
i = 1

while i <= 10:
    if i not in (4,6):
        print(i)
    
    i += 1

 

score = [90,55,63,78,80]
i = 0

while i < len(score):
    if score[i] >= 60:
        print('합격')
    else:
        print('불합격')
    i += 1
while score:
    v_s = score.pop()    # 제거하는 마지막값
    if v_s >= 60:
        print('점수 : {} => 합격'.format(v_s))
    else:
        print('점수 : {} => 불합격'.format(v_s))

 

[문제] 반복횟수를 입력값으로 받아서 아래 화면과 같이 출력
<출력>
반복횟수를 입력해주세요 : 5
*****
****
***
**
*
i = int(input('반복횟수를 입력해주세요 : '))
while i> 0:
    print('*' * i)
    num -= 1







while i > 0:
    j = i
    
    while j > 0:
        print('*', end='')
        j -= 1
        
    print()
    i -= 1

while i > 0:
    j = i
    v_star = ''
    
    while j > 0:
        v_star += '*'
        j -= 1
        
    print(v_star)
    i -= 1


# 개행문자 '\n' : enter key

dan = 2
i = 1

while i < 10:
    print('{} * {} = {}'.format(dan,i,dan*i))
    i += 1
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18

 

[문제] 2단 ~ 9단 구구단 출력해주세요.
dan = 2

while dan < 10:
    i = 1
    
    while i < 10:
        print('{} * {} = {}'.format(dan,i,dan*i))
        i += 1
    
    print()
    dan += 1

 

[문제] 2단을 가로로 출력해주세요.
<출력>
2 * 1 = 2  2 * 2 = 4  2 * 3 = 6 ...
dan = 2
i = 1

while i < 10:
    print('{} * {} = {}'.format(dan,i,dan*i), end='  ')
    i += 1
dan = 2
i = 1

while i < 10:
    print('{} * {} = {}'.format(dan,i,str(dan*i).ljust(5)), end='')    # ljust() 는 숫자불가. str() 문자형으로 변환하여 사용
    i += 1
dan = 2
i = 1
result = ''

while i < 10:
    result = result + '{} * {} = {}'.format(dan,i,str(dan*i).ljust(5))
    i += 1

result




2. for
리스트, 튜플, 집합, 딕셔너리, 문자열의 첫번째 값부터 마지막 값까지 순서대로
카운터 변수에 입력해서 반복 수행한다.

for 카운터변수 in (리스트, 튜플, 집합, 딕셔너리, 문자열):
    반복수행할 문장

x = ['sql','plsql','python']

for i in x:
    print(i)
sql
plsql
python
for i in 'python':
    print(i)
p
y
t
h
o
n

 

x = [(1,2),(3,4),(5,6)]
for i in x:
    print(i)
(1, 2)
(3, 4)
(5, 6)
for i, j in x:
    print(i, j)
1 2
3 4
5 6
for i, j in x:
    print(i + j)
3
7
11 

 

score = [90,55,63,78,80]

for i in score:
    if i >= 60:
        print('점수 : {} => 합격'.format(i))
    else:
        print('점수 : {} => 불합격'.format(i))
점수 : 90 => 합격
점수 : 55 => 불합격
점수 : 63 => 합격
점수 : 78 => 합격
점수 : 80 => 합격




- range(시작, 끝(미만), 증가분)
증가분 기본값 : 1

range(1,101,1)

for i in range(1,11,1):
    print(i)
list(range(1,101,1))

for i in list(range(1,101,1)):
    print(i)

 

[문제] 1 ~ 100까지의 합을 구하세요.
hap = 0

for i in range(1,101,1):  
    hap += i

hap

 

[문제] 2단~9단 구구단 출력.
for dan in range(2,10,1):
    for i in range(2,10,1):
        print('{} * {} = {}'.format(dan,i,dan*i))
    print()

 

[문제] 리스트 변수에 18,2,3,1,4,5,7,8,9,10,11,15,16 값이 들어있습니다.
    짝수만 합을 구하세요.
1) while

num = [18,2,3,1,4,5,7,8,9,10,11,15,16]
hap = 0
i = 0

while i < len(num):
    if num[i] % 2 == 0:
        hap += num[i]
    
    i += 1
    
print(hap)
num = [18,2,3,1,4,5,7,8,9,10,11,15,16]
hap = 0

while num:
    i = num.pop()    # 제거하는 마지막값
    if i % 2 == 0:
        hap += i
        
print(hap)
2) for

num = [18,2,3,1,4,5,7,8,9,10,11,15,16]
hap = 0

for i in num:
    if i % 2 == 0:
        hap += i

print(hap)

 

[문제] 빈도수를 구하세요.

fruits = ('사과','오렌지','배','귤','포도','바나나','키위','딸기','망고',
          '사과','오렌지','배','귤','포도','바나나','키위','딸기','망고',
          '사과','오렌지','배','귤','포도','바나나','키위','딸기','블루베리',
          '사과','오렌지','배','귤','포도','바나나','키위','딸기','파인애플')
for i in set(fruits):
    if i in fruits:
        print('{} : {}'.format(i,fruits.count(i)))
↓ dic
<<방법1>>
fruits_dict = {}

for i in fruits:
    if i not in fruits_dict.keys():     # key값이 없으면 생성 + 카운트
        fruits_dict[i] = 1
    else:
        fruits_dict[i] += 1             # key값이 없으면 카운트

fruits_dict
<<방법2>>
fruits_dict = {}

for key in set(fruits):        # 중복제외한 튜플을 key값으로 생성
    fruits_dict[key] = 0

for i in fruits:
        fruits_dict[i] += 1     # 동일 key값에 카운트

fruits_dict
<<방법3>>
fruits_dict = {}

for i in fruits:
    p = fruits_dict.get(i,0)    # .get(있으면 value : 1, 없으면 0)
    fruits_dict[i] = p + 1

fruits_dict
<<방법4>>
fruits_dict = {}

import collections
fruits_dict = collections.defaultdict(int)  # <-- fruits_dict.get(i,0)

for i in fruits:
    fruits_dict[i] += 1

fruits_dict
<<방법5>>
fruits_dict = {}

import collections
fruits_dict = collections.Counter(fruits)   # <-- collections.defaultdict(int)

fruits_dict




# 딕셔너리 변수에 키 값을 정렬
type(fruits_dict)   # collections.Counter -> dic
sorted(fruits_dict) # key를 기준으로 오름차순
sorted(fruits_dict, reverse=True)   # key를 기준으로 내림차순


import operator
operator.itemgetter(0) : key 기준
operator.itemgetter(1) : value 기준


# 키를 기준으로 오름차순 정렬
for key, value in sorted(fruits_dict.items()):
    print(key,value)

for key, value in sorted(fruits_dict.items(), key=operator.itemgetter(0)):
    print(key,value)
    
# 키를 기준으로 내림차순 정렬
for key, value in sorted(fruits_dict.items(),reverse=True):
    print(key,value)

for key, value in sorted(fruits_dict.items(),reverse=True,key=operator.itemgetter(0)):
    print(key,value)


# 값을 기준으로 오름차순 정렬
for key, value in sorted(fruits_dict.items(), key=operator.itemgetter(1)):
    print(key,value)

# 값을 기준으로 내림차순 정렬
for key, value in sorted(fruits_dict.items(),reverse=True,key=operator.itemgetter(1)):
    print(key,value)





■ 리스트 내장 객체(List Comprehension)

[표현식 for 변수 in 자료형]

y = []

for i in range(1,11,1):
    y.append(i * 2)

y
y = [i * 2 for i in range(1,11)]
y

 

x = [1,2,3]
y = [4,5,6]

for i in x:
    for j in y:
        print(i * j)



x = [1,2,3]
y = [4,5,6]
result = []

for i in x:
    for j in y:
        result.append(i * j)
        
result
x = [1,2,3]
y = [4,5,6]

result = [i * j for i in x for j in y]

result





[참값 for 변수 in 자료형  if 참조건]

예) 세글자 이상만 변수에 담기
fruits = ['사과','오렌지','배','귤','포도','바나나','키위','딸기','망고']
fruits_lst = []
for i in fruits:
    if len(i) >= 3:
        fruits_lst.append(i)

fruits_lst
[i for i in fruits if len(i) >= 3]

 

예) 음수만 변수에 담기
x = [2,-10,5,-9,5,-3]
negative = []

for i in x:
    if i < 0:
        negative.append(i)

negative
[i for i in x if i < 0]



[참값 if 참조건 else 기본값 for 변수 in 자료형]

x = [2,-10,5,-9,5,-3]
y = [2,'음수',5,'음수',5,'음수']
y = []

for i in x:
    if i < 0:
        y.append('음수')
    else:
        y.append(i)

y
['음수' if i < 0 else i for i in x]

또는

[i if i >= 0 else '음수' for i in x]






■ 함수
- 기능의 프로그램
- 반복되는 코드를 하나로 묶어서 처리하는 방법

def 함수이름(형식매개변수, 형식매개변수, ...):
    수행할 문장
    ...
    [return 값]        # return 문 : 옵션, 수행 후 함수 종료

함수이름()        # 호출

def message():
    print('오늘 하루도 행복하자!!')
    return 'happy'                      # return 문을 수행한 후 함수 종료
    print('오늘 하루도 수고하셨습니다.!!')  # --> 이미 종료되어 미출력

x = message()
x
def hap(arg1, arg2):
    return arg1 + arg2

hap(10,20)      # 30 : 숫자 + 숫자

hap('10','20')  # '1020' : 문자 + 무자


- *가변인수 : 튜플

def 함수이름(*가변인수):
    for i in 가변인수:
        수행할 문장
    [return 값]
def 함수이름(인수1, *가변인수):
    for i in 가변인수:
        수행할 문장
    [return 값]
def hap(*arg):  
    total = 0
    for i in arg:
        total += i
    
    return total
    
hap(10,20,30,40) 
hap(10,20,30,40,50)
def cal(arg1, *arg2):
    for i in arg2:
        if arg1.lower() == 'sum':
            total = 0
            for i in arg2:
                total += i
        elif arg1.lower() == 'multiply':
            total = 1
            for i in arg2:
                total *= i
        else:
            total = None
                
    return total

cal('sum',1,2,3,4,5)
cal('multiply',1,2,3,4,5,6,7)
# 가변인수 형식매개변수에 실제 값을 리스트, 튜플로 전달할 때 꼭 변수 이름 앞에 * 붙이자

x = (1,2,3,4,5)    # 튜플
cal('sum', *x)

x = [1,2,3,4,5]    # 리스트
cal('sum', *x)

 




\n : enter key

for 카운터변수 in (리스트, 튜플, 집합, 딕셔너리, 문자열):

for i, j in x:

range(시작, 끝(미만), 증가분)
for i in range(1,11,1):        # 1~10, +1증

p = fruits_dict.get(i,0)    # .get(있으면 value : 1, 없으면 0)
collections.defaultdict(int)  # <-- fruits_dict.get(i,0)
collections.Counter(fruits)   # <-- collections.defaultdict(int)

sorted(fruits_dict) # key를 기준으로 오름차순
sorted(fruits_dict, reverse=True)   # key를 기준으로 내림차순

import operator
key=operator.itemgetter(0) : key 기준
key=operator.itemgetter(1) : value 기준

sorted(fruits_dict.items(), key=operator.itemgetter(1)):    # value값을 기준으로 오름차순

[표현식 for 변수 in 자료형]
[참값 for 변수 in 자료형  if 참조건]
[참값 if 참조건 else 기본값 for 변수 in 자료형]

def 함수이름(형식매개변수, 형식매개변수, ...):
    ...
    [return 값]

def 함수이름(*가변인수):
    for i in 가변인수:
        ...
    [return 값]

def 함수이름(인수1, *가변인수):
    for i in 가변인수:
        ...
    [return 값]

리스트, 튜플로 전달할 때 꼭 변수 이름 앞에 * 붙이자
cal('sum', *x)