hyeG
2022.04.07
@hyeG님이 새 포스트를 작성했습니다.
[Day12] 2-2. 문장 내 단어 오름차순으로 출력하기
12-2. 합집합, 교집합, 차집합 (1) 합집합: | 또는 union() a = set([1, 2, 3]) b = set([2, 3, 4]) print(a | b) print(a.union(b)) print(b.union(a)) {1, 2, 3, 4} {1, 2, 3, 4} {1, 2, 3, 4} (2) 교집합: & 또는 intersection() a = set([1, 2, 3]) b = set([2, 3, 4]) print(a & b) print(a.intersection(b)) print(b.intersection(a)) {2, 3} {2, 3} {2, 3} (3) 차집합: - 또는 difference() a = set([1, 2, 3]) b = set([2, 3, 4]) print(a - b) print(b - a) print(a.difference(b)) print(b.difference(a)) {1} {4} {1} {4} 12-3. 집합 응용 함수 (1) 데이터 1개 추가하기: 집합.add(데이터) a = set([1, 2, 3]) a.add(-1) a.add(2) print(a) {1, 2, 3, -1} (2) 데이터 여러 개 추가하기: 집합.update(데이터) 추가할 때, 리스트 형태로 [] 삽입 a = set([3, 4, 5]) a.update([3, 5, 7, 8]) print(a) {3, 4, 5, 7, 8} (3) 원하는 값을 찾아 삭제하기: 집합.remove(데이터) a = set([3, 4, 5, 7]) a.remove(3) print(a) {4, 5, 7} ★★ a = input("문장을 입력해 주세요. : ") b = a.split(' ') #split() 공백 기준 a 문자열 분리. b = set(b) b = list(b) #중복제거 b.sort() for i in b:     print(i, end=' ') 문장을 입력해 주세요. : 딸기 당근 참외 당근 포도 당근 당근 딸기 참외 포도
hyeG
2022.04.06
@hyeG님이 새 포스트를 작성했습니다.
[Day11] 3-6. 뒤집은 소수
def num_reverse(n):     rev_n = int(n[:: -1])     return rev_n def num_prime(n): #소수 판별 함수     if n < 2:         return False     for p in range(2, n):         if n % p == 0:             return False     return True print('< \'뒤집은 소수\'판별 프로그램>\n') count = int(input('입력받을 숫자의 개수를 입력해 주세요. : ')) prime_dict = {} for i in range(1, count + 1):     num = input(f'{i}번째 숫자를 입력해 주세요. : ')     rev_num = num_reverse(num)     if num_prime(rev_num):         prime_dict[i] = num print() print('*' * 11, '판별 결과', '*' * 11) if len(prime_dict) == 0:     print('뒤집은 소수는 존재하지 않습니다.') else:     key_list = list(prime_dict.keys())     for k in key_list:         kth_num = prime_dict[k]         kth_rev = num_reverse(kth_num)         print(f'{k}번째로 입력하신 숫자는 뒤집은 소수입니다. ({kth_num} -> {kth_rev})') < '뒤집은 소수'판별 프로그램> 입력받을 숫자의 개수를 입력해 주세요. : 2 1번째 숫자를 입력해 주세요. : 23 2번째 숫자를 입력해 주세요. : 34 *********** 판별 결과 *********** 2번째로 입력하신 숫자는 뒤집은 소수입니다. (34 -> 43)
hyeG
2022.04.05
@hyeG님이 새 포스트를 작성했습니다.
[Day10] 1-11. 입력받은 수의 평균 구하기
Q1. a = ['리', '스', '트', '인덱싱', '하기'] print(a[3]) 인덱싱 Q2. cap = ['tain', 'a', 'me', 'ri', 'ca'] cap[1] = 'A' print(cap) ['tain', 'A', 'me', 'ri', 'ca'] for문 과 리스트 for 변수 in 리스트: print(변수) a = [10, 9, 8, 7, 6] for x in a:     print(x) 10 9 8 7 6 > for문으로 리스트 a의 인덱스 0부터 마지막까지 반복한다. 여기서 변수 x는 리스트 안의 데이터. 따라서 반복문 안에서 x를 출력하면 리스트 a안의 데이터가 순서대로 출력된다. for 인덱스 in range(len(리스트)): print(리스트[인덱스]) a = [10, 9, 8, 7, 6] for i in range(len(a)):     print("인덱스", i, "값", a[i]) 인덱스 0 값 10 인덱스 1 값 9 인덱스 2 값 8 인덱스 3 값 7 인덱스 4 값 6 > len(a)는 리스트 a의 데이터 개수를 반환한다. = for i in range(5) i는 0부터 4에 해당한다. a[i]를 이용해 리스트 안의 데이터를 출력할 수 있다. a = [10, 9, 8, 7, 6] for i in range(len(a)):     a[i] = 'a' print(a) ['a', 'a', 'a', 'a', 'a'] > len(a) 는 리스트 a의 데이터 개수를 반환한다. = for i in range(5) i는 0부터 4에 해당한다. a[i]를 이용해 모든 인덱스에 'a' 저장한다. 이에, 모든 데이터가 'a'로 바뀜. Q1. a = [1, 2, 3, 4, 5] for x in a:     print(x * 2, end=" ") 2 4 6 8 10  Q2. a = [1, 2, 3, 4, 5] for x in range(1, len(a)):     print(a[x], end=" ") 2 3 4 5  > for x in range(1, len(a))에서 x는 인덱스. 리스트 a의 길이가 5이니까, range(1, 5) 와 같고, 따라서 x는 1부터 4까지 반복된다. a[x]를 출력하면, 1~4인 2,3,4,5 출력. (1) 리스트에 데이터 삽입하기: 리스트.append(데이터) a = [] a.append(0) print(a) a.append(1) print(a) [0] [0, 1] (2) 리스트의 원하는 인덱스에 데이터 삽입하기: 리스트.insert(값을 추가할 인덱스, 데이터) a = [1, 2, 3, 4, 5] print(a) a.insert(3,6) print(a) [1, 2, 3, 4, 5] [1, 2, 3, 6, 4, 5] > 리스트 a 의 인덱스 3에 숫자 6을 삽입한다. (3) 인덱스로 데이터 삭제하기: del 리스트[삭제할 값의 인덱스] a = [1, 3, 5, 7, 9] del a[1] print(a) [1, 5, 7, 9] (4) 원하는 값을 찾아 삭제하기: 리스트.remove(삭제할 값) a = [1, 3, 5, 7, 9] a.remove(7) print(a) [1, 3, 5, 9] (5) 리스트 정렬하기: 리스트.sort() a = [-1, 4, 2, 6, 3] a.sort() print(a) [-1, 2, 3, 4, 6] (6) 리스트의 인덱스를 거꾸로 만들기: 리스트.reverse() a = [-1, 4, 2, 6, 3] a.reverse() print(a) [3, 6, 2, 4, -1] Q1. avengers = ['아이언맨', '슈퍼맨', '베트맨', '캡틴아메리카', '토르', '헐크'] del avengers[1:3] print(avengers) ['아이언맨', '캡틴아메리카', '토르', '헐크'] Q2. a = ['captain', 'iton', 'black', 'spider', 'ant'] a.sort() print(a) ['ant', 'black', 'captain', 'iton', 'spider'] 이차원 리스트 array_2d = [["이", "차", "원"], ["리", "스", "트"]] for array in array_2d:     print(array) ['이', '차', '원'] ['리', '스', '트'] array_2d = [["이", "차", "원"], ["리", "스", "트"]] for array in array_2d:     for a in array:         print(a, end =' ')     print() 이 차 원  리 스 트  array_2d = [["이", "차", "원"], ["리", "스", "트"]] print(array_2d[0]) print(array_2d[0][0]) print(array_2d[1][0:2]) ['이', '차', '원'] 이 ['리', '스'] Q1. array_2d = [[10, 20], [30, 40], [50, 60]] print(array_2d[1][1]) 40 Q2. array_2d = [[10, 20, 30], [40, 50, 60], [70, 80, 90]] for i in range(3):     print(array_2d[i][0:2], end =',') [10, 20],[40, 50],[70, 80], 개념다지기 10-1. a = [1,2,3,4,5] for x in range(len(a)):     if x % 2 == 0:         a[x] = 0 print(a) [0, 2, 0, 4, 0] > len(a) = 5 , for문 0부터 4까지 반복된다. if 문은 인덱스를 2로 나눈 나머지 값이 0일 경우 아래 코드 실행. 출력결과에서 인덱스가 0이거나 2의 배수일 경우에 값이 모두 0으로 바뀜. 빈칸은 a[x]=0 10-2. a = [3, 9, 2, 4, 53, 1] a.sort() a.reverse() print(a) [53, 9, 4, 3, 2, 1] 10-3. a = ['iron', 'captain', 'doctor', 'thunder', 'spider', 'ant', 'black'] a.remove("thunder") print(a) ['iron', 'captain', 'doctor', 'spider', 'ant', 'black'] 10-4. a = ["파", "싼", "재", "밌", "어"] a.insert(1, "이") a.append("!") print(a) ['파', '이', '싼', '재', '밌', '어', '!'] ★ num_list = [] sum = 0 for i in range(0, 7):     num_list.append(int(input("정수를 입력하세요. :")))     sum = sum + num_list[i] print("평균 :", sum / 7) 정수를 입력하세요. :10 정수를 입력하세요. :4 정수를 입력하세요. :8 정수를 입력하세요. :9 정수를 입력하세요. :1 정수를 입력하세요. :6 정수를 입력하세요. :4 평균 : 6.0
hyeG
2022.04.04
@hyeG님이 새 포스트를 작성했습니다.
[Day9] 1-10. 이름 출력하기
문자열 인덱싱은 문자열의 문자에 번호를 지정하여 가르키는 것이다. 문자열 인덱싱에서 인덱스 기호 번호는 0부터 시작한다. 문자열 슬라이싱은 문자열을 자르는 것이다. 문자열 포맷 코드, format 함수, f 문자열을 사용해 문자열 포매팅을 할 수 있다. 파이썬에는 문자열 자료형과 관련된 유용한 내장 함수가 많다. (1) 문자열 길이 구하기 : len(문자열) hi = "파이썬 공부는 즐거워!" print(len(hi)) 12 (2) 특정 문자의 개수 세기 : 문자열.count(문자) a = "apple" print(a.count('p')) 2 (3) 특정 문자의 위치 찾기 : 문자열.find(문자) a = "apple" print(a.find('e')) print(a.find("z")) 4 -1 (4) 특정 문자열을 다른 문자열로 변환하기 : 문자열.replace(기존 문자열, 대체 문자열) a = "python is fun" print(a.replace("python", "coding")) coding is fun (5) 특정 문자를 기준으로 문자열 자르기 : 문자열.split(문자) a = "python is fun" print(a.split()) b = "py,thon,is,fun" print(b.split(',')) ['python', 'is', 'fun'] ['py', 'thon', 'is', 'fun'] 개념다지기 9-1. a  ="perfect day" print(len(a[11]))\ 오류 발생. 양수일 경우 왼쪽에서 0부터 시작하고, 음수일 경우 오른쪽에서 -1부터 시작한다. 9-2. fc = "파이썬 재밌다!" print(fc[-3:7]) 밌다 문자열 슬라이싱 기본구조: 변수명[시작 번호 : 끝 번호+1] 9-3. fast = '햄버거, 감자튀김, 콜라, 사이다, 너겟, 비스켓' print(fast.split(",")) ['햄버거', ' 감자튀김', ' 콜라', ' 사이다', ' 너겟', ' 비스켓'] ★ a = '제 이름은 김변수입니다.' print(a[6:9]) print(a[6:-4]) 김변수 김변수
hyeG
2022.04.01
@hyeG님이 새 포스트를 작성했습니다.
[Day8] 1-9. 정수 n까지의 합을 구하는 함수 만들기
개념다지기 8-1. def call():     print("여보세요") call() 여보세요 8-2. say() def say():     print("안녕하세요!") 오류가 난 이유: 함수의 호출과 정의의 순서가 잘못되었다. 선 정의, 후 호출 8-3. def say():     print("안녕하세요?") say() 동일한 실행결과 def say():     return "안녕하세요?" a = say() print(a) > 문제에서 주어진 코드를 실행하면 say() 함수 내에서 "안녕하세요?"가 출력된다. 동일한 결과를 나타낸 것에서는 문자열을 반환하고 이를 변수에 저장해 출력했다. 8-4. def power(a, b):     c = a ** b     return c result = power(3, 4) print(result) > 함수를 정의할 때는 함수 이름 앞에 def를 붙여야한다. c 에 연산 결과를 저장했고, 함수를 호출한 결과가 연산 결과 이므로, c 를 반환해야한다. 마지막 코드에서 result 를 출력했을 때 함수 호출로 인한 연산 결과가 출렸됐다. 따라서 그 전에 먼저 result 변수를 만들고 거기에 함수 반환값을 저장했다. 8-5. def isEven(x):     return x % 2 == 0 num = int(input("숫자를 입력하세요. :")) print("짝수인가요?") print(isEven(num)) 숫자를 입력하세요. :24 짝수인가요? True ★ def getsum(num):     result = 0     for i in range(num + 1):         result += i     return result n = int(input("정수를 입력하세요. :")) sum = getsum(n) print("0부터", n, "까지의 합계는", sum, "입니다.") 정수를 입력하세요. :10 0부터 10 까지의 합계는 55 입니다.
hyeG
2022.03.31
@hyeG님이 새 포스트를 작성했습니다.
[Day7] 1-8. 짝수이면서 7의 배수는 아닌 수 찾기
반복문 for 반복문 : 원하는 횟수만큼 반복시킬 때 사용한다. for 변수 in range(시작 숫자, 끝나는 숫자): 실행문 반복문도 조건문과 마찬가지로 콜론(:) 이후의 문장 앞에 들여쓰기를 해야한다. 해석) 변수가 시작 숫자부터 끝나는 숫자-1 까지 1씩 증가하는 동안 실행문을 반복한다. for i in range(1, 11):     print(i) 1 2 3 4 5 6 7 8 9 10 range(끝나는 숫자) : 0부터 끝나는 숫자-1 까지 1간격으로 range(시작 숫자, 끝나는 숫자) : 시작 숫자부터 끝나는 숫자-1 까지 1간격으로 range(시작 숫자, 끝나는 숫자, 간격) : 시작 숫자부터 끝나는 숫자까지 지정된 간격으로 *간격은 음수/양수 모두 가능하다. while 조건문: if 문처럼 조건식이 참일 경우 실행문이 실행된다. 계속 참이면 무한/ while 조건식: 실행문 예시) for x in range(1, 4): print(x) 1 2 3 num = 0 while num < 10:     num = num + 2     print(num) 2 4 6 8 10 개념다지기 7-1 count = 0 while count < 3:     print("안녕")     count = count + 1 안녕 안녕 안녕 7-2 for i in range(4, -5, -2):     print(i) 4 2 0 -2 -4 7-3 틀렸당 sum = 0 i = 1 while i < 10:     sum += i     i += 1 print("합계", sum) 합계 45 7-4 fact = 1 for i in range(1, 6):     fact = fact * i print(fact) 120 ★ count = 0 for i in range(1, 101):     if i % 2 == 0 and i % 7 != 0:         count = count + 1 print(count) 43 for 반복문 이용했다. 1부터 100까지니까 range(1, 101) 써주고, 짝수는 2로 나누었을 때 나머지가 0, 7의 배수는 7로 나누었을 떄 나머지가 0이니 각각 맞는 것과 아닌 것의 코드 입력해줬다.
hyeG
2022.03.30
@hyeG님이 새 포스트를 작성했습니다.
[Day6] 1-7. BMI 결과보기
height = int(input("키를 입력하세요. :")) weight = int(input("몸무게를 입력하세요. :")) BMI = weight / (height *  height ) if BMI >= 25:     print("BMI 지수가", BMI, "이므로 비만입니다.") elif 25 > BMI >= 23:     print("BMI 지수가", BMI, "이므로 과체중입니다.") elif 23 > BMI >= 18.5:     print("BMI 지수가", BMI, "이므로 정상체중입니다.") else:     print("BMI 지수가", BMI, "이므로 저체중입니다.") 키를 입력하세요. :185 몸무게를 입력하세요. :60 BMI 지수가 0.0017531044558071584 이므로 저체중입니다. BMI 지수가 저게 아닌데 .. 키 단위가 m라서 * 0.01 해야된다고 한다 ~ 수정 ~~~ height = int(input("키를 입력하세요. :")) weight = int(input("몸무게를 입력하세요. :")) BMI = weight / (height * 0.01 * height * 0.01 ) if BMI >= 25:     print("BMI 지수가", BMI, "이므로 비만입니다.") elif 25 > BMI >= 23:     print("BMI 지수가", BMI, "이므로 과체중입니다.") elif 23 > BMI >= 18.5:     print("BMI 지수가", BMI, "이므로 정상체중입니다.") else:     print("BMI 지수가", BMI, "이므로 저체중입니다.") 키를 입력하세요. :185 몸무게를 입력하세요. :60 BMI 지수가 17.531044558071585 이므로 저체중입니다.
hyeG
2022.03.30
@hyeG님이 새 포스트를 작성했습니다.
[Day6] 1-6. 합격과 불합격 통보하기
비교연산자 a > b a가 b보다 크다 a < b a가 b보다 작다 a >= b a가 b보다 크거나 같다 a <= b a가 b보다 작거나 같다 a == b a와 b가 같다 a != b a와 b가 같지 않다 조건문 작성 시, 들여쓰기 (indent) 유의할 것. money = 3000 if money >= 5000: print("결제가 가능합니다.") else: print("결제가 불가능합니다.") 결제가 불가능합니다. 파이썬은 공백에 예민하다. 콜론(:) 다음으로 들여쓰기 하고 나서 문장을 적어야 한다. 그래야 그 문장이 조건문에 속한 코드라고 인식한다. 그렇지 않을 경우 작동 안한다. if 가 여러 개 일 경우 elif (else if 아니라 만약)을 사용한다. elif 는 if 와 else 사이에 적어야한다. 그렇지 않으면 오류가 발생한다. num1 = int(input("첫 번째 과목의 점수를 입력하세요. :")) num2 = int(input("두 번째 과목의 점수를 입력하세요. :")) num3 = int(input("세 번째 과목의 점수를 입력하세요. :")) average = (num1 + num2 + num3) / 3 if average >= 50:     print("평균 점수는", average, "점으로 합격입니다.") else:     print("평균 점수는", average, "점으로 불합격입니다.") 첫 번째 과목의 점수를 입력하세요. :65 두 번째 과목의 점수를 입력하세요. :75 세 번째 과목의 점수를 입력하세요. :44 평균 점수는 61.333333333333336 점으로 합격입니다. int() 사용해서 정수형으로 변환했다. 조건문 한 번 사용으로 if 와 else 사용하고 elif 굳이.
hyeG
2022.03.29
@hyeG님이 새 포스트를 작성했습니다.
[Day5] 1-5. 생년월일로 연도, 월, 일 출력하기
프로그래밍은 입력 (input)을 받아 출력 (output)을 만들어 내는 과정이다. input()으로 입력받은 모든 것은 문자열'str' 로 저장된다. 오류) 숫자형 데이터를 형 변환 없이 + 기호로 문자열과 함께 출력하면 오류 발생 my_age = 32 print("안녕 나는 " + my_age + "살이고 파이썬 공부 중이야!")     print("안녕 나는 " + my_age + "살이고 파이썬 공부 중이야!") TypeError: can only concatenate str (not "int") to str my_age = 32 print("안녕 나는 " + str(my_age) + "살이고 파이썬 공부 중이야!") 안녕 나는 32살이고 파이썬 공부 중이야! 챕터 1 - 난이도 하(★) 프로젝트 p.262 birth = int(input("생년월일을 입력해 주세요. : ")) year = birth // 10000 month = (birth % 10000) // 100 day = birth % 100 print(year,"년", month, "월", day, "일 생이네요!") 생년월일을 입력해 주세요. : 20220329 2022 년 3 월 29 일 생이네요! 문자열 input()을 int() 정수 자료형으로 변환하여 연산자를 이용하여 구한다.
hyeG
2022.03.28
@hyeG님이 새 포스트를 작성했습니다.
[Day4] 1-4. 어떻게 돈을 내야 할까?
산술연산자 연산: 프로그램에서 수나 식을 계산해서 결과를 도출하는 행위 연산자: 계산할 때 사용되는 기호 (+, - 등), 파이썬에는 산술, 대입, 관계, 논리 연산자 있다. 기본 나눗셈(/)의 결과는 실수형 버림 나눗셈(//), 모듈로(%) 연산자의 결과는 정수형. // 몫 % 나머지 거듭제곱(**) 연산자 ★ Review ★ 정답을 찾아가는 과정 뭔가 심각하게 잘못되었다. 실행 결과 똑같이 나와야하는데 내 맘대로 해석하고 내맘대로 만들기 .. 그리고 매우 단조로움. 따라해도 문제네. 따라하긴 했으나, 중간에 모듈로 연산자가 누락되어 동전 개수 심각해졌다. 생각을 좀 더 논리적으로 해야한다. 소금쟁이처럼 둥둥 떠다니는 내 논리력 .... 최종_진짜 최종_이게 진짜.
hyeG
2022.03.25
@hyeG님이 새 포스트를 작성했습니다.
[Day3] 1-3. 자료형 마스터
변수 (Variable) 데이터를 저장하기 위해 컴퓨터 안에 만들어 놓은 방 (a.k.a. 메모리 공간) 프로그래밍에서 =는 오른쪽의 값을 왼쪽에 저장(대입)한다는 뜻 type() 함수를 사용해 데이터의 자료형 확인 가능 name="사과" print(name) PS C:\Users\na96h> & C:/Users/na96h/AppData/Local/Programs/Python/Python310/python.exe "c:/Users/na96h/OneDrive/바탕 화면/Python/변수.py" 사과 숫자 자료형 정수형 (int): 소수점이 없는 정수. 수를 세는 등 정수가 필요한 계산에 사용 실수형 (float): 소수점을 포함한 정수. 분수나 정확한 측정값, 평균에 사용 불 자료형 print(2>3) print(2<9) print(True) print(False) print(type(True)) print(type(False)) PS C:\Users\na96h> & C:/Users/na96h/AppData/Local/Programs/Python/Python310/python.exe "c:/Users/na96h/OneDrive/바탕 화면/Python/변수.py" False True True False <class 'bool'> <class 'bool'> 변수 이름 규칙 ( 코딩 컨벤션 ) * 변수 이름 숫자로 시작 불가 (중간이나 뒤에는 노상관) * 변수 이름 공백 사용 불가 * 예약어는 변수 이름으로 사용 불가 (예약어: 파이썬이 선점한 단어. True, False 등) - 변수 이름은 스네이크 케이스 규칙에 따라 짓는다. : classStudentName / ClassStudentName / class-student-name / class_student_name - 변수 이름은 저장할 데이터의 의미를 담아 짓는다. p = "변수 이름도" y = 2 th = "렇게" o = 4 n = "마음대로" print(p, y, th, o, n) PS C:\Users\na96h> & C:/Users/na96h/AppData/Local/Programs/Python/Python310/python.exe "c:/Users/na96h/OneDrive/바탕 화면/Python/변수.py" 변수 이름도 2 렇게 4 마음대로 ★ Review ★ 너무 재밌다. 내가 생각한 대로 만들 수 있으니까 신기하고 계속 해보려고 고민하게 된다. 그나저나 내가 만든 변수가 자동완성으로 떡하니 맨 위에 제시되더라. 파이썬... 멋진녀석...
hyeG
2022.03.24
@hyeG님이 새 포스트를 작성했습니다.
[Day2] 1-2. 출력 프로그램 만들기
문자열 출력 print 큰따옴표 또는 작은따옴표로 감싸야 문자열로 인식된다. 문자열은 쉼표(,)로 구분해 출력하면 띄어쓰기가 된다. 여러 줄 출력할 때는 print()의 괄호 안에서 따옴표 3쌍을 사용한다. 한 줄 주석은 샵(#), 여러 줄 주석은 따옴표 3쌍을 사용한다. end 옵션은 출력문 마지막에 출력될 문자를 지정한다. sep 옵션은 쉼표로 구분된 문자열 사이에 구분자로 사용할 문자를 지정한다. ★ 오늘의 포트폴리오 print("<오늘의 해야 할 일>", "---------------", "파이썬 공부하기 [v]", "해외출장 준비하기 [v]", "스쿼트 100회 [ ]", sep="\n") ★ end 옵션 입력하면 자동 줄 바꿈이 사라진다. 여러 줄 출력할 때는 3쌍의 쌍따옴표 사용된다. 쌍따옴표 다음 문자열 위치에 따라 이전 문자열과의 줄 바꿈이 정해지는 걸 기억하자.