2022년 1학기 중간, 기말고사 기출 풀이

이찬·2023년 8월 5일
0
post-thumbnail

기말고사

Question



ANSWER

class Server:
  def __init__(self):
    self.orderList = []
    self.orderNumList = []

# problem 1
  def makeOrder(self, orderNum, orderProduct):
    self.orderNum = orderNum
    self.orderProduct = orderProduct
    if self.orderNum not in self.orderNumList:
      order = [[self.orderNum, self.orderProduct]]
      self.orderList.extend(order)
      self.orderNumList.append(self.orderNum)
      return order[0]
    elif self.orderNum in self.orderNumList:
      return -1

# problem 2
  def getWaitingTime(self, orderNum, makingTime):
    self.makingTime = makingTime
    totalTime = 0
    if orderNum in self.orderNumList:
      indexNum = self.orderNumList.index(orderNum)
      for i in range(0, indexNum+1):
        productAmount = len(self.orderList[i][1])
        totalTime = totalTime + (productAmount * makingTime)
      return totalTime
    else :
      return -1

# problem 3
  def serveOrder(self):
    k = self.orderList.pop(0)
    self.orderNumList.pop(0)
    return k[0], k[1]

# problem 4
  def getOrderNumber(self):
    return len(self.orderNumList)

# problem 5
  def cancelOrder(self, orderNum):
    if orderNum in self.orderNumList:
      indexNum = self.orderNumList.index(orderNum)
      k = self.orderList.pop(indexNum)
      self.orderNumList.pop(indexNum)
      return k
    else:
      return -1, '-1'

  # problem 6
  def makeOrderVIP (self, orderNum):
    self.vipList = []
    self.vipListNum = []
    if orderNum not in self.orderNumList:
      lis = [[orderNum, []]]
      self.orderList = lis + self.orderList
      numLis = [orderNum]
      self.orderNumList = numLis + self.orderNumList
      return self.orderNumList
    else:
      return -1, '-1'

  # problem 7
  def giveService(self, orderNum, service):
    self.service = service
    if orderNum in self.orderNumList:
      indx = self.orderNumList.index(orderNum)
      k = self.orderList[indx]
      k.append(self.service)
      k = [k]
      self.orderList = self.orderList[:indx] + k + self.orderList[indx+1:]
      self.orderNumList = self.orderNumList[:indx] + [orderNum] + self.orderNumList[indx+1:]
      first = k[0][0]
      second = k[0][1]
      return first, second
    else:
      return -1, '-1'

  # problem 8
  def getOrderItems (self):
    Num = 0
    for i in range(len(self.orderList)):
      k = len(self.orderList[i][1])
      Num = Num + k
    return Num

STEP 1

list의 추가
1. + : 2개의 [] 안의 값을 합친 1개의 [] 반환
2. append: 값을 반환하지 않고, 원본 데이터에 입력값을 추가해줌
3. extend: 리스트를 입력값으로 받아, 입력값으로 받은 리스트의 요소를 모두 추가해줌, list 자체를 추가하고 싶다면, (추가할 때 []를 살리고 싶으면) [[]]로 이중으로 배열 처리해주어야 함!

비어있는 리스트를 생성한 후에, 값을 추가하기
a = list()


리스트의 함수

  • 리스트 요소 꺼내기(pop)
    a = list.pop(n)
    n을 입력하지 않으면 리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제한다.

  • 리스트 요소 삭제하기 (del)
    del a[2:]

  • 리스트 요소 삭제하기 (remove)
    리스트에서 처음으로 등장하는 입력값을 삭제

a = [1,2,3,4,1,2]
a.remove(1)
print(a)
# >>>[2,3,4,1,2]  

python - index
index(값) : 특정 값의 인덱스의 위치를 확인해 주는 함수

tu = ("red", "blue", "green","pink","red")
k = tu.index("red")
print(k)
#0

list 원소 삭제
del 키워드를 통한 삭제

>> a = [1, 2, 3, 4, 5, 6, 7]
>> del a[1]
>> a
# [1, 3, 4, 5, 6, 7]
  • list의 remove메소드에 의한 삭제
    list.remove(찾을아이템)
    찾을 아이템이 없으면 ValueError 발생
>> a = [1, 2, 3, 4, 5, 6, 7]
>> a.remove(3)
>> a
[1, 2, 4, 5, 6, 7]
>> a.remove(9)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
  • del키워드와 리스트의 index메소드와 혼합하여 사용하면 remove효과가 난다.
>> a = [1, 2, 3, 4, 5, 6, 7]
>> del a[a.index(3)]
>> a
[1, 2, 4, 5, 6, 7]

리스트 안의 값을 변경하는 것도 가능!

list4 = ["song", ["chang", "hwan"], ["hi","Hello"]]
list4[0] = "Kim"
list4[1][1] = "su"
print(list4)
# >>> ['Kim'['chang','su',['hi','hello']]]

+ 일정 부분 코드를 완료하고 나서는 꼭 검토를 하자!

내가 생각한 대로 결과가 나오지 않을 수도 있다.


검토 코드

#1
order = Server()
order.makeOrder('1',['d','e','f'])
order.makeOrder('12',['t','y','u'])
order.makeOrder('123',['h','j','k'])
order.makeOrder('1234',['a','b','c'])
order.makeOrder('12345',['m','n','b'])
order.makeOrder('123456',['u','o','p'])
print("#", order.makeOrder('1234567',['w','a','z']))
print("#1", order.orderNumList)
print("#1",order.orderList)
print()

#2
print("#", order.getWaitingTime('12',2))
print("#", order.getWaitingTime('123',4))
print("#2", order.orderNumList)
print("#2",order.orderList)
print()

#3
print("#", order.serveOrder())
print("#3", order.orderNumList)
print("#3",order.orderList)
print()
#4
print("#", order.getOrderNumber())
print("#4", order.orderNumList)
print("#4",order.orderList)
print()

#5
print("#", order.cancelOrder('12'))
print("#5", order.orderNumList)
print("#5",order.orderList)
print()

#6
print("#", order.makeOrderVIP('123456789'))
print("#6", order.orderNumList)
print("#6",order.orderList)
print()
#7
print("#", order.giveService('1234','good'))
print("#7", order.orderNumList)
print("#7", order.orderList)
print()
#8
print("#8",order.getOrderItems())

# result
# ['1234567', ['w', 'a', 'z']]
#1 ['1', '12', '123', '1234', '12345', '123456', '1234567']
#1 [['1', ['d', 'e', 'f']], ['12', ['t', 'y', 'u']], ['123', ['h', 'j', 'k']], ['1234', ['a', 'b', 'c']], ['12345', ['m', 'n', 'b']], ['123456', ['u', 'o', 'p']], ['1234567', ['w', 'a', 'z']]]

# 12
# 36
#2 ['1', '12', '123', '1234', '12345', '123456', '1234567']
#2 [['1', ['d', 'e', 'f']], ['12', ['t', 'y', 'u']], ['123', ['h', 'j', 'k']], ['1234', ['a', 'b', 'c']], ['12345', ['m', 'n', 'b']], ['123456', ['u', 'o', 'p']], ['1234567', ['w', 'a', 'z']]]

# ('1', ['d', 'e', 'f'])
#3 ['12', '123', '1234', '12345', '123456', '1234567']
#3 [['12', ['t', 'y', 'u']], ['123', ['h', 'j', 'k']], ['1234', ['a', 'b', 'c']], ['12345', ['m', 'n', 'b']], ['123456', ['u', 'o', 'p']], ['1234567', ['w', 'a', 'z']]]

# 6
#4 ['12', '123', '1234', '12345', '123456', '1234567']
#4 [['12', ['t', 'y', 'u']], ['123', ['h', 'j', 'k']], ['1234', ['a', 'b', 'c']], ['12345', ['m', 'n', 'b']], ['123456', ['u', 'o', 'p']], ['1234567', ['w', 'a', 'z']]]

# ['12', ['t', 'y', 'u']]
#5 ['123', '1234', '12345', '123456', '1234567']
#5 [['123', ['h', 'j', 'k']], ['1234', ['a', 'b', 'c']], ['12345', ['m', 'n', 'b']], ['123456', ['u', 'o', 'p']], ['1234567', ['w', 'a', 'z']]]

# ['123456789', '123', '1234', '12345', '123456', '1234567']
#6 ['123456789', '123', '1234', '12345', '123456', '1234567']
#6 [['123456789', []], ['123', ['h', 'j', 'k']], ['1234', ['a', 'b', 'c']], ['12345', ['m', 'n', 'b']], ['123456', ['u', 'o', 'p']], ['1234567', ['w', 'a', 'z']]]

# ('1234', ['a', 'b', 'c'])
#7 ['123456789', '123', '1234', '12345', '123456', '1234567']
#7 [['123456789', []], ['123', ['h', 'j', 'k']], ['1234', ['a', 'b', 'c'], 'good'], ['12345', ['m', 'n', 'b']], ['123456', ['u', 'o', 'p']], ['1234567', ['w', 'a', 'z']]]

#8 15

중간고사

QUESTION


ANSWER

#1
def function1(a,b):
  return a+b
#2
def function2 (a,b):
  al = len(a)
  bl = len(b)
  return al + bl

#3
def fumction3(a,b):
  b = int(b)
  return a*b

#4
def function4(a,b):
  if b in a:
    return True
  else:
    return False
#5
def function5(a,b):
  a = int(a)
  b = int(b)
  k = 0
  for i in range(a,b+1):
    k += i
  return k
#6
def function6(a, b):
  if b in a:
    return True
  else:
    return False
#7
def function7(a):
  k = 0
  for i in a:
    k += a
  return k

#8
def function8(a):
  k = 0
  for i in a:
    if i % 2 == 0:
      k+=a
  return k
#9
def function9(a,b):
  if b in a:
    a.remove(b)
    return a
  else:
    return False

range() 함수를 이용해서 range 객체를 생성합니다. range(1, 101)와 같이 코딩해주면 1부터 101에서 하나 뺀 100까지의 연속적인 숫자가 들어갑니다. 그 다음에 list() 함수 안에 range 객체를 넣어줌으로 리스트로 변환합니다. 그러면 1부터 100까지의 원소가 담긴 리스트가 완성됩니다. 다음과 같은 한 줄의 코드로 나타낼 수 있습니다.
list(range(a, b))

profile
Kyunghee univ. IE 21

0개의 댓글