-
'''* 반복문 for ~ in
- 파이썬의 for문은 시퀀스 자료형 내부의 데이터를 순차적으로 꺼내서반복 작업하는 반복문입니다.
- 시퀀스 자료형이란 여러 개의 값들을 모아놓은 집합 형태를 말하며,대표적으로 문자열, 리스트 등이 있습니다.
리스트란 [] 안에 데이터들을 순차적으로 나열해 놓은 일종의 순차적 배열입니다.
for 제어변수 in 시퀀스 자료형:반복실행문'''
for num in [1,2,3,4,5,6,7,8,9,10]:print('반복문', num)
total = 0for n in [1,2,3,4,5,6,7,8,9,10]:total += n
print(total)'''* 내장함수 range()
- 순차적으로 증가하는 정수의 순차적 자료형을 만들 때,대괄호 안에 데이터들을 콤마로 일일히 나열하는 것은 한계가 있기 때문에,range()함수를 이용해 보다 쉽게 순차형 반복 범위를 지정할 수 있습니다.
ex) range(begin, end, step)- begin 값은 포함되지만(이상), end 값이 포함되지 않습니다. (미만)'''
list1 = [1,2,3,4,5,6,7,8,9,10]print(list1)
list2 = list(range(1, 11, 1))
list3 = list(range(4, 15))print(list3)
# range 함수 괄호 안에 값을 한 개만 두면 end로 인식합니다.# begin 값은 자동으로 0으로 처리됩니다.list4 = list(range(5))print(list4)
print('-' * 40)
# 1~100까지의 누적합을 구하느 ㄴ로직total = 0;for n in range(1, 101):total += n
print('1~100까지의 누적합: ', total)
'''- 정수를 하나 입력받아서 1부터 해당 수까지의모든 소수를 가로로 출력하고, 그 소수의 개수를출력하시면 됩니다.
ex) 입력값: 12소수: 2, 3, 5, 7, 11개수: 5개'''num = int(input('점수를 입력하세요.'))count = 0
for n in range(1, num+1): # 미만이니까 +1cnt = 0 # 소수판별을 위해 나누어 떨어진 횟수를 체크할 변수입니다.for i in range(1, n+1):if n % i == 0:cnt += 1# 소수 판별이 끝나고 나서,if cnt ==2:count += 1print(n, end='\n')
print('\n소수들의 개수:', count, '개')'''
'''
'''* 파이썬의 블록구조 표현
- 타 언어는 중괄호 ({})로 종속 구조를 표현할 때파이썬은 중괄호를 작성하지 않습니다.
- 그 대신 콜론(:)과 들여쓰기로 블록구조를 표현합니다.
- if문 뿐만이 아니라 코드의 종속구조를 나타내는 모든 문법에서(반복문, 함수 선언...) 콜론과 들여쓰기를 사용합니다.파이썬의 권장 들여쓰기 횟수는 스페이스바 4회입니다.들여쓰기는 모든 횟수가 통일되어야 합니다.콜론(:) 이후에는 반드시 줄 개행이 진행되어야 합니다.''''''* 다중 분기 조건문 if ~ elif ~ else
- 타 언어에서 else if로 작성하는 키워드를파이썬에서는 단축해서 elif로 작성합니다.문법의 의미는 똑같습니다.
- 첫번째 조건식의 결과가 False일 경우 아래에 있는elif문의 조건식을 새롭게 테스트하여 해당 조건이 True일 경우elif에 종속된 코드를 실행합니다.개수에 제한은 없습니다.'''
age = int(input('나이: '))
if age >= 20:print('성인입니다.')elif age >= 17:print('고등학생입니다.')elif age >= 14:print('중학생입니다.')elif age >= 8:print('초등학생입니다.')else:print('미취학 아동입니다.')
'''* 중첩 if문중첩 if문은 if 블록 내부에 새로운 if문이 있는 형태입니다.첫 번째 조건식의 결과가 True인 경우 한 번 더 조건을 설정할 때 사용합니다.'''
height = float(input('키를 입력하세요: '))
if height >= 140:age = int(input('나이를 입력하세요: '))if age >= 8:print('놀이기구 탑승이 가능합니다.')else:print('나이가 8세 미만입니다.')print('놀이기구 탑승이 불가합니다.')else:print('키가 140 미만입니다.')print('놀이기구 탑승이 불가합니다.')'''&, and 연산자는 좌항과 우항의 논리값이 모두 True인 경우에만 전체 결과를True로 도출합니다.'''
a = 6
if a > 1 and a < 10:print('a는 1보다 크고, 10보다는 작습니다.')else:print('a는 1~10 사이의 숫자가 아닙니다.')
# 파이썬은 위의 식을 연결해서도 작성할 수 있습니다.if 1 < a < 10:print('ok!')
'''|, or 연산자는 좌항과 우항의 논리값이 한 쪽만 True여도전체 결과를 True로 도출합니다.''''''* 단축 평가 연산 (short circuit operate: and, or)- 좌항에서 전체 결과가 판명났을 경우,우항 연산을 진행하지 않는 연산자입니다.'''
c = 0
if(c == 0) or (10 / c == 5): # 우항에서 100% 에러가 납니다.print('통과!')
# not 연산자는 논리값을 반전시킵니다.'''- c언어에서는 정수 0을 False로 해석하고, 0이 아닌 모든 정수를 True로 해석합니다.(논리형 타입이 없기 때문입니다.)파이썬에서도 C의 논리해석을 그대로 적용시킬 수 있습니다.'''
apple = 0if not apple:print('사과가 하나도 없습니다.')else:print('사과가' , apple, '개 있습니다.')'''* 반복문 (loop)
- 반복문은 유사한 명령을 반복해서 실행하는 제어문입니다.파이썬의 반복문 키워드는 while, for ~ in 이 있습니다.'''
# while문에 필요한 3요소: 제어변수(begin), 조건식(end), 증감식(step)
from re import I
i = 1total = 0
while i <= 10: #endtotal += ii += 1 #파이썬은 증감 연산자가 없습니다. (++, --)
print('1부터 10까지의 누적합: ', total)
print('-' * 30)
'''- 정수를 2개 (x, y) 입력받아 x부터 y까지의누적합계를 while을 사용하여 구하는 코드를 만드세요.ex) "x부터 y까지의 누적합계: z"
- 처음에는 x가 무조건 작은 값이 들어올 것이다 라고 가정하고작성하세요.그 후, 만약 x가 y보다 더 큰 값이 들어왔을 때는,어떻게 대처할 지 생각해 보세요. (while을 2번쓰는 건 아니에요~)'''
x = int(input('정수1: '))y = int(input('정수2: '))
total = 0n = x # x가 무조건 작을 것이기 때문에 n이 begin이 될 것입니다.
while n <= y:total += nn += 1
print(x, '~', y, '까지의 누적 합계: ', total)
'''* 문자열 대체 메서드 replace()- 특정 단어를 모두 찾아서 새로운 단어로 일괄 교체하는 메서드'''s1 = '파이썬은 문자열을 관리하는 \수많은 메서드들을 제공합니다! 파이썬'
print(s1.replace('파이썬', 'python'))print(s1.replace('!', ''))
s2 = '아침부터 커피를 마셨는데, 점심 먹고 커피를 또 마셨습니다. \그런데 저녁에 커피를 또 마시면 오늘 커피를 몇 잔 마신 걸까요?'
print(s2.replace('커피', '소주', 2))'''* 문자열 공백 제거 메서드1. lstrip(): 문자열의 왼쪽 공백만 제거2. rstrip(): 문자열의 오른쪽 공백만 제거3. strip(): 문자열의 양쪽 공백을 제거'''user_id = input('아이디: ')print(user_id + '님 안녕하세요~')print(user_id.lstrip() + '님 안녕하세요~')print(user_id.rstrip() + '님 안녕하세요~')print(user_id.strip() + '님 안녕하세요~')'''* 문자열 알파벳 형태 변경 메서드1. lower(): 영문 알파벳을 모두 소문자로 변경합니다.2. upper(): 영문 알파벳을 모두 대문자로 변경합니다.
3. swapcase(): 영문 대소문자를 각각 반대로 변경합니다.4. capitalize(): 문장의 맨 첫 글자만 대문자, 나머지는 소문자로 변경합니다.5. title(): 각 단어의 맨 첫글자만 대문자, 나머지는 소문자로 변경합니다.'''
s = 'GOOD MORning!!! my name is LEE'
print(s)print(s.lower())print(s.upper())print(s.swapcase())print(s.capitalize())print(s.title())'''
- split() 메서드는 구분자를 기준으로 문자열을 분할해서리스트에 담아서 반환합니다.'''s1 = '떡볶이 김말이 닭강정'print(s1.split()) # 괄호 안을 비우면 공백을 구분자로 하여 분할합니다.
s2 = '홍길동 | 대한출판사 | 2022년 2월'data = s2.split(' | ')print('저자: ' + data[0])print('출판사: ' + data[1])print('출판일: ' + data[2])'''* 리스트 (list)
- 리스트는 여러 개의 값을 집합적으로 저장하기 위해사용하는 파이썬의 자료형입니다.
- 다른 언어의 배열과 유사한 개념이며, 실제로 배열과유사한 방식으로 데이터가 관리됩니다.
- [] (대괄호) 안에 요소를 콤마로 구분하여 나열합니다.'''
x = [5, 6, 10, 'a']print(type(x))
for c in x:print(c)
print('리스트의 길이: ', len(x))'''* 리스트의 내부 요소 다루기
- 리스트는 시퀀스 자료형이기 때문에 인덱스를 통한 요소들의 관리가 가능합니다.- 리스트를 다룰 때는 문자열과 비슷한 방식을 사용합니다.'''
pokemon = ['피카츄', '라이츄', '파이리', '꼬부기' , '버터풀']
print(pokemon[2])print(pokemon[1][2])print(pokemon[4][:2])
# 리스트 슬라이싱 -> 리스트 데이터[begin:end:step]nums = [0,1,2,3,4,5,6,7,8,9]
print(nums[2:5:1])print(nums[:4])print(nums[1:7:2])
# 리스트는 인덱싱을 사용하여 변수처럼 내부의 값을 변경할 수 있습니다.print('-' * 40)print(nums)
nums[2] = 34print(nums)
nums[3] = nums[8]print(nums)
'''- 문자열은 상수 형태로 저장되는 고정형 리스트입니다.- 따라서 인덱싱이나 슬라이싱을 통해 값의 복사본을 활용하는 것은 가능하지만,영역에 직접 접근해서 내부의 값을 편집할 수는 없습니다. (immutable)'''
s = 'python'# s[2] = 'x' (x)
# unpacking: 리스트 내부 요소를 다시 변수에 저장합니다.# pokemon = ['피카츄', '라이츄', '파이리', '꼬부기' , '버터풀']'''p = pokemon[0]r = pokemon[1]c = pokemon[2]s = pokemon[3]b = pokemon[4]'''
# 좌항의 변수의 개수와 우항의 리스트의 요소의 개수가 일치한다면# 자동으로 변수에 리스트 내부 요소의 값들이 할당됩니다.p, r, c, s, b = pokemonprint(p,r,c,s,b)
# 빈 리스트 만들기list1 = []
list2 = list()print(list2)
'''* 리스트에 데이터를 추가하는 메서드
1. append(): 요소를 리스트의 맨 마지막에 추가합니다.2. insert(): 요소를 리스트의 특정 위치에 삽입합니다.'''
nums = [1,3,5,7]
nums.append(9)print(nums)nums.append('안녕')print(nums)
# insert(index, value)nums.insert(3, 4)print(nums)