python) List_CRUD (feat. jupyter notebook)

In [ ]:

a=0
a
b=2
b
print(a)
print(b)
#정수형  실수형  불리언 문자열
a=0
b=3.14
bool = True
s = "문자열"
s = '문자열'
s = """
    a
    b
    c
"""
# 다중행 주석처리가 없으므로 """을 활용한다.
"""
print(s)
a=2
print(a)
pi = 3.14
"""
In [ ]:
if 1<2:
    print("참")
In [ ]:
nums=[3,5,7]
for n in nums:
    print(n)
In [ ]:
for i in range(5):
    print("range() object를 이용한 for loop",i)
In [ ]:
cnt=3
v=0
while v<cnt:
    print(v)
    v+=1
In [ ]:
s="abcd1234"
#문자열의 길이
len(s)
#n번째 글자
s2=str(1)
s2
#자료형 확인
type(s2)
In [ ]:
#<shift><tab> 정보확인
s.
In [ ]:
#정보확인 함수 가지고 있는 메소드를 확인할수 있다
dir(s)
s.__eq__('hello')
#클레스 정보 확인
help(str)
In [ ]:
#키보드 입력된 문자열을 화면에 표시할때 한행에 한문자를 표시하여라
kbd = input("입력")
for i in range(len(kbd)):
    print(kbd[i])
In [ ]:
# List
#Create
nums = [1,2,3,4,5]
type(nums)
#Read
print(nums[4])
#Update
nums[4]=7
print(nums[4])
#비교 compare
nums[0]>nums[3] #Boolean return
#list를 파라미터롤 사용하는 예 return 으로도 사용가능
import random
#무작위 선택
random.choice(nums)
#0~4 까지 렌덤 <shift><tab> 으로 확인가능
random.randrange(0,5)
random.randint(0,777)
In [ ]:
# CRUD (append (), list[n], list[n]=f,
# list.remove[n], list.pop()m list.pop[n], del list[0])
names = ["Neo","Trinity"]
names
names[0]

#한 리스트에 여러자료형이 가능
info = ["a",10]
info
In [ ]:
#키보드에서 번호, 이름 전화, 이메일 정보를 입력받아서 리스트에 저장하는 기능
# 이용자가 'x' 키를 누를 때까지 다수 회원정보를 리스트에 저장하고 
# 'x' 키를 누르면 리스트에 저장된 모든 데이터 출력
# 빈 리스트 a=[]
memberList=[]
while True:
    num = input("번호")
    name = input("이름")
    phone = input("전화")
    email = input("email")
    member = [num,name,phone,email]
    print(member,"를 추가합니다.")
    memberList.append(member)
    cmd=input("계속할까요? x를 누르면 종료 됩니다")
    if cmd=="x":
        for i in range(len(memberList)):
            print(member)
        break   
In [ ]:
mems=[]
while True:
    uinput= input('번호 이름 전화 이메일:')
    if uiinput='x':
        print('종료')
        break
    ulist=uinput.split()
    mems.append(ulist)
In [1]:
class Member:
    #초기자 init self=this
    def __init__(self,num,name,phone,email):
        self.num=num
        self.name=name
        self.phone=phone
        self.email=email
    #toSting
    def __str__(self):
        return f'{self.num}\t{self.name}\t{self.phone}\t{self.email}'
'''
m = Member(1,"Neo", '213-000-0001','neo@matrix.com')
strMem = m.__str__()
print(strMem)
print(m)
print(m.phone)
'''
Out[1]:
'\nm = Member(1,"Neo", \'213-000-0001\',\'neo@matrix.com\')\nstrMem = m.__str__()\nprint(strMem)\nprint(m)\nprint(m.phone)\n'
In [ ]:
#Member 클래스를 사용하여 위의 코드를 변경해보고 리스트에 저장된 모든 Memver정보를
# 화면에 표시해 보세요
mems=[]
while True:
    uinput=input('번호 이름 전화 이메일:')
    if uinput=='x':
        print('종료')
        break
    ulist=uinput.split()
    mems.append(Member(ulist[0],ulist[1],ulist[2],ulist[3]))
    
for i in range(len(mems)):
    print(mems[i])
In [ ]:
testList=[11,"oracle","213.999.9999","oracle@matrix.com"]
testList
num=testList[0]
email=testList[3]
[num,name,phone,email]=testList
print(num,email)
In [ ]:
mems=[]
while True:
    uinput=input('번호 이름 전화 이메일:')
    if uinput=='x':
        print('종료')
        break
    [num,name,phone,email]=uinput.split()
    mems.append(Member(num,name,phone,email))
    
for i in range(len(mems)):
    print(mems[i])
In [ ]:
# 주사위 시뮬레이션 예재 작성
# 주사위(Die) 2개를 굴려서(roll) 동시에 동일한 수가 나오는 확률을 표시한다.
# 이용자에게 주사위를 몇회 굴릴것인지를 물어서
# 총 시도 횟수에 대한 동일 수가 나오는 비율을 백분율로 표시해보세요
import random
class Dice:
    def roll(self):
        return random.randrange(1,7)

dice1=Dice()
dice2=Dice()
cnt=int(input("주사위를 몇회 굴릴까요?:"))
matchCnt=0
for _ in range(cnt):
    if dice1.roll()==dice2.roll():
        matchCnt+=1b
        
percentage=(matchCnt/cnt)*100
f'주사위를 {cnt}번 굴려서 동일 수가 나온 경우 ={percentage}%'
 

list의 메소드들

  • 추가: list.append(value)
  • 삽입: list.insert(value, key)
  • 수정: list[key]=value
  • 제거: list.pop <-맨 뒤의 값 제거 list.pop(index) <-index로 지정한 원소 제거 list.remove(value) <- index로 지정한 값을 찾아 제거 ** del list[index] <- 지정한 값을 찾아 제거
  • list.reverse() <- 원소의 순서 뒤집기
  • list.sort() <- 오름차순으로 정렬
In [4]:
# 사뤈정보 입력, 출력, 수정 삭제
# 목록(s), 추가(a), 검색(f), 수정(u), 삭제(d),종료(x)
mems=[]
while True:
    print("메뉴를 선택하쇼")
    cmd=input("목록(s), 추가(a), 검색(f), 수정(u), 삭제(d),종료(x) :")
    if cmd=='s':
        for i in range(len(mems)):
            print(mems[i])
    if cmd=='a':
        [num,name,phone,email]=input("번호 이름 전화 이메일").split()
        mems.append(Member(num,name,phone,email))
        print("입력완료")
    if cmd=='f':
        keyword = input("검색할 이름을 입력하세요")
        name=''
        for i in range(len(mems)):
            if mems[i].name==keyword:
                print(mems[i])
    if cmd=='u':
        keyword = input("수정할 회원의 이름을 입력하세요")
        name=''
        for i in range(len(mems)):
            if mems[i].name==keyword:
                print(mems[i])
                if input("회원을 수정할까요 y/n")=='y':
                    [num,name,phone,email]=input("번호 이름 전화 이메일").split()
                    mems[i]=Member(num,name,phone,email)
                    print("수정완료")
                else:
                    pass
    if cmd=='d':
        keyword = input("삭제할 이름을 입력하세요")
        name=''
        for i in range(len(mems)):
            if mems[i].name==keyword:
                mems.pop(i)
                print("삭제완료")
    if cmd=='x':
        print("프로그램 종료")
        break
 
메뉴를 선택하쇼
목록(s), 추가(a), 검색(f), 수정(u), 삭제(d),종료(x) :ㅁ
메뉴를 선택하쇼
목록(s), 추가(a), 검색(f), 수정(u), 삭제(d),종료(x) :a
번호 이름 전화 이메일1 neo 213 neo
입력완료
메뉴를 선택하쇼
목록(s), 추가(a), 검색(f), 수정(u), 삭제(d),종료(x) :u
수정할 회원의 이름을 입력하세요neo
1	neo	213	neo
회원을 수정할까요 y/ny
번호 이름 전화 이메일1 neo 213.000.0001 neo@matrix.com
수정완료
메뉴를 선택하쇼
목록(s), 추가(a), 검색(f), 수정(u), 삭제(d),종료(x) :s
1	neo	213.000.0001	neo@matrix.com
메뉴를 선택하쇼
목록(s), 추가(a), 검색(f), 수정(u), 삭제(d),종료(x) :d
삭제할 이름을 입력하세요neo
삭제완료
메뉴를 선택하쇼
목록(s), 추가(a), 검색(f), 수정(u), 삭제(d),종료(x) :x
프로그램 종료
In [ ]:
class Emp:
    def __init__(self,num,name,dept=None,sal=None):
        self.num=num
        self.name=name
        self.dept=dept
        self.sal=sal
    
    def __eq__(self,otherEmp):
        return (self.num==otherEmp.num) and (self.name==otherEmp.name)
    
    def __str__(self):
        return f'{self.num}\t{self.name}\t{self.dept}\t{self.sal}'
In [ ]:
empList=[]
In [ ]:
def printList():
    for e in empList:
        print(e)
        
def find():
    strInfo=input('검색할 사원번호: 이름:')
    [num,name]=strInfo.split()
    findEmp = Emp(num,name)
    for e in empList:
        if (e.__eq__(findEmp)):
            print(e)
            return True
    return False

def add():
    eInfo=input('사원번호 이름 부서 급여:')
    [num,name,dept,sal]=eInfo.split()
    newEmp=Emp(num,name,dept,sal)
    empList.append(newEmp)
    print("새 사원전보 추가 성공...")

# 수정대상 번호, 이름, 새부서, 새급여 : 누구를 수정할 것인가?
# 사원정보 리스트에서 검색
# 검색된 대상의 부서, 급여갱신
def update():
    updateInfo=input('사원번호 이름 새부서 새금여:')
    [num,name,newDept,newSal]=updateInfo.split()
    updateEmp = Emp(num,name,newDept,newSal)
    for e in empList:
        if e.__eq__(updateEmp):
            e.dept=update.dept
            e.sal=update.sal
            print('수정성공')
            return True
    return False
    '''
    strInfo=input('검색할 사원번호: 이름:')
    [num,name]=strInfo.split()
    findEmp = Emp(num,name)
    for e in empList:
        emp=e
        if (e.num==findEmp.num) and (e.name==findEmp.name):
            newInput=input("새로운 정보 부서 급여:")
            [dept,sal]=newInput.split()
            updateEmp=Emp(findEmp.num,findEmp.name,dept,sal)

            print("수정전 내용",e)
            print("업데이트내용",updateEmp)
            emp=updateEmp
            print("회원정보 수정완료")
            return True
    return False
    '''
def delete(): #삭제대상: 번호 이름ㅇ르 키보으에서 입력닫는다
    deleteInfo=input('삭제할 사원:사원번호 이름')
    [num,name]=deleteInfo.split()
    delEmp = Emp(num,name)
    empList.remove(delEmp)
In [ ]:
# 사원정보 입력, 출력, 수정 삭제
# 목록(s), 추가(a), 검색(f), 수정(u), 삭제(d),종료(x)
while True:
    uMenu=input('목록(s), 추가(a), 검색(f), 수정(u), 삭제(d),종료(x)')
    if uMenu=='s':
        printList()
    elif uMenu=='a':
        add()
    elif uMenu=='f':
        find()
    elif uMenu=='u':
        update()
    elif uMenu=='d':
        delete()
    elif uMenu=='x':
        break
        
print("프로그램 종료")

a=0
a
b=2
b
print(a)
print(b)
#정수형  실수형  불리언 문자열
a=0
b=3.14
bool = True
s = "문자열"
s = '문자열'
s = """
    a
    b
    c
"""
# 다중행 주석처리가 없으므로 """을 활용한다.
"""
print(s)
a=2
print(a)
pi = 3.14
"""

if 1<2:
    print("참")

nums=[3,5,7]
for n in nums:
    print(n)

for i in range(5):
    print("range() object를 이용한 for loop",i)

cnt=3
v=0
while v<cnt:
    print(v)
    v+=1

s="abcd1234"
#문자열의 길이
len(s)
#n번째 글자
s2=str(1)
s2
#자료형 확인
type(s2)

#<shift><tab> 정보확인
s.

#정보확인 함수 가지고 있는 메소드를 확인할수 있다
dir(s)
s.__eq__('hello')
#클레스 정보 확인
help(str)

#키보드 입력된 문자열을 화면에 표시할때 한행에 한문자를 표시하여라
kbd = input("입력")
for i in range(len(kbd)):
    print(kbd[i])

# List
#Create
nums = [1,2,3,4,5]
type(nums)
#Read
print(nums[4])
#Update
nums[4]=7
print(nums[4])
#비교 compare
nums[0]>nums[3] #Boolean return
#list를 파라미터롤 사용하는 예 return 으로도 사용가능
import random
#무작위 선택
random.choice(nums)
#0~4 까지 렌덤 <shift><tab> 으로 확인가능
random.randrange(0,5)
random.randint(0,777)

# CRUD (append (), list[n], list[n]=f,
# list.remove[n], list.pop()m list.pop[n], del list[0])
names = ["Neo","Trinity"]
names
names[0]

#한 리스트에 여러자료형이 가능
info = ["a",10]
info

#키보드에서 번호, 이름 전화, 이메일 정보를 입력받아서 리스트에 저장하는 기능
# 이용자가 'x' 키를 누를 때까지 다수 회원정보를 리스트에 저장하고 
# 'x' 키를 누르면 리스트에 저장된 모든 데이터 출력
# 빈 리스트 a=[]
memberList=[]
while True:
    num = input("번호")
    name = input("이름")
    phone = input("전화")
    email = input("email")
    member = [num,name,phone,email]
    print(member,"를 추가합니다.")
    memberList.append(member)
    cmd=input("계속할까요? x를 누르면 종료 됩니다")
    if cmd=="x":
        for i in range(len(memberList)):
            print(member)
        break   

mems=[]
while True:
    uinput= input('번호 이름 전화 이메일:')
    if uiinput='x':
        print('종료')
        break
    ulist=uinput.split()
    mems.append(ulist)

class Member:
    #초기자 init self=this
    def __init__(self,num,name,phone,email):
        self.num=num
        self.name=name
        self.phone=phone
        self.email=email
    #toSting
    def __str__(self):
        return f'{self.num}\t{self.name}\t{self.phone}\t{self.email}'
'''
m = Member(1,"Neo", '213-000-0001','neo@matrix.com')
strMem = m.__str__()
print(strMem)
print(m)
print(m.phone)
'''

#Member 클래스를 사용하여 위의 코드를 변경해보고 리스트에 저장된 모든 Memver정보를
# 화면에 표시해 보세요
mems=[]
while True:
    uinput=input('번호 이름 전화 이메일:')
    if uinput=='x':
        print('종료')
        break
    ulist=uinput.split()
    mems.append(Member(ulist[0],ulist[1],ulist[2],ulist[3]))
    
for i in range(len(mems)):
    print(mems[i])

testList=[11,"oracle","213.999.9999","oracle@matrix.com"]
testList
num=testList[0]
email=testList[3]
[num,name,phone,email]=testList
print(num,email)

mems=[]
while True:
    uinput=input('번호 이름 전화 이메일:')
    if uinput=='x':
        print('종료')
        break
    [num,name,phone,email]=uinput.split()
    mems.append(Member(num,name,phone,email))
    
for i in range(len(mems)):
    print(mems[i])

# 주사위 시뮬레이션 예재 작성
# 주사위(Die) 2개를 굴려서(roll) 동시에 동일한 수가 나오는 확률을 표시한다.
# 이용자에게 주사위를 몇회 굴릴것인지를 물어서
# 총 시도 횟수에 대한 동일 수가 나오는 비율을 백분율로 표시해보세요
import random
class Dice:
    def roll(self):
        return random.randrange(1,7)

dice1=Dice()
dice2=Dice()
cnt=int(input("주사위를 몇회 굴릴까요?:"))
matchCnt=0
for _ in range(cnt):
    if dice1.roll()==dice2.roll():
        matchCnt+=1b
        
percentage=(matchCnt/cnt)*100
f'주사위를 {cnt}번 굴려서 동일 수가 나온 경우 ={percentage}%'

### list의 메소드들
* 추가: list.append(value)
* 삽입: list.insert(value, key)
* 수정: list[key]=value
* 제거: list.pop <-맨 뒤의 값 제거
** list.pop(index) <-index로 지정한 원소 제거
** list.remove(value) <- index로 지정한 값을 찾아 제거
** del list[index] <- 지정한 값을 찾아 제거
* list.reverse() <- 원소의 순서 뒤집기
* list.sort() <- 오름차순으로 정렬

# 사뤈정보 입력, 출력, 수정 삭제
# 목록(s), 추가(a), 검색(f), 수정(u), 삭제(d),종료(x)
mems=[]
while True:
    print("메뉴를 선택하쇼")
    cmd=input("목록(s), 추가(a), 검색(f), 수정(u), 삭제(d),종료(x) :")
    if cmd=='s':
        for i in range(len(mems)):
            print(mems[i])
    if cmd=='a':
        [num,name,phone,email]=input("번호 이름 전화 이메일").split()
        newMember=Member(num,name,phone,email)
        mems.append(newMember)
        print("입력완료")
    if cmd=='f':
        keyword = input("검색할 이름을 입력하세요")
        name=''
        for i in range(len(mems)):
            if mems[i].name==keyword:
                print(mems[i])
    if cmd=='u':
        keyword = input("수정할 회원의 이름을 입력하세요")
        name=''
        for i in range(len(mems)):
            if mems[i].name==keyword:
                print(mems[i])
                if input("회원을 수정할까요 y/n")=='y':
                    [num,name,phone,email]=input("번호 이름 전화 이메일").split()
                    mems[i]=Member(num,name,phone,email)
                    print("수정완료")
                else:
                    pass
    if cmd=='d':
        keyword = input("삭제할 이름을 입력하세요")
        name=''
        for i in range(len(mems)):
            if mems[i].name==keyword:
                mems.pop(i)
                print("삭제완료")
    if cmd=='x':
        print("프로그램 종료")
        break

class Emp:
    def __init__(self,num,name,dept=None,sal=None):
        self.num=num
        self.name=name
        self.dept=dept
        self.sal=sal
    
    def __eq__(self,otherEmp):
        return (self.num==otherEmp.num) and (self.name==otherEmp.name)
    
    def __str__(self):
        return f'{self.num}\t{self.name}\t{self.dept}\t{self.sal}'

empList=[]

def printList():
    for e in empList:
        print(e)
        
def find():
    strInfo=input('검색할 사원번호: 이름:')
    [num,name]=strInfo.split()
    findEmp = Emp(num,name)
    for e in empList:
        if (e.__eq__(findEmp)):
            print(e)
            return True
    return False

def add():
    eInfo=input('사원번호 이름 부서 급여:')
    [num,name,dept,sal]=eInfo.split()
    newEmp=Emp(num,name,dept,sal)
    empList.append(newEmp)
    print("새 사원전보 추가 성공...")

# 수정대상 번호, 이름, 새부서, 새급여 : 누구를 수정할 것인가?
# 사원정보 리스트에서 검색
# 검색된 대상의 부서, 급여갱신
def update():
    updateInfo=input('사원번호 이름 새부서 새금여:')
    [num,name,newDept,newSal]=updateInfo.split()
    updateEmp = Emp(num,name,newDept,newSal)
    for e in empList:
        if e.__eq__(updateEmp):
            e.dept=update.dept
            e.sal=update.sal
            print('수정성공')
            return True
    return False
    '''
    strInfo=input('검색할 사원번호: 이름:')
    [num,name]=strInfo.split()
    findEmp = Emp(num,name)
    for e in empList:
        emp=e
        if (e.num==findEmp.num) and (e.name==findEmp.name):
            newInput=input("새로운 정보 부서 급여:")
            [dept,sal]=newInput.split()
            updateEmp=Emp(findEmp.num,findEmp.name,dept,sal)

            print("수정전 내용",e)
            print("업데이트내용",updateEmp)
            emp=updateEmp
            print("회원정보 수정완료")
            return True
    return False
    '''
def delete(): #삭제대상: 번호 이름ㅇ르 키보으에서 입력닫는다
    deleteInfo=input('삭제할 사원:사원번호 이름')
    [num,name]=deleteInfo.split()
    delEmp = Emp(num,name)
    empList.remove(delEmp)

# 사뤈정보 입력, 출력, 수정 삭제
# 목록(s), 추가(a), 검색(f), 수정(u), 삭제(d),종료(x)
while True:
    uMenu=input('목록(s), 추가(a), 검색(f), 수정(u), 삭제(d),종료(x)')
    if uMenu=='s':
        printList()
    elif uMenu=='a':
        add()
    elif uMenu=='f':
        find()
    elif uMenu=='u':
        update()
    elif uMenu=='d':
        delete()
    elif uMenu=='x':
        break
        
print("프로그램 종료")

Comment