8.1 철수네 과일가게는 "사과", "배", "수박", "귤", "포도"를 판매하는 중이다. 매일 매일 입고되는 가격에 따라서 가격이 결정되므로 아침마다 각 과일의 가격을 입력하는 기능을 만들어서 입력하면 이를 출력하여 다음과 같이 표시하고자 한다. 이와 같은 기능을 수행하는 파이썬 프로그램을 작성하여라. 이때 {'사과' : 3000}과 같이 입력된 값을 키-값의 쌍으로 된 fruits_price 딕셔너리에 추가한 후 for 문과 items()를 사용하여 출력하도록 하여라.
# your code here
사과, 배, 수박, 귤, 포도 가격을 공백으로 구분하여 입력: 3000 4500 6000 2400 3400 -----------------오늘의 과일 가격 ------------ 사과: 3000원 배: 4500원 수박: 6000원 귤: 2400원 포도: 3400원
8.2 8.1번 문제에서 입력받은 fruits_price 딕셔너리의 가격정보를 사용하여 고객이 과일의 이름을 알려주는 다음과 같은 프로그램을 작성하여라.
# your code here
구매를 원하는 과일의 이름을 입력하시오 : 포도 오늘의 포도 가격은 3400 원 입니다.
8.3 학번, 이름, 전화번호의 3쌍의 요소를 가지는 student_tup라는 튜플이 다음과 같이 존재한다.
##### Don't modify this cell #####
student_tup = (('21101', '최성훈', '010-1234-4500'), ('21102', '김은지', '010-2230-6540'), ('21103', '이세은', '010-3232-7788'))
8.3.1 이 튜플을 수정하여 {학번 : [이름, 전화번호]}의 쌍으로 이루어진 딕셔너리를 만들어서 출력하여라.
# your code here
학생의 정보목록 {'21101': ['최성훈', '010-1234-4500'], '21102': ['김은지', '010-2230-6540'], '21103': ['이세은', '010-3232-7788']}
8.3.2 이 정보를 이용하여 학생의 학번을 입력으로 받아서 이름과 전화번호를 출력하는 학사 정보 프로그램을 작성하여라.
# your code here
학번을 입력하시오 : 21103 이름 : 이세은 연락처 : 010-3232-7788
8.3.3 student_tup의 마지막 항목으로 직전학기의 학점을 추가하여라. 세 학생의 학점은 각각 4.3, 3.9, 4.25이다. 이 정보를 바탕으로 다음과 같은 딕셔너리를 만들어서 학생 정보를 출력하여라.
# your code here
학생의 정보 목록 {'21101': ['최성훈', '010-1234-4500', 4.3], '21102': ['김은지', '010-2230-6540', 3.9], '21103': ['이세은', '010-3232-7788', 4.25]}
8.3.4 문제 8.3.3의 정보를 이용하여 for 반목문과 인덱싱을 통해서 세 학생의 학점의 평균값을 다음과 같이 출력하여라.
# your code here
전체 학생의 학점 평균 : 4.1499999999999995
8.4 다음과 같은 리스트 데이터가 있다. 이 데이터에서 중복되는 원소는 10, 20, 30 이며 각각 2회, 3회, 4회 나타난다. 중복되는 원소를 한 번씩만 출력하도록 프로그램을 작성하여라.
##### Don't modify this cell #####
lst = [10, 30, 40, 50, 30, 30, 20, 20, 20, 10, 30]
# your code here
{40, 10, 50, 20, 30}
Colab notebook에서 파일 불러오는 방법
import os
from google.colab import drive
drive.mount('/content/drive')
os.chdir('/content/drive/MyDrive/Colab Notebooks')
8.5 triangles.txt에는 서로 다른 세 개의 점이 직교 좌표계에 표현되어 삼각형을 이룬다. 다음과 같이 두개의 삼각형을 가정해보자.
$$
A_1(-300, 400), B_1(-140, -800), C_1(835, 847)
$$
$$
A_2(-170, 40), B_2(-400, -720), C_2(570, -650)
$$
다음 그림과 같이 삼각형 $A_1B_1C_1$은 원점을 포함하지만, $A_2B_2C_2$는 원점을 포함하지 않는다. traingles.txt에는 천개의 삼각형의 데이터가 존재한다. 천개의 삼각형 중 원점을 포함하는 삼각형의 갯수를 구하여라.
##### Don't modify this cell #####
import matplotlib.pyplot as plt
def plot_tri(XYZ):
XYZ.append(XYZ[0])
xs, ys = zip(*XYZ)
plt.figure(figsize=(5,5), dpi=100)
plt.plot(xs,ys, color='b')
plt.scatter(0, 0, color='k', label="origin")
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.xlim(-1000, 1000)
plt.ylim(-1000, 1000)
plt.grid()
plt.show()
ABC_1 = [[-300, 400], [-140, -800], [835, 847]]
ABC_2 = [[-170,40], [-400, -720], [570, -650]]
plot_tri(ABC_1)
plot_tri(ABC_2)
Hint1. 삼각형 ABC가 원점을 포함할 경우, 세개의 삼각형 ABO, AOC, OBC의 넓이의 합이 ABC의 넓이와 동일하다.
Hint2. 직교 좌표계에서 세 개의 점으로 이루어진 삼각형 넓이를 구하는 공식은 다음과 같다.
$$ A = (x_A, y_A), B = (x_B, y_B), C = (x_C, y_C) $$$$ Area = \frac{1}{2}\left| (x_A-x_C)(y_B-y_A)-(x_A-x_B)(y_C-y_A) \right| $$Hint3. readlines() 함수는 한 번에 모든 줄을 읽고, 한줄로 된 문자열 리스트를 반환한다.
##### Don't modify this cell #####
ABC = [[-300, 400], [-140, -800], [835, 847]]
ABC.append(ABC[0])
xs, ys = zip(*ABC)
ABO = [ABC[0], ABC[1], [0,0]]
ABO.append(ABO[0])
xs1, ys1 = zip(*ABO)
AOC = [ABC[0], [0,0], ABC[2]]
AOC.append(AOC[0])
xs2, ys2 = zip(*AOC)
OBC = [[0,0 ], ABC[1], ABC[2]]
OBC.append(OBC[0])
xs3, ys3 = zip(*OBC)
plt.figure(figsize=(5,5), dpi=100)
plt.plot(xs,ys, color='k')
plt.plot(xs1,ys1, color='b', linestyle=':', alpha=0.3)
plt.plot(xs2,ys2, color='b', linestyle=':', alpha=0.3)
plt.plot(xs3,ys3, color='b', linestyle=':', alpha=0.3)
plt.scatter(0, 0, color='k', label="origin")
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.xlim(-1000, 1000)
plt.ylim(-1000, 1000)
plt.grid()
plt.show()
# your code here