본문 바로가기
Language/Python

2021 - 04 - 19, Python 학습 - 연습문제 풀이

by Cs.Woo 2021. 4. 19.

다음의 문제들은 Do it! 파이썬 생활 프로그래밍 서적 및 위키독스(wikidocs.net/book/2)에 출처가 있음을 밝힙니다.

# Q1

if 3    range(5):

    print('there is 3')

 

# 실행값 'there is 3'

 

# A1

 

if 3 in range(5) : 

    print('there is 3')



# Q2

for i in range(10):

    print(i)

 

# 마지막에 출력되는 글자는?

 

# A2

 

9

 

# Q3 

 

# 평균나이구하기, 팀원은 모두6명, 결괏값은 소수점 첫재짜리

# 이부장 50, 최과장 45,김대리 33,박대리39, 이주임29, 오사원 30

 

# A3

 

list_1 = [50, 45, 33, 39, 29, 30]

avg = sum(list_1) / len(list_1)

 

print(round(avg, 1))

 

# Q4

 

# for 문을 이용하여 구구단 2단부터 19단까지 만들기 (range와 list)

 

# A4

 

for i in range(1,20):

    for j in range(1,20):

        print("{} x {} = {}".format(i,j,i*j))

 

## array 를 이용한 2단 표현

array_1 = [1,2,3,4,5,6,7,8,9]

 

for i in array_1:

    print("{} x {} = {}".format(2,i,2 * i))

 

# Q5 

 

# 환율계산기를 만들어보기

 

# 1원이 0.00086달러라고 했을때, 100만원을 달러로 환전하면 얼마정도일까?

 

# A5

 

exchange_rate = lambda won: won*0.00086

 

print(int(exchange_rate(1000000)))

 

# Q6

 

# 사용자가 정수만 입력한다는 가정하에, 함수를 사용하여 사용자에게 입력을 받고, 홀짝을 구분하여 대답하는 프로그램을 구성해보아라.

 

# A6



def even_odd() :

    a = int(input("정수를 하나 입력해 주세요. "))

    if a % 2 == 0:

        print("{} 는 짝수입니다.".format(a))

    else:

        print("{} 는 홀수입니다.".format(a))

 

## is와 is not을 사용한 예

 

def even_odd() :

    a = int(input("정수를 하나 입력해 주세요. "))

    if a % 2 is 0:

        print("{} 는 짝수입니다.".format(a))

    else:

        print("{} 는 홀수입니다.".format(a))



# Q7

 

# 서비스 부가세 계산 프로그램.

# 박대리는 서비스의 부가세 계산으로 곤혹을 겪고 있다.

# 다음 부가세가 포함되어 있지 않는 세가지 가격에 대해 부가세가 들어간 가격을 구하는 프로그램을 작성하라.

# ! 사용자에게 부가세 포함여부를 물음 !



prices = [23, 40, 67]

 

#def cal_vat(price_list):

#    vat_list = []

#    for price in price_list:

#        vat = round(price * (1 / 11), 1)

#        vat_list.append(vat)

#    return vat_list

#

#print(cal_vat(prices))

 

# 서비스는 a,b,c 한정이므로 가격은 프로그램안에 내장

# 부가세가 필요하면 부가세를 구한뒤 합쳐서 리턴

# 부가세가 필요하지 않으면 원가를 리턴

 

def cal_vat_service(): 

    answer = input("서비스 종류를 입력하여 주세요(a/b/c")

    if answer is "a":

        vat = round( 23 * (1 / 11), 1)

        result = 23 + vat

        print("a 서비스의 부가세 포함 가격은 {}입니다.".format(result))

    elif answer is "b":

        vat = round( 40 * (1 / 11), 1)

        result = 40 + vat

        print("b 서비스의 부가세 포함 가격은 {}입니다.".format(result))

    else:

        vat = round( 67 * (1 / 11), 1)

        result = 67 + vat

        print("c 서비스의 부가세 포함 가격은 {}입니다.".format(result))

 

# 모범답안

 

def service_price():

    service = input("서비스의 종류를 입력하세요, a/b/c : ")

    valueAdded = input("부가세를 포함합니까? y/n")

    if valueAdded is 'y': 

        if service is 'a':

            result = 23 * 1.1

        elif service is 'b':

            result = 40 * 1.1

        else:

            result = 67 * 1.1

    else:

        if service is 'a':

            result = 23

        elif service is 'b':

            result = 40

        else:

            result = 67

    print(round(result, 1), '만 원입니다.')

 

# Q8

 

# 다음 함수 mean을 사용하면 오류가 나타난다. 

# 오류를 해결해보아라

 

def mean(a,b):

    print((a+b/2))

 

mean(33,22) # 27.5

 

45 + mean(33,22) # error

 

# A8

 

def mean(a, b):

    return (a+b) / 2

 

45 + mean(33,22) # 72.5 

 

# Q9

 

# 다음 리스트 b에 있는 숫자 중 10 미만은 그대로 출력하고 10 이상은 1의 자리만 출력하고 싶을때 빈칸에 들어가야 할 명령어는 무엇인가?

 

b = [1, 2, 3, 10, 11, 12]

 

for i in b:

    if i<10:

        print(i)

        :

        print(i-10)

 

# A9

 

b = [1, 2, 3, 10, 11, 12]

 

for i in b:

    if i<10:

        print(i)

    else :

        print(i-10)



# Q10

 

# 정규표현식을 사용하여 다음의 문자열에서 ly로 끝나는 단어 추출해보기

 

# A10

 

import re

 

sentence = "I love a lovely dog, really. I am not telling a lie"

 

re.search(r'[-ly]',sentence)  # l

 

# 모범답안

 

re.findall(r'\w+ly',sentence) # \w 공백이 아닌 문자나 숫자 , + 반복하는 문자 , ly로 끝

 

print(re.findall(r'\w+ly',sentence)) #['lovely', 'really']




# Q11

 

# words 리스트에 저장된 여러 단어 중  a로 시작되는 단어만 출력하려 합니다. 빈칸에 어떤 명령어를 채워야 하나?

 

import re

words = ['apple', 'cat', 'brave', 'drama', 'arise', 'blow', 'coat', 'above']

for i in words:

    m = re.match(r'a\D+', i)

    if m:

        print(    ) 

 

# A 11



import re

words = ['apple', 'cat', 'brave', 'drama', 'arise', 'blow', 'coat', 'above']

for i in words:

    m = re.match(r'a\D+', i)

    if m:

        print( m.group() ) 

 

"""

 

# Q12

# a에 저정한 문자열에서 메일 주소만 추출해 리스트로 반환하려 한다. 반환하라

 

#import re

 

#a = '제 이메일 주소는 greatking@naver.com 입니다. 오늘 저는 travel@daum.net 라는 주소로 메일을 보내려고 합니다. 저는 apple@gmail.com, life@abc.co.kr 라는 메일도 사용 하고 있습니다.'

 

#b = re.findall(r'[a-z]+@[a-z]+\.[a-z]+',a)

#print(b)

 

# 모범답안

 

import re

 

a = '제 이메일 주소는 greatking@naver.com 입니다. 오늘 저는 travel@daum.net 라는 주소로 메일을 보내려고 합니다. 저는 apple@gmail.com, life@abc.co.kr 라는 메일도 사용 하고 있습니다.'

 

b = re.findall(r'[a-z]+@[a-z.]+',a)

print(b)