파이썬 19

[Python 기초] 문제 11. 고급 단어장

문제 random 모듈과 사전(dictionary)을 이용해서 vocabulary.txt의 단어들을 랜덤한 순서로 내도록 프로그램을 바꿔 보세요. 같은 단어를 여러번 물어봐도 괜찮고, 프로그램은 사용자가 알파벳 q를 입력할 때까지 계속 실행됩니다. 힌트 우선 vocabulary.txt 파일을 읽고, 파이썬 사전을 채워 넣어야 한다. 영어 단어 목록을 받아오려면 파이썬 사전의 keys를 사용하면 된다. random 모듈의 randint 함수를 이용해서 랜덤한 인덱스를 받는다. 그 랜덤한 인덱스를 통해 vocab.keys() 리스트에서 단어를 받는다. 답안 import random # 사전 만들기 vocab = {} with open('vocabulary.txt', 'r') as f: for line in ..

[Python 기초] 문제 10. 단어장 만들기

문제 이 프로그램은 콘솔로 영어 단어와 한국어 뜻을 받고, vocabulary.txt라는 새로운 텍스트 파일에 단어와 뜻을 정리하는데요. 사용자가 새로운 단어와 뜻을 입력할 때마다 vocabulary.txt에 작성되는 것입니다. 사용자는 반복적으로 단어와 뜻을 입력하는데, 단어나 뜻으로 q를 입력하는 순간 프로그램은 즉시 종료됩니다. 사용자가 q를 입력하고 나면 파일은 더 이상 바뀌지 않아야 합니다. 힌트 파일을 쓰기 위해서는 먼저 파일을 열어야 한다. 글을 작성하기 위해서는 단어와 뜻을 반복적으로 받아야 한다. 답안 with open('vocabulary.txt', 'w') as f: while True: eng_word = input("영어 단어를 입력하세요: ") if eng_word == 'q':..

[Python 기초] 8. 사용자 입력 받기&파일 읽고 쓰기

1. input 사용자 입력을 받는 함수 사용자 입력은 항상 문자열이므로 별도 변환 필요 x = int(input("숫자를 입력하세요: ")) print(x + 5) # 출력값: 7 2. 파일 읽기 같은 폴더에 있을 경우, 파일 이름만 써도 불러오기 가능 같은 폴더에 없을 경우, 경로 기재 필요 with open('chicken.txt', 'r') as f: # r은 read의 약자 # 불러온 파일을 'f'에 저장 # for문을 쓰면 list와 비슷하게 사용할 수 있다 3. strip 파이썬에서 엔터는 '\n'으로 표현 strip: 앞 뒤로 있는 화이트 스페이스를 없애준다 (줄 사이의 공백 제거) with open('chicken.txt'. 'r') as f: for line in f: print(lin..

[Python 기초] 7. 파이썬 모듈 맛보기

1. 모듈 서로 관련 있는 변수나 함수 같은 코드들을 모아 놓은 파일 import calculater as calc from calculater import add, multiply from calculater improt * # 다 넣기 2. random 모듈 random 모듈은 랜덤한 숫자를 생성하기 위해 다양한 함수들을 제공해 준다. import random randint 함수: 두 수 사이의 어떤 랜덤한 정수를 리턴하는 함수 print(random.randint(1, 20) uniform 함수: 두 수 사이의 랜덤한 소수를 리턴하는 함수 print(random.uniform(0, 1) 3. datetime 모듈 datetime 모듈은 '날짜'와 '시간'을 다루기 위한 다양한 '클래스'를 갖추고 있..

[Python 기초] 문제 9. 주민등록번호 가리기

[ 문제 ] 주민등록번호의 마지막 네 자리만 가려 주는 보안 프로그램을 만들려고 한다. mask_security_number라는 함수를 정의하려고 하는데, 이 함수는 파라미터로 문자열 security_number를 받고, security_number의 마지막 네 글자를 '*'로 대체한 새 문자열을 리턴한다. [보충 설명] 문자열은 수정이 불가능하다. 하지만 문자열과 유사한 리스트는 수정이 가능하다. 더 쉬운 방법은 '문자열 슬라이싱'을 이용하는 것이다. [ 정답 코드 ] def mask_security_number(security_number): return security_number[:-4] + '****' # 테스트 print(mask_security_number("880720-1234567")) ..

[Python 기초] 문제 8. 자릿수 합 구하기

[ 문제 ] 함수 sum_digit은 파라미터로 정수형 num을 받고, num의 각 자릿수를 더한 값을 리턴합니다. sum_digit 함수를 작성하고, sum_digit(1)부터 sum_digit(1000)까지의 합을 구해서 출력하세요. [보충 설명] sum_digit 함수를 정의하기 위해서는 정수형 num을 문자열로 바꾼다. 문자열은 리스트와 유사하다는 점을 이용하여, 반복적으로 각 자릿수를 받는다. 각 자릿수를 정수형으로 변환하고, 각 자릿수를 total에 더한다. [ 정답 코드 ] # 자리수 합 리턴 def sum_digit(num): total = 0 str_num = str(num) for digit in str_num: total += int(digit) return total # sum_di..

[Python 기초] 문제 7. 투표 집계하기

[ 문제 ] 파이썬 리스트 votes에는 성북구민들의 투표 결과가 저장되어 있습니다. 리스트 votes의 정보를 토대로, 사전 vote_counter에 후보별 득표수를 정리하는 것이 목표입니다. [보충 설명] for문을 이용해서 votes에 있는 후보 이름을 순서대로 name이라는 변수에 지정한다. name을 vote_counter 사전에 반영한다. [ 정답 코드 ] # 투표 결과 리스트 votes = ['김영자', '강승기', '최만수', '김영자', '강승기', '강승기', '최만수', '김영자', \ '최만수', '김영자', '최만수', '김영자', '김영자', '최만수', '최만수', '최만수', '강승기', \ '강승기', '김영자', '김영자', '최만수', '김영자', '김영자', '강승기'..

[Python 기초] 문제 6. 리스트 뒤집기

[ 문제 ] 리스트 원소들의 순서를 거꾸로 뒤집으려고 합니다. numbers라는 리스트가 주어졌을 때, for문을 사용하여 리스트를 거꾸로 뒤집어 보세요. [보충 설명] 리스트를 뒤집기 위해서는, 서로 대칭인 원소들의 위치를 바꿔야(swap) 한다. 인덱스 0과 대칭되는 위치는 인덱스 len(numbers) - 1이다. 리스트 길이의 반을 넘게 돌면, 잘 바꿔 놨던 위치를 다시 원상 복구하는 셈이다. [ 정답 코드 ] numbers = [2, 3, 5, 7, 11, 13, 17, 19] # 리스트 뒤집기 for left in range(len(numbers) // 2): # 인덱스 left와 대칭인 인덱스 right 계산 right = len(numbers) - left - 1 # 위치 바꾸기 numbe..

[Python 기초] 문제 5. 피타고라스 삼조

[ 문제 ] 피타고라스 삼조란, 피타고라스 정리를 만족하는 세 자연수 쌍 (a, b, c)입니다. a < b < c라고 가정할 때, a + b + c = 400을 만족하는 피타고라스 삼조 (a, b, c)는 단 하나인데요. 이 경우, a * b * c는 얼마인가요? [보충 설명] 효율적인 코드를 짜기 위해 for 문을 두 개만 쓴다. 'a + b + c = 400'은 'c = 400 - a - b'라는 뜻이다. [ 정답 코드 ] for a in range(1, 400): for b in range(1, 400): c = 400 - b - a if a * a + b * b == c * c and a < b < c: print(a * b * c)

[Python 기초] 문제 4. 환전 서비스

[ 문제 ] 제가 구매하고 싶은 물건들의 가격을 리스트에 정리해 놨습니다. prices = [34000, 13000, 5000, 21000, 1000, 2000, 8000, 3000] 가격의 단위는 모두 원화(₩)인데요. 이 물건들의 가격을 미국 달러($)로 하면 얼마일지, 그리고 일본 엔화(¥)로 하면 얼마일지 확인해 보려고 합니다. 참고로 환율은 1달러에 1,000원, 그리고 1,000엔에 8달러라고 가정합니다. [ 정답 코드 ] # 원화(₩)에서 달러($)로 변환하는 함수 def krw_to_usd(krw): return krw / 1000 # 달러($)에서 엔화(¥)로 변환하는 함수 def usd_to_jpy(usd): return usd / 8 * 1000 # 원화(₩)으로 각각 얼마인가요? p..