Python_간단 코딩

조아연·2024년 10월 1일
post-thumbnail

배웠던 내용들을 활용하여 아래와 같은 프로그램 코딩하기


1. 이름 추가,변경,삭제 가능한 프로그램

컨셉 : 제품명
빈 리스트 생성 > 리스트 사용 필요
print 메뉴 설정 > 함수 사용 필요
1) 2) 에서 name을 추가하고 변경시키기 위해서 > input 필요


[TERMLNAL]

1) Add name
2) Change name
3) Delete name
4) Print
5) Quit

1 입력

Enter action to do : 1
Enter name to add to names list : aaa


name = []            # name 을 받을 리스트 생성

def add_name():      # 1) add_name의 함수 설정 
    ask_name = str(input('Enter name to add to names list :'))  # 입력값을 문자열로 받음
    name.append(ask_name)   # name 리스트 뒤에 입력받은 문자열을 추가

def change_name():  # 2) change_name 함수 설정
    print_names()   # 이름 목록 호출하는 함수 호출 
    row_ask = int(input('Enter row number to change name :')) # 변경할 인덱스 번호 입력받음
    ask_name = str(input('Enter name : '))                    # 변경할 이름을 입력받음
    name[row_ask] = ask_name # 입력받은 index의 이름을 변경
    print_name()

def delete_name():  # 3) delets_name 함수 설정
    print_names()   # 이름 목록 호출하는 함수 호출 
    row_ask = int(input('Enter row number to delete name :'))
    name.pop(row_ask)  # name 리스트에서 입력받은 숫자 인덱스에 위치한 요소를 제거하고 반환

def print_name():   # 특정 기능 후 리스트의 상태를 출력, 2)번 함수 호출 이후 리스트 상태 출력
    count_row = 0   # 초기 변수 0으로 설정
    for row in name:  # name 리스트의 각 항목을 반복 
        print('Row' + str(count_row) + ':' + str(row))  # Row 1 : (name의 1번 인덱스 호출)

def print_names(): # 4) print 함수 설정, 리스트에 있는 전체 이름을 보여줄 때 사용 
    count_row = 0  # 초기 변수 0으로 설정, 해당 함수 내에서만 활용되기에 변수명 겹쳐도 괜찮음
    for row in name:
        print('Row' + str(count_row) + ' : ' + str(row))
        count_row += 1

def main() :       # 항목을 보여주는 메인 함수 생성
    while True:    # 반복문을 통해 각 항목 반복하며 프린트 
        print('1) Add name')
        print('2) Change name')
        print('3) Delete name')
        print('4) Print')
        print('5) Quit')
        ask = int(input('Enter action to do :'))    # ask 변수를 통해 정수 입력받음
        if ask == 1:     #  ask 가 1이라면 add_name 함수로 보냄
            add_name()
        elif ask ==2:    #  ask 가 2이라면 change_name 함수로 보냄
            change_name()
        elif ask ==3:    #  ask 가 3이라면 delete_name 함수로 보냄
            delete_name()
        elif ask ==4:    #  ask 가 4이라면 print_names 함수로 보냄
            print_names()
        elif ask ==5:    #  ask 가 5라면 good bye 출력
            print('Good bye')
        else:            #  그 외에는 재시도 문구 출력
            print('Invalid input, please try again')

main()

- 1번) 동작 확인

- 2번) 동작 확인

- 3번) 동작 확인

- 4번) 동작 확인

- 5번) 동작 확인

5번 quit 동작 입력 시에도 또 메뉴가 노출되는게 어색한 것 같아서
break 문을 추가해서 main이 노출되지 않도록 수정했다.

 elif ask ==5:
 	print('Good bye')
    break

- 5번) 수정 후 확인


2. 평점 계산 프로그램

점수 입력 받아야함 > input 사용
빈 리스트 생성 > 리스트 사용 필요
1) 2) 에서 name을 추가하고 변경시키기 위해서 > input 필요


score = []       # 값을 저장시킬 빈 리스트 생성
 
while True:      # while True 무한루프 반복문, 특정 조건 입력 시 까지 반복
    kor = int(input("국어 점수를 넣어주세요. : "))  # 값을 입력받고 int(정수형)으로 저장
    eng = int(input("영어 점수를 넣어주세요. : "))
    math = int(input("수학 점수를 넣어주세요. : "))

    if kor == 0 and eng == 0 and math == 0:    # 만약 변수들의 입력 값이 0 이면
        break                                  # 종료시킴

    my_sum =  kor + eng + math                 # 총점 
    my_avg = my_sum / 3.0                      # 평균

    score.append((kor, eng, math, my_sum, my_avg))  # () 튜플 형태로 리스트 뒤에서부터 추가함 
                                                    # 튜플 : 값을 변경할 수 없음
  # score.append([kor, eng, math, my_sum, my_avg])  # 리스트 : 값을 변경 할 수 있음
    print()                                         # print가 없으면 국어/영어/수학 점수 input문이 구분없이 반복됨
                                                    # 구분을 위해 print 사용

"""
현재 추가되고 있는 방식 (튜플)                                                    
socre = [
        (kor1, eng1, math1, my_sum1, my_avg1),
        (kor2, eng2, math2, my_sum2, my_avg2),
        ]

그 외 추가 방식 (리스트)
socre = [
        [kor1, eng1, math1, my_sum1, my_avg1],
        [kor2, eng2, math2, my_sum2, my_avg2],
        ]
"""


j = 1              # j : 순서 
for i in score:    # score 내 i(인덱스) 각 항목을 순회
    print(j, "국어 : %3d, 영어 : %3d, 수학 : %3d, 총점 : %3d, 평균 : %2f" % (i[0],i[1],i[2],i[3],i[4])) 
                                                                        # 튜플의 i요소에 접근하여 값을 참조 
                                                                        # i번째 튜플 항목의 0번째 인덱스, 1번째 인덱스.. 
                                                                        # % : 변수를 문자열 안에 삽입 
    j += 1                                          # %3d : 자리수 3자리
                                                    # %2f : 소수점 둘째 자리
print("총 %d 명 처리하였습니다." % (j-1))

- 동작 확인

지금 상태로도 동작되지만, 아래와 같이 3개의 과목을 나누라고 직접 숫자를 지정해놨다.

    my_sum =  kor + eng + math                
    my_avg = my_sum / 3.0    

만약 입력받은 갯수만큼 나누기를 해 평균을 구하고 싶으면 리스트를 하나 더 추가해 수정 가능하다.

 	subjects = [kor,eng,math]  		# 과목 점수를 리스트에 먼저 저장
    my_sum = sum(subjects)      	# 합계를 리스트와 sum을 통해 합계 계산
    my_avg = my_sum / len(subjects) 	# 합계를 len(길이)를 통해 나눔
profile
비전공자 QA의 자기개발 공부노트

0개의 댓글