본문 바로가기

Python

PyCharm - list


# 파이썬 자료구조
# 자료구조는 대량의 효율적으로 저장, 조회, 수정,삭제를
# 요구되는 기능과 기법을 의미
# 대표적 자료구조 : 리스트, 튜플, 셋, 딕셔너리


# 성적프로그램 v1
# 이름, 국어, 영어, 수학을 입력하면
# 총점, 평균, 학점을 처리해서 결과 출력
# 성적자료입력
name = input('이름은?')
kor = int(input('국어는?'))
eng = int(input('영어는?'))
mat = int(input('수학은?'))

# 성적처리
tot = kor + eng + mat
avg = tot / 3
grd = '가'
if avg >= 90: grd = '수'
elif avg >=80: grd= '우'
elif avg >=70: grd= '미'
elif avg >=60: grd= '양'


# 성적처리 결과출력
print(f'{name},{kor},{eng},{mat}')
print(f'{tot},{avg:.1f},{grd}')





# 성적프로그램 v2
# 이름, 국어, 영어, 수학을 입력하면
# 총점, 평균, 학점을 처리해서 결과 출력
# 단, 3명의 학생에 대해 성적처리
# 성적자료 초기화

names = ['지은', '수지', '리나', '홍철', '형돈']
kors = [90,80,70,99,99]
engs = [90,80,70,88,88]
mats = [90,80,70,77,77]

tots= [0,0,0]
tots[0] = kors[0] + engs[0] + mats[0]
tots[1] = kors[1] + engs[1] + mats[1]
tots[2] = kors[2] + engs[2] + mats[2]

avgs= [0, 0, 0]
avgs[0] = tots[0] / 3
avgs[1] = tots[1] / 3
avgs[2] = tots[2] / 3

tots=[]
avgs=[]
grds=[]

for i in range(5):
    tots.append(kors[i] + engs[i] + mats[i])
    avgs.append(tots[i] / 3)

    if avgs[i] >= 90 : grds.append('수')
    elif avgs[i] >=80: grds.append('우')
    elif avgs[i] >=70: grds.append('미')
    elif avgs[i] >=60: grds.append('양')
    else: grds.append('가')

for i in range(5):
    print(f'{names[i]},{kors[i]},{engs[i]},{mats[i]}')
    print(f'{tots[i]},{avgs[i]},{grds[i]}')







name1: '혜교'
name2: '수지'
name3: '지현'

kor1=99
kor2=65
kor3=77
#데이터 개수에 따라 일일이 변수선언은 불편함
#이런문제 해결위해 자료구조에 사용하는 기술 적용

#리스트
# 다른 프로그래밍 언어에서는 배열과 유사
# 동일한 형식의 데이터를 1차원 형태로 순차적으로 저장하는 자료구조
# 선언방법은 값을 대괄호 [  ]안에 정의하고 사용

#ex) 점심메뉴 리스트
menus = ['라면', '돈까스', '짜장면', '뚝배기불고기', '냉면']

print(menus)

# 리스트 각 요소에 접근하려면 변수[인덱스]
print(menus [0], menus[2], menus[4])

# 반복문으로 리스트 다루기
for i in range(5):
    print(menus[i], end=' ')

for menu in menus:      # 리스트의 요소를 하나씩 훑어가며 출력
    print(menu)


# 리스트 다루기
menus = []

menus.append('라면')             # 리스트에 새로운 요소 추가
menus.append('돈까스')           # 새로 추가되는 요소는 맨 뒤에 추가
menus.append('짜장면')
menus.append('뚝배기불고기')
menus.append('냉면')

menus.insert(1, '냉면')          # 지정한 인덱스에 요소 추가 (이미 있는놈은 뒤로밀림)


print(menus[2])     # 리스트의 특정요소 출력

menus.remove('라면')     # 리스트의 특정요소 제거

menus.pop()          # 리스트의 마지막 요소 제거

menus.pop(0)         # 지정한 인덱스로 요소 제거




# ex 연습문제 p110 문제1
lst = [10, 1, 5, 2]          #list생성
result = lst*2
print(result)


lst[0]*2
result.append(lst[0]*2)
print(result)


result2 = result[1::2]  # 2번째 인덱스부터 2의 간격으로 추출
print(result2)


#문제2
size = int(input('vector 수'))
lst = []
for i in range(size):
    lst.append(int(input()))

print(len(lst))


size = int(input('vector 수'))
lst = []
for i in range(size):
    lst.append(int(input('임의 숫자를 추가하시오')))

if int(input('찾을 값')) in lst:
    print('yes')
else : print('no')


print(len(lst))








# employees.csv를 이용하여 사원정보를 입력하면
# list에 각각 저장하는 코드를 작성하세요.
# 사번empmno, 이름fname, 성lname, 이메일email,
# 입사일hdate, 직책jobid, 급여sal, 부서번호deptid



empno = []
fname = []
lname = []
email = []
hdate = []
jobid = []
sal   = []
deptid = []
for i in range(3) :
    empno.append(input('사원번호를 입력하시오'))
for i in range(3) :
    fname.append(input('성(fname) 을 입력하시오'))
for i in range(3) :
    lname.append(input('이름을 입력하시오'))
for i in range(3) :
    email.append(input('이메일을 입력하시오'))
for i in range(3) :
    hdate.append(input('입사날짜를 입력하시오'))
for i in range(3) :
    jobid.append(input('직책을 입력하시오'))
for i in range(3):
    sal.append(input('급여를 입력하시오'))
for i in range(3):
    deptid.append(input('부서번호를 입력하시오'))

lst = [empno, fname, lname, email, hdate, jobid, sal, deptid]

for j in range(int(input('직원의 수는 몇명인가?'))):
    for i in range(j) :
        empno.append(input('사원번호를 입력하시오'))
    for i in range(j) :
        fname.append(input('성(fname) 을 입력하시오'))
    for i in range(j) :


lst = [empno, fname, lname, email, hdate, jobid, sal, deptid]


################################################################

empnos = []
fnames = []
lnames = []
emails = []
hdates = []
jobids = []
sals   = []
deptids = []

#사원정보 입력
empnos = input('사원번호는?')
fnames = input('이름은?')
lnames = input('성은?')
emails = input('이메일은?')
hdates = input('입사일은?')
jobids = input('직책은?')
sals   = input('급여는?')
deptids = input('부서는?')

#입력한 사원정보를 리스트에 추가
empnos.append(empno)
fnames.append(fname)
lnames.append(lname)
emails.append(email)
hdates.append(hdate)
jobids.append(jobid)
sals.append(sal)
deptids.append(deptid)

for i in range(len(empnos)):
    print(f'{empnos[i]},{fnames[i]},{lnames[i]},'
          f'{emails[i]},{hdates[i]},{jobids[i]},'
          f'{sals[i]},{deptids[i]}')


# 다루어야 하는 데이터의 항목수가 많아질수록 일일이 리스트로 선언해서 저장하는건 불편
# 딕셔너리를 사용하면 편함


        lname.append(input('이름을 입력하시오'))
    for i in range(j) :
        email.append(input('이메일을 입력하시오'))
    for i in range(j) :
        hdate.append(input('입사날짜를 입력하시오'))
    for i in range(j) :
        jobid.append(input('직책을 입력하시오'))
    for i in range(j):
        sal.append(input('급여를 입력하시오'))
    for i in range(j):
        deptid.append(input('부서번호를 입력하시오'))

'Python' 카테고리의 다른 글

PyCharm - Dict  (0) 2022.05.12
PyCharm - Tuple, Set  (0) 2022.05.12
PyCharm - function  (0) 2022.05.11
PyCharm - 반복문(for, while), 난수 (05.10)  (0) 2022.05.11
PyCharm - 연산자, 문자열(String) (05.09)  (0) 2022.05.11