문제/Python

231129 Python 실기 문제

잇꼬 2023. 11. 29. 18:32
728x90
반응형
SMALL

[문제1] 구구단을 가로로 출력해주세요.

for i in range(1, 10):
    for dan in range(2, 10):
        print("{} * {} = {}".format(dan, i, dan*i), end='\t')
    print(' ')

 

[문제2] 감염병_발생현황.csv 데이터를 이용해서 년도별 감염병 발생현황을 bar plot, line plot 을 생성해주세요.

 

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
font_name = font_manager.FontProperties(fname='C:/Windows/Fonts/gulim.ttc').get_name()
re('font', family=font_name)

data = pd.read_csv('c:/data/감염병_발생현황.csv')

# 불필요한 행, 열 삭제
data = data.iloc[2:, 1:].T

# 컬럼이름 미정
infection = data.iloc[1:]

# 컬럼 지정
infection.columns = data.iloc[0]
infection.columns.name == None
infection.info()

# data.iloc[2:,1:].T → 해당 코드로 문자타입으로 확인 
# int 타입으로 변경
infection = infection.astype(int)

#  bar plot 

infection.plot(kind='bar')
infection.iloc[:, :-1].plot(kind='bar')

infection.iloc[:, -1].plot(kind='bar') # A형간염 
plt.legend()

 

# line plot

infection.iloc[:,:-1].plot()

infection.iloc[:,-1].plot()
plt.legend()

 

[문제3] 아래의 코드가 정상 실행되도록  Stats 클래스를 생성하세요. 

stat = Stats()
stat.sum(1,2,3,4,5,6)
stat.mean(1,2,3,4,5)
stat.variance(1,2,3,4,5)
round(stat.stddev(1,2,3,4,5),2)
import math

class Stats():
	def sum(self, *arg):
    	hap = 0 
        for i in arg:
        	hap += i
        return hap
     
    def mean(self, *arg):
     	total = 0 
        m = self.mean(*arg)
        for i in arg:
        	total += (i - m)**2
        return total / (len(arg) - 1)
     
    def stdden(self, *arg):
    	return math.sqrt(self.variance(*arg))

 

[문제4] 주소록 관리 프로그램 Contact 클래스에 open, close, search, insert, update, delete, commit, rollback 함수를 구현해주세요.

import sqlite3

conn = sqlite3.connect('c:/data/contact.db')
cur = conn.cursor()

 

# tabel 생성 후 확인해보기

cur.execute("create table contact(name text, pn text, email text, addr text"))
cur.execute("select * from sqlite_master")
cur.fetchall()

cur.execute("pragma table_info(contact)")
cur.fetchall()

 

# table로 test 해보기

cur.execute("select * from contact where pn = '010-1000-0001' ")
lst = cur.fetchall()
lst == None
bool(lst)

 

# cursor, connect 닫기

cur.close()
conn.close()

 

#1. class를 통해 open(), close() 생성

class Contact(): 
	def open(self):
    	self.conn = sqlite3.connect('c:/data/contact.db')
        self.cur = self.conn.cursor()
        print('contact db에 접속했습니다.')
    def close(self):
    	self.cur.close()
        self.conn.close()
        print('contact db 접속 해지했습니다.')

c = Contact()
c.open()
c.close()

 

#2. class를 통해 search() 생성

class Contact():
    
    def open(self):
        self.conn = sqlite3.connect('c:/data/contact.db')
        self.cur = self.conn.cursor()
        print('contact db에 접속했습니다.')
    
    def close(self):
        self.cur.close()
        self.conn.close()
        print('contact db 접속 해지했습니다.')
        
    def search(self, pn):
        self.cur.execute("""select * from contact where pn = ?""", (pn,))
        lst = self.cur.fetchone()
        if lst:
            print(lst)
        else:
            print('데이터가 존재하지 않습니다.')

c = Contact()
c.open()
c.search('010-1000-0001')
c.close()

 

#3. class를 통해 insert(), commit(), rollback() 생성

class Contact():
    
    def open(self):
        self.conn = sqlite3.connect('c:/data/contact.db')
        self.cur = self.conn.cursor()
        print('contact db에 접속했습니다.')
    
    def close(self):
        self.cur.close()
        self.conn.close()
        print('contact db 접속 해지했습니다.')
        
    def search(self, pn):
        self.cur.execute("""select * from contact where pn = ?""", (pn,))
        lst = self.cur.fetchone()
        if lst:
            print(lst)
        else:
            print('데이터가 존재하지 않습니다.')
    
    def insert(self, name, pn, email, addr):
        insert_sql = """insert into contact(name, pn, email, addr) values(?,?,?,?)"""
        self.cur.execute(insert_sql,(name, pn, email, addr))
        self.cur.fetchall()
        
    def commit(self):
        self.conn.commit()
        print('저장되었습니다.')
        
    def rollback(self):
        self.conn.rollback()
        print('취소되었습니다.')

c = Contact()
c.open()
c.insert("홍길동", "010-1000-0001", "hong@aaa.com", "서울시 강남구 삼성로")
c.commit()
c.close()

 

 

#4. class를 통해 update(), commit(), rollback() 생성

class Contact():
    
    def open(self):
        self.conn = sqlite3.connect('c:/data/contact.db')
        self.cur = self.conn.cursor()
        print('contact db에 접속했습니다.')
    
    def close(self):
        self.cur.close()
        self.conn.close()
        print('contact db 접속 해지했습니다.')
        
    def search(self, pn):
        self.cur.execute("""select * from contact where pn = ?""", (pn,))
        lst = self.cur.fetchone()
        if lst:
            print(lst)
        else:
            print('데이터가 존재하지 않습니다.')
    
    def insert(self, name, pn, email, addr):
        insert_sql = """insert into contact(name, pn, email, addr) values(?,?,?,?)"""
        self.cur.execute(insert_sql,(name, pn, email, addr))
        self.cur.fetchall()
        
    def update(self, arg1, arg2):
        update_sql = """update contact set email = ? where pn = ?"""
        self.cur.execute(update_sql, (arg2, arg1))
    
    def delete(self, arg1):
        self.cur.execute("""delete from contact where pn = ?""", (arg1,))
        
    def commit(self):
        self.conn.commit()
        print('저장되었습니다.')
        
    def rollback(self):
        self.conn.rollback()
        print('취소되었습니다.')
        
c = Contact()
c.open()
c.search("010-1000-0001")
c.update("010-1000-0001","james@aaa.com")
c.search("010-1000-0001")
c.rollback()
c.search("010-1000-0001")
c.delete("010-1000-0001")
c.search("010-1000-0001")
c.rollback()
c.search("010-1000-0001")
c.close()

 

[문제5] 아래의 'message' 문자열에서 전화번호를 추출해주세요.

message = '''안녕하세요. 전화번호는 02-123-4567 입니다.
문의사항이 있으면 031-1234-0000 으로 연락주시기 바랍니다.
폰 번호는 010-1234-0001 고객센터 전화번호 1588-3600  대표전화 : 031)777-1140'''

 

import re

re.findall('\d{0,3}[-)]?\d{3,4}-\d{4}', message)

re.findall('\d{0,3}[-)]*\d{3,4}-\d{4}', message)
728x90
반응형
LIST

'문제 > Python' 카테고리의 다른 글

231128 Python 문제  (0) 2023.11.28
231128 Python 문제  (0) 2023.11.28
231127 Python 문제  (1) 2023.11.27
231123 Python 문제  (1) 2023.11.23
231122 Python 문제  (0) 2023.11.22