python 기초 #3

16. 여러가지 메소드들

reverse 메소드

numbers = [5, 3, 7, 1]
numbers.reverse()
print(numbers)
-> [1, 7, 3, 5]

index 메소드

some_list.index(x)는some_list에서 x의 값을 갖고 있는 원소의 인덱스를 리턴해줍니다.
members = ["영훈", "윤수", "태호", "혜린"]
print(members.index("윤수"))          -> 1
print(members.index("태호"))          -> 2

remove 메소드

some_list.remove(x)는some_list에서 첫 번째로 x의 값을 갖고 있는 원소를 삭제해줍니다.
fruits = ["딸기", "당근", "파인애플", "수박", "참외", "메론"]
fruits.remove("파인애플")
print(fruits)
-> ['딸기', '당근', '수박', '참외', '메론']

17. for반복문 & range메소드

for 반복문

for 변수 in 리스트(또는 튜플, 문자열):
    수행할 문장1
    수행할 문장2
    ...

#e.g)
test_list = ['one', 'two', 'three'] 
for i in test_list: 
    print(i)
>>>
one 
two 
three
-----------------
#e.g 2)
marks = [90, 25, 67, 45, 80]

number = 0 
for mark in marks: 
    number = number +1 
    if mark < 60:
        continue 
    print("%d번 학생 축하합니다. 합격입니다. " % number)

range 함수

간편하고 깔끔. 메모리 효율성 또한 good

파라미터 2개 사용
→ for i in range(start, stop):
print(i)
→ start부터 stop - 1 까지의 범위

파라미터 1개 사용
→ for i in range(stop):
print(i)
→ 0부터 stop - 1 까지의 범위

파라미터 3개 사용
→ for i in range(start, stop, step):
print(i)
→ start부터 stop - 1 까지의 범위, 간격 step


18. 실습과제(인덱스, 원소 출력 & 거듭제곱 & 구구단 & 피타고라스)

numbers라는 리스트가 주어졌습니다.
for문과 range 함수를 사용하여, numbers의 인덱스와 원소를 출력해 보세요.
0 2
1 3
2 5
3 7
4 11
5 13
6 17
7 19
8 23
9 29
10 31
---------------------------------
numbers = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
for i in range(len(numbers)):
    print(i, numbers[i])

04. 거듭제곱

"2의 n제곱"을 출력하는 프로그램을 만들려고 합니다.
코드를 실행하면 아래와 같이 2^0 = 1부터 2^10 = 1024까지 출력되어야 합니다.
2^0 = 1
2^1 = 2
2^2 = 4
.
.
.
2^10 = 1024
----------------------------------
for i in range(11):
    print("{}^{} = {}".format(2, i, 2 ** i))

05. for문으로 구구단

구구단 프로그램을 while문이 아닌 for문을 사용해서 만들어 보세요.
코드를 실행하면, 아래와 같이 출력되어야 합니다.
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
.
.
.
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81
----------------------------------
for i in range(1, 10):
    for j in range(1, 10):
        print("{} * {} = {}".format(i, j, i * j))

06. 피타고라스 삼조

a < b < c라고 가정할 때 a + b + c = 1000을 만족하는 피타고라스 삼조
(a, b, c)는 단 하나이다. 이 경우, a * b * c 는 얼마인가?
31875000
----------------------------------
for a in range(1, 333):
    for b in range(1, 400):
        c = 1000 - a - b
        if a * a + b * b == c * c and a < b < c:
            print(a * b * c)

19. 과제(리스트 뒤집기)

.sort(reverse = True)기능      for문으로 구현하기
----------------------------------
numbers = [2, 3, 5, 7, 11, 13, 17, 19]

# 튜플 사용
for left in range(len(numbers) // 2):
    # 인덱스 left와 대칭인 인덱스 right 계산    
    right = len(numbers) - left - 1

    # 위치 바꾸기
    numbers[right], numbers[left] = numbers[left], numbers[right]

print("뒤집어진 리스트: " + str(numbers))
-----------------------------------
numbers = [2, 3, 5, 7, 11, 13, 17, 19]

# 일반 함수 사용
for left in range(len(numbers) // 2):
    # 인덱스 left와 대칭인 인덱스 right 계산
    right = len(numbers) - left - 1  
    
    # 위치 바꾸기
    numbers[right], numbers[left] = numbers[left], numbers[right]

print("뒤집어진 리스트: " + str(numbers))

20. 사전 & 사전 뒤집기

key-value pair (키 - 값 쌍)
1. 리스트와 달리 순서라는 개념 X.
2. 사전의 키는 정수일 필요 X.

my_condition = {
    '공복도': 'hungry',
    '정서': 'happy',
    '피로도': -3
}

# 새로운 키- 값 추가.
my_condition['허리통증'] = 7

# 값 확인
print(my_condition.values())
>>>dict_values['hungry', 'happy', -3, 7]

# 특정 값 확인
print('hungry' in my_condition.values())
>>>True

# 리스트처럼 값 확인
for value in my_condition.values():
	  print(value)
>>>hungry
	 happy
   -3
   7

# 키 확인
print(my_condition.keys())
>>>dict_keys['공복도', '정서', '피로도', '허리통증']

# 키 확인
for key in my_condition.keys():
	  print(key)
>>>공복도
   정서
   피로도
   허리통증

# 모든 쌍 출력
for key in my_condition.keys():
	  value = my_condition[key]
		print(key, value)
>>>공복도 hungry
   정서 happy
   피로도 -3
   허리통증 7
>>>	# items 사용하여 간소화할 수 잇음
for key, value in my_condition.items():
    print(key, value)

# 언어 사전의 단어와 뜻을 서로 바꿔주는 함수
def reverse_dict(dict):
    new_dict = {}  # 새로운 사전
    
    # dict의 key와 value를 뒤집어서 new_dict에 저장
    for key, value in dict.items():
        new_dict[value] = key
    
    return new_dict  # 변환한 새로운 사전 리턴

# 영-한 단어장
vocab = {
    'sanitizer': '살균제',
    'ambition': '야망',
    'conscience': '양심',
    'civilization': '문명',
    'privilege': '특권',
    'principles': '원칙'
}

# 기존 단어장 출력
print("영-한 단어장\n{}\n".format(vocab))

# 변환된 단어장 출력
reversed_vocab = reverse_dict(vocab)
print("한-영 단어장\n{}".format(reversed_vocab))

# 투표 수 세기

# 투표 결과 리스트
votes = ['김영자', '강승기', '최만수', '김영자', '강승기', '강승기', '최만수', '김영자', \
'최만수', '김영자', '최만수', '김영자', '김영자', '최만수', '최만수', '최만수', '강승기', \
'강승기', '김영자', '김영자', '최만수', '김영자', '김영자', '강승기', '김영자']

# 후보별 득표수 사전
vote_counter = {}

# 리스트 votes를 이용해서 사전 vote_counter를 정리하기
for name in votes:
    # 코드를 작성하세요.
		if name not in vote_counter:
				vote_counter[name] = 1
		else:
				vote_counter[name] += 1

# 후보별 득표수 출력
print(vote_counter)

21. Aliasing

alias: 가명

x = [2, 3, 5, 7, 9]
y = x

y[2] = 11
x[4] = 13

print(y)
>>> [2, 3, 11, 7, 13]

-------------------------------------------
x = ["이가훈", "김민주", "최고은", "우설희", "최규호"]
y = list(x)

y[0] = "강귀윤"
x[1] = "김원일"

print(x)
"이가훈", "김원일", "최고은", "우설희", "최규호"

22. Mutable & Sequential

Python 공부 (8) - mutable(가변) 과 sequential(순차적)

mutable type: 리스트, 딕셔너리, 집합 자료형
→값을 변경할 수 있는 기능들이 지원.
ex) 리스트의 append 함수; 집합의 add 함수 등

immutable type: 숫자형, 문자열, 튜플 자료형


23. List VS String

공통점

  1. 인덱싱
  2. for 반복문
  3. 슬라이싱
  4. 덧셈 연산
  5. len 함수

차이점

  1. Mutable(list) VS Immutable(string)
  • #24 05. 자릿수 합 구하기
    1. sum_digit 함수를 작성한다.
    2. sum_digit(1)부터 sum_digit(1000)까지의 합을 구해서 출력한다.
    # 자리수 합 리턴
    def sum_digit(num):
        total = 0
        str_num = str(num)
        
        for digit in str_num:
            total += int(digit)

        return total

    ''' 
    	    for digit in str_num:
            total += int(digit)
        --------- 동일 ---------
    		  for i in range(len(str_num)):
            digit = str_num[i]
            total += int(digit)
    '''

    # sum_digit(1)부터 sum_digit(1000)까지의 합 구하기
    digit_total = 0
    for i in range(1, 1001):
        digit_total += sum_digit(i)

    print(digit_total)

좋은 웹페이지 즐겨찾기