과제

컴사파 - 4주차

とおき 2022. 9. 22. 10:54

4.1 튜플 (year, month, day)로 표현되는 날짜 (date)을 표준 입력장치로 부터 10개 입력하여 날짜 튜플 리스트 (list of date-tuples)포함시킨 후, 이 날짜들을 오름차순으로 정렬하는 파이썬 프로그램을 작성하라. 입력 날짜는 무작위로 설정할 것.

# 22211975_homework4
"""
 Project: 22211975_homework4.1
 Author: 
 Date of last update: 22.09.22
 Update list:
     -v1.0: 22.09.22
         - added source code
""" 

L_dates = [] # 튜플 저장용 list

for i in range(10): 
    # tuple 데이터 자체를 list 에 append 함
    data = tuple(map(int, input("Input 10 dates in (year month day) format: ").split()))
    L_dates.append(data) # data에 저장된 튜플 데이터를 L_dates에 추가
    print(“L_dates = ”, L_dates)

print("After input of 10 dates:", L_dates)
L_dates.sort() # 오름차순 정렬
print("After sorting:", L_dates)

4.2 튜플 (학생이름, 학번, 학과명, 평균성적)로 표현되는 학생 (Student)의 정보를 10개 준비하여 학생 튜플 리스트

(list of student-tuples)를 생성하라. 이 학생 튜플을 오름차순으로 정렬 (별도의 정렬 기준 설정 없이)하고, 결과를 출력하라. 다음으로 학생튜플을 학점을 기준으로 역순으로 정렬하여 출력하라.

# 22211975_homework4
"""
 Project: 22211975_homework4.2
 Author: 
 Date of last update: 22.09.22
 Update list:
    -v1.0: 22.09.22
        - added source code
    -v1.1: 22.09.22
        - 데이터를 보기좋게 출력되도록 함
""" 
# 튜플 (학생이름, 학번, 학과명, 평균성적)로 표현되는 학생 (Student)의 튜플 리스트 10개 
std_list = [('민준', '2221111', 'CE', '4.10'),
            ('서준', '2221112', 'EE', '3.78'),
            ('도윤', '2221113', 'ICE', '4.13'),
            ('예준', '2221114', 'ME', '3.55'),
            ('시우', '2221115', 'ICE', '4.45'),
            ('서연', '2221116', 'CE', '4.17'),
            ('서윤', '2221117', 'EE', '3.78'),
            ('지우', '2221118', 'ICE', '4.13'),
            ('서현', '2221119', 'CE', '3.35'),
            ('하은', '2221120', 'CE', '4.45')]

# 학생 목록 출력
for i in range(10):
    print(f"student[", i, "]", ":", std_list[i])

# 학생 튜플을 오름차순으로 정렬하여 출력(별도의 정렬 기준 설정 없음)
std_list.sort()

print("After sorting in increasing order: ")
for i in range(10):
    print(f"student[", i, "]", ":", std_list[i])

#  학생튜플을 학점을 기준으로 역순으로 정렬하여 출력
#  key=lambda x: x[3] > 튜플 데이터에서 네번쨰 index에 있는 값 기준(학점)으로 정렬함.; reverst = True 있어서 역순으로 정렬됨
sort_std_list = sorted(std_list, key=lambda x: x[3], reverse=True)

print("After sorting according to GPA in decreasing order: ")
for i in range(10):
    print(f'student[', i, ']', ':', sort_std_list[i])

 

 

4.3 10개의 국가에 대하여 문자열 (str) 자료형의 국가 이름과 수도 이름을 입력받고, 국가의 이름을 딕셔너리의

key로 사용하고, 그 국가의 수도의 이름 (문자열 자료형)value로 사용하는 딕셔너리 (dict_country_capital)

구성하라. 입력장치로 부터 국가 이름을 입력받아 해당 국가의 수도 이름을 찾아내는 파이썬 프로그램을 작성하라.

# 22211975_homework4
"""
 Project: 22211975_homework4.3
 Author: 
 Date of last update: 22.09.22
 Update list:
     -v1.0: 22.09.22
         - added source code
""" 
# data 저장용 dictionary
dict = {}

# 총 10개의 국가에 대하여 문자열 (str) 자료형으로 입력받는 반복문
for i in range(10):
    country, city = map(str, input("Input nation and its capital (. to quit) : ").split())
    dict[country] = city # country 값을 key에, city 값을 value 에 저장함
print("dict_nation_capital : ", dict)

# 입력장치로 부터 국가 이름을 입력받아 해당 국가의 수도 이름을 찾아내는 반복문
while True:
    search = input("Input nation to find its capital : ")
    if search == '.': # '.' 가 입력되었다면 반복문 종료
        break
    else:
        print(f"The capital of {search} is {dict.get(search)}") # key 값을 입력받아 해당 key 값에 부합하는 value 값 print