Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

travel data science

[Numpy] 1.Numpy기초와 인덱싱 (1주차 스터디) 본문

Python study

[Numpy] 1.Numpy기초와 인덱싱 (1주차 스터디)

가방이 2021. 7. 5. 16:14

*numpy: 대용량의 배열과 행렬 연산을 빠르게 수행, 수학연산자와 함수를 포함한 파이썬 라이브러리

 

*

y=np.array([1, 2], [3, 4])

일 때

y[0][1]
y[0, 1]

은 같음

 

*

y<3

으로 논리적인 인덱싱도 가능

 

*응용 문제

  - 판매 이력을 입력받고, 출력함. numpy만의 배열을 쓰는게 특징

##재귀함수 있는 부분
import numpy as np
def situation_insert(x):
    y=x
    if x!="1"and x!="2":
        y=input("1이나 2를 입력해주시기 바랍니다 > ")
        situation_insert(y)
    return y

def sales(a):
    b=a.isnumeric()
    if b!=True:
        print("입력오류")
        a=-1
    else:
        a=int(a)
        if a>100:
            print("입력오류")
            a=-1
    return a

save_a=[['코드', '수량', '매입단가','매출단가', '매입금', '매출금', '이익금']]
save_all=save_a
save_array=np.array(save_all)
while True:
    status=input("프로그램 종료 하시겠습니까?(y/n)")
    print("=============================================")
    if status=='y' or status=="Y":
        print("프로그램을 종료합니다.")
        break
        
    elif status=="n" or status=="N":
        print("가방이상점 판매현황 프로그램")
        print("=============================================")
        print("1. 매출 입력")
        print("2. 결과 출력")
        print("=============================================")
        situation=input("> ")
        situation=situation_insert(situation)
        print("=============================================")
        if situation=="1":
            
            code=input("물품코드: ") #코드
            if len(code)!=1:
                print("입력오류")
                continue
            elif code.upper() in save_array or code.lower() in save_array:
                print("입력오류")
                continue
            print("=============================================")
            
            num=input("물품수량: ") #수량
            if sales(num)==-1:
                continue
            print("=============================================")
            
            purchase_price=input("매입단가: ") #매입단가
            if sales(purchase_price)==-1:
                continue
            print("=============================================")
            
            unit_price=input("매출단가: ") #매출단가
            if sales(unit_price)==-1:
                continue
            print("=============================================")
            
            save=input("저장하시려면 y를 눌러주세요")
            if save=='y' or save=='Y':
                price1=int(purchase_price)*int(num)#매입금
                price2=int(unit_price)*int(num)    #매출금
                price3=price2-price1               #이익금
                
                save_b=[[code, num, purchase_price, unit_price, price1, price2, price3]]
                save_all=save_all+save_b
                save_array=np.array(save_all)
        
        elif situation=='2':
            for i in range(0, save_array.shape[0]):
                print("----------------------------------------------")
                for k in range(0, 7):
                    if i==0:
                        print(save_array[i][k], end="  ")
                    else:
                        print(save_array[i][k], end="       ")
                print("")
    else:
        print("y나 n으로 다시 입력해주시기 바랍니다.")

  - 인덱싱이 list와 비슷함. (쉼표로 띄울 수 있는건 다른 듯)

  - 재귀함수를 호출하여 잘못 입력받은 값을 다시 받을 수 있는 것이 인상적임.