KG_KAIROS/Python

[KG_KAIROS] 파이썬 강의_3(numpy)

projectlim 2024. 7. 2. 17:48
728x90
반응형
SMALL

2024.07.03

 

오늘은 class numpy를 복습하고

try:except를 통해 예외처리를 학습하였습니다.

그리고 행열의 기본인 matrix를 공부하였습니다,

try:
  a=[1,2]
  print(a[3])
  4/0

except ZeroDivisionError:
  print('0으로 나눌수없다')

except IndexError:
  print('인덱싱 할 수 없다')


except Exception as e:
  print('에러발생:',e)

이런식으로 예외처리 케이스를 두어 오류를 출력하여 확인할 수 있겠죠?

 

 

그러면 어제 배운 class와 오늘 배운 try:except를 응용하여 예제를 풀어보겠습니다,

class MyError(Exception):
  pass

def say_nick(nick):
  if nick =='바보':
    raise MyError()
  print(nick)

try:
  say_nick('천사')
  say_nick('바보')

except MyError:
  print('허용되지 않은 별명')

결과창

물론 class를 사용하지 않고 함수만 불러왔지만 class 만드는것에 ㅎㅎ

 

자, 그리고 오늘의 미션!!! 카페의 매출표 작성 프로그램 코딩하기...!!!

coffee = np.array([90,33,59,89,33,54,76,20])
cake = np.array([70,30,50,66,23,48,24,5])
coffee_total = coffee*4100
print("coffee_total: ",coffee_total)
cake_total = cake*6800
print("cake_total:",cake_total)
day_total= coffee_total+cake_total
print("dat_total:",day_total)

coffee_sum=np.sum(coffee_total)
print("커피 총매출:",coffee_sum,"원 입니다.")
cake_sum=np.sum(cake_total)
print("케이크 총매출:",cake_sum,"원 입니다.")
coffee_mean=np.mean(coffee_total)
print("커피 평균 매출:",coffee_mean,"원 입니다.")
cake_mean=np.mean(cake_total)
print("케이크 평균 매출:",cake_mean,"원 입니다.")
coffee_max=np.max(coffee_total)
print("커피 가장 큰 매출 금액:",coffee_max,"원 입니다.")
cake_max=np.max(cake_total)
print("케이크 가장 큰 매출금액 :",cake_max,"원 입니다.")
coffee_min=np.min(coffee_total)
print("커피 가장 작은 매출 금액:",coffee_min,"원 입니다.")
cake_min=np.min(cake_total)
print("케이크 가장 작은 매출금액 :",cake_min,"원 입니다.")
day_max=np.argmax(day_total)
print("매출 가장 많은 날:",day_max+1,"일 입니다.")
day_min=np.argmin(day_total)
print("매출 가장 적은 날:",day_min+1,"일 입니다.")
#변경 못해먹...일별 판매수량....뿌에에ㅔㅔㅔㅔ

결과창입니다.

1차로 작성한 코드입니다. 내장함수를 이용해서 작성을 하였는데 사실 한줄로 표현하는게 더 이뻐 보이겠죠?

그래서 다시 수정해보면? 

#커피와 케이크 일별매출구하기
#스타벅스 리스트에는 판매 개수가 들어있다.
#가격을 참고해서 커피와 케이크 각각 일별 매출을 구하라
#케이크단가 6,800, 커피단가 : 4,100
#판매개수
import numpy as np

coffee=[90,33,59,89,33,54,76,20]
cake = [70,30,50,66,23,48,24,5]

coffee=np.array(coffee)*4100
cake=np.array(cake)*6800
print(f'coffe : {coffee}')
print(f'cake : {cake}')

day_total=coffee+cake
print(f'day_total:{day_total}')

coffee_sum = np.sum(coffee)
cake_sum   = np.sum(cake)
coffe_avr  = int(coffee_sum/len(coffee))
cake_avr   = int(cake_sum/len(cake))

print(f"커피의 총 매출은     : {coffee_sum}원 입니다.")
print(f"케이크의 총 매출은   : {cake_sum}원 입니다." )
print(f"커피의 평균 매출은   : {coffe_avr}원 입니다." )
print(f"케이크의 평균 매출은 : {cake_avr}원 입니다." )

간결하게 되겠죠?

 

이번엔 배열로 가봅시다.

1.

# 1. 크기가 (4, 4)인 2차원 배열을 생성하고, 모든 요소를 0으로 초기화

array = np.zeros((4, 4))
print("초기화된 배열:")
print(array)

2.

# 2. 생성한 배열에서 대각선 요소를 1로 변경 (for 루프 사용)
for i in range(array.shape[0]):
    array[i, i] = 1
print("\n대각선 요소를 1로 변경한 배열 (for 루프 사용):")
print(array)

3.

# 3. 배열의 각 행과 열의 합을 계산
row_sums = array.sum(axis=1)
col_sums = array.sum(axis=0)
print("각 행의 합:", row_sums)
print("각 열의 합:", col_sums)

요래 됐거든예~~~

 

그리고 수업 마무리직전 문제를 내주셨는데 간단하게 작성해보았습니다.

 

같이 풀어 봐여.

[문제1]

정수 2개를 입력받아 첫번째 입력 받은 숫자부터 두번째 입력받은 숫자까지의 합을 구하시오. (단, 두번째 숫자는 첫번째 숫자보다 큰 숫자를 입력해야 합니다) 조건 : while문

첫번째 숫자를 입력하세요. 1

두번째 숫자를 입력하세요. 10

1+2+3+4+5+6+8+9+10 = 55

x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,  12, 13, 14, 15, 16, 17, 18, 19, 20])

# 문제 1: 3의 배수 찾기
m3 = x[x % 3 == 0]
print("3의 배수:", m3)

#문제2 : 4로 나누면 1이 남는 수
d4 = x[x%4 == 1]
print('4로 나누면 1이 남는 수: ',d4)

# 문제3 : 3으로 나누면 나누어지고, 4로 나누면 1이 남는 수
n3 = x[(x % 3 == 0) & (x%4 == 1)]
print(n3)

[문제2]

#문제 설명
#주사위 눈의 개수를 정한다.
#n과 m이 주사위를 굴려
#경우의 수를 뽜밥


n= int(input("첫번째 주사위:1~6"))
m= int(input("두번째 주사위:1~6"))
for i in range(1,n+1):
  for j in range(1,m+1):
    print(i,j)

요래 됩니다.

 

문제 3번은

이해를 잘 못했지만 문자를 입력받아서 그 입력받은 알파벳 문자 전까지를 출력하는겁니다.

 

올리기만 해두겠습니다.

 

c = ord(input("알파벳 입력"))
t=ord('a')
while t<=c:
  print(chr(t),end='')
  t+=1

 

이상 금일 파이썬 후기를 마치겠습니다~ 

728x90
반응형
LIST