코딩의 기록

따라하며 배우는 파이썬과 데이터과학 8장 심화문제

모루우 2025. 2. 2. 20:00
728x90
반응형

1.

fruits_dic = {'사과': 0, '배': 0, '수박': 0, '귤': 0, '포도': 0}

while True:
    userlist = input("사과, 배, 수박, 귤, 포도 가격을 공백으로 구분하여 입력: ").split()
    count = 0

    print("--------- 오늘의 과일 가격 -------------")

    for x in fruits_dic.keys():
        fruits_dic[x] = userlist[count]
        print(f"{x:2s}: ", fruits_dic[x],"원")
        count += 1


f"{}" 포매팅이 확실히 편하긴 한데 이게 한글이라서 포매팅이 잘 안되긴 한다 그리고 몰랐는데 딕셔너리도 순서가 있었구나

 

2.

fruits_dic = {'사과': 0, '배': 0, '수박': 0, '귤': 0, '포도': 0}


userlist = input("사과, 배, 수박, 귤, 포도 가격을 공백으로 구분하여 입력: ").split()
count = 0

print("--------- 오늘의 과일 가격 -------------")

for x in fruits_dic.keys():
    fruits_dic[x] = userlist[count]
    print(f"{x:2s}: ", fruits_dic[x],"원")
    count += 1

user = input("구매를 원하는 과일의 이름을 입력하시오 : ")

if user in fruits_dic.keys():
    print("오늘의 수박 가격은", fruits_dic[user],"원 입니다.")
else:
    print("잘못 입력하셨습니다.")

 

3.

student_tup = (("211101", "최성훈", "010-1234-4500"), ("211102", "김은지", "010-2230-6540"), ("211103", "이세은", "010-1234-4500"))

student_dic = {}

for i in range(len(student_tup)):
    alist = []
    alist.append(student_tup[i][1])
    alist.append(student_tup[i][2])

    student_dic[student_tup[i][0]] = alist

print("학생의 정보 목록")
print(student_dic)

user = input("학번을 입력하시오 :")
print("이름 :", student_dic[user][0])
print("연락처 :", student_dic[user][1])

items는 키:값 쌍을 튜플로 반환함

 

(4)

student_tup = (("211101", "최성훈", "010-1234-4500"), ("211102", "김은지", "010-2230-6540"), ("211103", "이세은", "010-1234-4500"))

student_dic = {}
sum = 0
for i in range(len(student_tup)):
    alist = []
    alist.append(student_tup[i][1])
    alist.append(student_tup[i][2])
    if i == 0:
        alist.append(4.3)
    elif i == 1:
        alist.append(3.9)
    else:
        alist.append(4.25)

    student_dic[student_tup[i][0]] = alist

for i in student_dic.keys():
    sum += student_dic[i][2]

print("전체 학점의 평균:", f"{sum/len(student_dic):2.2f}")

부동소수점 오차 때문에 4.149999995 뭐 이딴식으로 나와서 round 나 format으로 2자리, 2번째 자리에서 반올림을 지정해줘야 함

 

4.

(1)

lst = [10, 30, 40, 50 ,30, 20, 20, 20, 10, 30]

nodup = []

for x in lst:
    if lst.count(x) == 1:
        nodup.append(x)

print("중복이 없는 원소 :", nodup)

count를 통해서 리스트에 x 원소가 몇개가 있는지 알 수 있음 미친 파이썬

 

(2)

lst = [10, 30, 40, 50 ,30, 20, 20, 20, 10, 30]

lset = set(lst)

print("전체 원소 :", sorted(lset))

sorted는 파이썬 내장 함수 였다

 

(3)

lst = [10, 30, 40, 50 ,30, 30, 20, 20, 20, 10, 30]

lset = set(lst)

for x in sorted(lset):
    if lst.count(x) == 1:
        continue
    else:
        print(x, ":", lst.count(x), "회")

위 두 예제를 합쳤는데 중복되게 나오면 안되므로 찾는 x원소는 집합에서 찾는다

 

5.

dic = {}

print("사전 프로그램 시작... 종료는 q를 입력")

while True:
    user = input("$ ")

    command = user[:1]

    if command == "<":
        alist = user[1:].split(":")

        if len(alist) < 2:
            print("제대로 입력해주세요 키:값 꼴")
        else:
            dic[alist[0].strip()] = alist[1].strip()

    elif command == ">":
        a = user[1:].strip()

        if a in dic:
            print(dic[a])
        else:
            print(f"{a}는(은) 사전에 없습니다")


    elif command == "v":

        print("영어 사전에 있는 단어와 뜻을 출력합니다.")

        for x in dic.keys():
            print(x, ":", dic[x])

    elif command == "q":
        break;

    else:
        print("<, >, v, q 중에서 입력해주세요")

print("프로그램을 종료합니다.")

다시 그냥 처음부터 다 짰는데 전보다 훨씬 깔끔하게 그리고 정답과 비슷하게 코드를 짰다 그러나 사전에 입력한 단어가 없는 경우를 까먹었다 또 f 포매팅도 완벽히 사용해서 좋았음

 

6.

dic = {}

dic2 = {}

count = 0

student_tuple = [('211101', '강이안', '010-123-1111'), ('211102', '박동민', '010-123-2222'), ('211103', '김수정', '010-123-3333')]

for x in student_tuple:
    dic[x[0]] = x[1]
    dic2[x[0]] = x[2]

while True:
    user = input("학번을 입력하세요: ")
    print(user,"학생은", f"{dic[user]}이며, 전화번호는", f"{dic2[user]}입니다.")

일단 짜긴 짰는데 이게 원하는 건진 모르겠다 (학번:이름) 딕셔너리를 이용하여 전화번호 까지 출력되게 하라니

 

 

728x90
반응형