travel data science
[Numpy] 1.Numpy기초와 인덱싱 (1주차 스터디) 본문
*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와 비슷함. (쉼표로 띄울 수 있는건 다른 듯)
- 재귀함수를 호출하여 잘못 입력받은 값을 다시 받을 수 있는 것이 인상적임.
'Python study' 카테고리의 다른 글
백준 11022번 (0) | 2021.10.03 |
---|---|
백준 15552번 (0) | 2021.10.03 |
재귀호출 알고리즘 (0) | 2021.09.30 |
[python basic] 3. 데이터 타입과 컬렉션 (0) | 2021.09.02 |
[Numpy] 2. 배열 생성 및 차원 변경, random함수, 통계(중앙값, 평균, 합계, 평균), 정렬 (2주차 스터디) (0) | 2021.07.28 |