Python-study-2

2주차

2주차입니다! 아래 내용을 공부한 다음에 과제를 해결해주세요!


While

while "조건":
  # 코드

위와 같은 형태로 쓸 수 있다. 조건이 참이 되면 계속 # 코드를 실행하고, 거짓이 되면 # 코드가 실행 안되고 끝나게 된다. 다음 예시 코드를 보자.

count = 0
while True:
  count += 1
  print(count)
1
2
3
... (무한반복)

while의 조건이 True(항상 참)이기 때문에 코드가 무한번 반복된다. 따라서 우리는 적절한 조건을 제시하여 우리가 의도한대로 코드를 실행시켜야 한다.


For

for i in range(3):
  print(i)
0
1
2

C언어에서 썼던 것과는 많이 다르다. 일단 설명을 하자면,

irange(3)이라는 횟수동안 우리의 코드를 반복하는 것.

그러면 여기서 range()라는 함수가 뭔지 궁금할 것이다. range(num)이란 0 ~ num까지의 범위의 숫자들 이라고 생각하면 된다. 더 자세한 이용법은 인터넷에 많이 나와있으니 찾아보길 바란다.


arr = ["Hello", "Bye", "TangTang"] # list
for i in arr:
  print(arr)
Hello
Bye
TangTang

arr라는 list를 만들고 for로 출력을 해본 것이다. 이처럼 python의 for숫자의 범위 뿐만 아니라, 배열의 요소로도 반복을 할 수 있다.


List

쉽게 말하자면 배열이다.

arr1 = [1, 2, 3, 4]
arr2 = ["a", "b", "c", "d"]
arr3 = ["Hello", 2021, True, "What?"]

이런식으로 우리가 원하는 것들을 하나의 배열로 저장할 수 있다는 것이다.

arr1[0] # 1
arr2[3] # "d"
arr2[-1] # "d"
arr2[-3] # "b"
arr3[4] # Error. 0번째부터 카운트하기 때문이다.

배열의 요소 하나를 가져올 때 이러한 특징들이 있다. 배열의 가장 맨 앞에 오는 요소는 0번째이다. 그리고 가장 마지막에 오는 요소는 -1번째이다. 따라서 이러한 특성을 잘 알아놓으면 나중에 코딩할 때 좋다. 각 요소들은 수정도 가능하다.


arr1 = [1,2,3]
arr1.append(6)
print(arr1)
[1,2,3,6]

이런식으로 append()함수를 사용하여 배열의 가장 마지막 부분에 요소를 추가할 수도 있다.


Tuple

튜플의 가장 큰 특징은 ( ) 안에 쓰이고 수정이 불가하다는 점이다. 앞서 봤던 리스트는 배열의 요소가 수정이 가능한 반면, 튜플은 그렇지가 않다.

tu1 = (1, 2, 3)
tu2 = ("a", ) # 한개만 선언하면 꼭 , 를 붙여줘야 한다.


Dictionary

KeyValue값으로 이뤄진 배열같은 것이다. { }안에 쓴다는 점이 다르다.

dict1 = {Key1:Value1, Key2:Value2, Key3:Value3, ...}
dict1 = {"name":"xi-jjun", "age":25, "weight":100, "univ":"Donnguk Univ"}
print(dict1["name"]) # "xi-jjun"
print(dict1["age"]) # 25

이런식으로 요소를 찾을 때 Key값으로 찾는다. 리스트에서는 [0]과 같은 index로 찾았다면 딕셔너리에서는 위와 같이 [Key]로 찾는 다는 것이 다르다.


2주차 과제(7/12~7/18)

기간 내에 과제 제출 못할 시 2번 이상이 되면 스터디 나가주시면 됩니다.

문제1(난이도 중)

# 딕셔너리는 이걸로 쓰셔도 됩니다.
personality = {
  "name":"Kim Jae Jun",
  "age":25,
  "friends":None,
  "grade":[20,30,50]
}
~/D-Coder-PythonStudy77$ python week02_1.py 
{'name': 'Kim Jae Jun', 'age': 25, 'friends': None, 'grade': [20, 30, 50]}
추가할 KEY 값 : face
추가할 VALUE 값 : trash
{'name': 'Kim Jae Jun', 'age': 25, 'friends': None, 'grade': [20, 30, 50], 'face': 'trash'}
찾을 정보의 KEY : age
25
계속1 / 종료0 0

위와 같은 결과가 나오도록 코드를 작성해 주세요. 딕셔너리에 요소를 추가하는 방법을 찾으셔야 할 것입니다. 딕셔너리에서 요소를 찾는 방법 중 get이라는 함수가 쓰일 수도 있습니다.


문제2(난이도 중상)

~/D-Coder-PythonStudy77$ python week02_2.py 
*** 성적분포 프로그램 ***
성적 1 입력(종료:-1) : 10
성적 2 입력(종료:-1) : 20
성적 3 입력(종료:-1) : 54   
성적 4 입력(종료:-1) : 23 
성적 5 입력(종료:-1) : 75 
성적 6 입력(종료:-1) : 90
성적 7 입력(종료:-1) : 13
성적 8 입력(종료:-1) : 66
성적 9 입력(종료:-1) : 88
성적 10 입력(종료:-1) : 24
성적 11 입력(종료:-1) : -1
성적 그래프
00~40점:*****
41~60점:*
61~80점:**
81~100점:**

직접 성적을 입력하여 해당 분포에 존재하는 사람 수 만큼 *을 그리세요. print()는 항상 실행되면 줄 바꿈을 합니다. 그걸 방지하는 방법은 print("와아아아ㅏ", end="")입니다. 뒤에 end=""를 붙여 주시면 줄바꿈이 안됩니다. 배열의 길이를 아는 방법 중 하나는 len(arr1)이라는 함수입니다. 해당 함수를 사용하면 arr1의 길이를 알 수 있습니다.







문제1 힌트

personality = {
  "name":"Kim Jae Jun",
  "age":25,
  "friends":None,
  "grade":[20,30,50]
}

print(personality)

mode = 1
while mode ?? 0:
  add_info_KEY = input("추가할 KEY 값 : ")
  add_info_VALUE = input("추가할 VALUE 값 : ")
  personality[????] = ????

  print(personality)

  get_info = input("찾을 정보의 KEY : ")
  print(personality.get(???,"Don't exist!"))

  mode = int(input("계속1 / 종료0"))


문제2 힌트

print("*** 성적분포 프로그램 ***")

score_list = [[], [], [], []]
score_graph = ["00~40점:", "41~60점:", "61~80점:", "81~100점:"]
score = 0
i = 1

while score ?? -1:
  print("성적",i,"입력(종료:-1) : ",end="")
  score = int(input())
  i += 1
  if score == -1:
    break
  
  if score > 80:
    score_list[?].append(???)
  elif score > 60:
    score_list[?].append(???)
  elif score > 40:
    score_list[?].append(???)
  else:
    score_list[?].append(???)

print("성적 그래프")
for k in range(?):
  print(score_graph[k], end="")
  for i in range(len(?????)):
    print( ? )
  print( ? )

궁금하신 것 있으면 언제든지 물어봐주세요!!

카카오톡으로 답안 제출해 주시면 감사합니다.