Jump to Python (1)

GreenBean·2021년 3월 26일

Jump to Python

목록 보기
1/7
post-thumbnail

Jump to Python - 1

점프 투 파이썬의 예제를 푼 뒤, 그것에 대해 정리한 포스팅

새 창을 통해 점프 투 파이썬 으로 이동


02장 | 파이썬 프로그래밍의 기초, 자료형

✔ Q1. 홍길동 씨의 과목별 점수는 각각 다음과 같다. 홍길동 씨의 평균 점수를 구해 보자.

# 1.
a = 80
b = 75
c = 55
print((a+b+c)/3)

# 1.result
70.0
  • About 1.
    : 각 점수를 변수에 담아서 가장 단순한 방법으로 접근해보았다.
# 2.
def avg(*args):
    sum = 0
    for score in args:
        sum += score
    average = sum / len(args)
    print(f"You took {len(args)} exam(s) and average is {average}.")

avg(80, 75, 55)
avg(80, 75, 55, 100)

# 2.result
You took 3 exam(s) and average is 70.0.
You took 4 exam(s) and average is 77.5.
  • About 2.
    : 시험 점수들의 평균을 구해주는 함수를 만들었다. 결과를 출력할 때 내가 '몇 과목을 쳤는지' 그에 대한 '평균은 얼마인지' 한 눈에 볼 수 있도록 하면 좋을 것 같다는 생각을 했다. 그러기 위해서 몇 과목이든 상관없이 평균을 낼 수 있도록 arguments를 무한으로 받을 수 있도록 *args를 사용했으며 print에는 바뀐 값을 받을 수 있도록 format을 사용하였다. 이 글을 작성하면서 생각났는데 마지막에 나온 평균이 몇 점 이상이면 'Awsome!'을, 미만이면 'You can do better next time!'이 나오도록 추가 작업을 해봐야겠다!
# 0.
def avg(*args):
    sum = 0
    for score in args:
        sum += score
    average = sum / len(args)
    if average >= 80:
        print(f"You took {len(args)} exam(s) and average is {average}. Awesome!")
    elif 60 <= average < 80:
        print(f"You took {len(args)} exam(s) and average is {average}.")
    else:
        print(f"You took {len(args)} exam(s) and average is {average}. You can do better next time!")

avg(80, 75, 55)
avg(80, 75, 90, 100)
avg(80, 75, 30, 45)

# 0.result
You took 3 exam(s) and average is 70.0.
You took 4 exam(s) and average is 86.25. Awesome!
You took 4 exam(s) and average is 57.5. You can do better next time!

✔ Q2. 자연수 13이 홀수인지 짝수인지 판별할 수 있는 방법에 대해서 말해 보자.

# 1.
print(13%2)

# 1.result
1
  • About 1.
    : 2로 나누어 떨어지는 수는 짝수, 나머지가 1이 나오면 음수라는 것을 이용하여 나머지 연산자를 사용해 값을 얻었다.
# 2.
def finder(num):
    if num%2 == 0:
        print(f"{num} is even number")
    else:
        print(f"{num} is odd number")

finder(13)
finder(10)

# 2.result
13 is odd number
10 is even number
  • About 2.
    : 13 뿐만 아니라 임의의 어떤 숫자를 넣어도 이것이 홀수인지 짝수인지 알려주는 함수를 만들었다. 나머지가 0이라면 짝수, 아니라면 (=나머지가 1이라면) 홀수라는 출력이 되도록 설정하였다.

✔ Q3. 홍길동씨의 주민등록번호는 881120-1068234이다. 홍길동씨의 주민등록번호를 연월일(YYYYMMDD) 부분과 그 뒤의 숫자 부분으로 나누어 출력해 보자.

# 1.
hong = "8811201068234"
print(hong[:7])
print(hong[6:])

# 1.result
8811201
1068234
  • About 1.
    : 문제에서 주어진대로 슬라이싱을 사용하여 값만 출력해보았다.
# 2.
def slice(num):
    if type(num) == str:
        a = num.replace("-", "")
        birth = a[:7]
        other = a[6:]
        print(f"Birthday : {birth}, Unique number : {other}")
    else:
        print("Please enter your social number in quotation marks")

slice("881120-1068234")
slice("8811201068234")
slice(881120-1068234)

# 2.result
Birthday : 8811201, Unique number : 1068234
Birthday : 8811201, Unique number : 1068234
Please enter your social number in quotation marks
  • About 2.
    : 함수를 만들면서 사용자가 입력할 경우에 생길 수 있는 여러가지 문제 상황에 대해 생각해보았다. 첫번째, 입력 데이터 타입이 str이 아닐 경우 (=int가 될 경우), 주민등록번호 사이의 "-"는 뺄셈를 나타내는 연산자로 인식되기 때문에 가장 먼저 int 데이터 타입을 거르기 위해 신경썼다. 그래서 첫 if문을 통해 string type을 만들어주는 따옴표(")가 없다면 입력해 달라는 안내문이 출력 될 수 있도록 설정했다. 두번째, 또 다른 상황으로 사용자가 따옴표(")를 사용했으나 "-" 기호를 입력할 수도, 하지 않을 수 있기 때문에 replace를 사용하여 공통적으로 "-"를 없애주었다.

✔ Q4. 주민등록번호 뒷자리의 맨 첫 번째 숫자는 성별을 나타낸다. 주민등록번호에서 성별을 나타내는 숫자를 출력해 보자.

# 1.
pin = "881120-1068234"
print(pin[7])

# 1.result
1
  • About 1.
    : 인덱싱을 사용하여 8번째 자리에 있는 숫자를 호출하였다.
# 2.
def gender(num):
    if type(num) == str:
        a = num.replace("-", "")
        gender = a[6]
        if gender == "1" or gender == "3":
            print("Your gender is male")
        elif gender == "2" or gender == "4":
            print("Your gender is female")
        else:
            print("Please recheck your social number")
    else:
        print("Please enter your social number in quotation marks")

gender("881120-1068234")
gender("8811202068234")
gender("881120-8068234")
gender(881120-1068234)

# 2.result
Your gender is male
Your gender is female
Please recheck your social number
Please enter your social number in quotation marks
  • About 2.
    : 주민등록번호를 입력하면 성별을 알려주는 함수를 만들어 보았다. 따옴표(")를 생략하고 숫자만 쓸 때 안내문이 출력되게 하여 전체적으로 3번 문제의 코드와 유사하게 했다. 다만 if문 안에 if문을 한번 더 사용해서 그 안에 elif까지 사용해보았다. 덕분에 숫자가 1과 3이라면 남자, 2와 4라면 여자, 두 경우 모두 아니라면 주민등록번호를 다시 확인해달라고 출력할 수 있게 되었다.

✔ Q5. 다음과 같은 문자열 a:b:c:d가 있다. 문자열의 replace 함수를 사용하여 a#b#c#d로 바꿔서 출력해 보자.

# 1.
a = "a:b:c:d"
b = a.replace(":", "#")
print(b)

# 1.result
a#b#c#d
  • About 1.
    : replace 메소드를 사용하여 :기호를 #기호로 바꾸었다.

✔ Q6. [1, 3, 5, 4, 2]라는 리스트를 [5, 4, 3, 2, 1]로 만들어보자.

# 1.
list = [1, 3, 5, 4, 2]
list.sort()
list.reverse()
print(list)

# 1.result
[5, 4, 3, 2, 1]
  • About 1.
    : list에서만 정의되는 sort 메소드로 오름차순 정렬하고 이후 reverse 메소드를 사용하여 역방향으로 정렬하였다.
# 2.
list = [1, 3, 5, 4, 2]
a = sorted(list)
a.reverse()
print(a)

# 2.result
[5, 4, 3, 2, 1]
  • About 2.
    : sorted 메소드를 사용하여 list의 오름차순 정렬을 변수에 담아 역방향으로 정렬해보았다.
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 댓글