파이썬 과제(심화)

hyo_d·2022년 9월 20일
0

1. 사용자의 시험 점수를 입력받아 등급을 출력하는 코드

요구조건

  • 조건문 사용
  • 등급표
    • 91~100 : A
    • 81~90 : B
    • 71~80 : C
    • ~71 : F
  • 등급표에 맞게 점수별 구간을 설정하고 이때 100점이 넘어가면 "점수를 다시 입력하세요." 문구를 출력하도록 함수를 작성했다.

✨ 전체 코드

def get_grade(score):
    if score > 100:
        return "점수를 다시 입력하세요."
    elif score > 90:
        return 'A'    
    elif score > 80:
        return 'B'
    elif score > 70:
        return 'C'
    else:
        return 'F'

score = int(input())

grade = get_grade(score)
print(grade)

2. 반복문 프로그램

요구조건

  • 사용자의 입력을 받아 반복하는 프로그램을 만들어주세요
  • 사용자가 숫자를 입력했을 경우 입력값에 2배를 곱한 수를 출력해주세요
  • 사용자가 문자를 입력했을 경우 “입력한 문자는 {} 입니다.” 라는 문구를 출력해주세요
    • {} 자리에는 사용자가 입력한 문자가 들어가야 합니다.
  • 사용자가 exit을 입력하거나 숫자가 5회 이상 입력됐을 경우 프로그램을 종료시켜주세요

1) 숫자가 5회 이상 입력됐을 경우 프로그램을 종료시키는 조건을 만족시키기 위해 count = 0을 설정한다. while문 시작하면서 user_input으로 입력값을 받는다.

count = 0

while True:

    user_input = input("문자 또는 숫자를 입력하세요. 종료하시려면 exit를 입력하세요.")

2) 입력값에 대한 if 조건문을 작성한다.

  • 사용자가 입력한 값이 exit일 때, 프로그램이 종료된다.
    if user_input == "exit":
        print("프로그램이 종료되었습니다.")
        break
  • 입력한 값이 숫자라면 입력값에 2배를 곱한 수를 출력한다. 숫자임을 판별하기 위해 isdigit함수를 사용하였다. 또한 숫자가 5회 이상 입력 되었을경우 프로그램을 종료하기 위해 count에도 1을 더해준다.
    elif user_input.isdigit():
        num = int(user_input) * 2
        count += 1
        print(f"입력한값의 2배를 곱한 수는 {num} 입니다.")
  • 그 외 문자를 입력했을 경우 “입력한 문자는 {} 입니다.” 라는 문구를 출력하도록 한다.
    else:
        print(f"입력한 문자는 {user_input}입니다.")
  • 마지막으로 숫자를 입력한 횟수가 5회 이상일 경우 프로그램을 종료한다.
    if count >= 5:
        print("숫자를 5회 이상 입력하여 프로그램이 종료되었습니다.")
        break    

✨ 전체 코드

count = 0

while True:

    user_input = input("문자 또는 숫자를 입력하세요. 종료하시려면 exit를 입력하세요.") # 사용자의 input을 받는 함수
    
    if user_input == "exit":
        print("프로그램이 종료되었습니다.")
        break

    elif user_input.isdigit():
        num = int(user_input) * 2
        count += 1
        print(f"입력한값의 2배를 곱한 수는 {num} 입니다.")

    else:
        print(f"입력한 문자는 {user_input}입니다.")
    
    if count >= 5:
        print("숫자를 5회 이상 입력하여 프로그램이 종료되었습니다.")
        break

3. 반복문을 이용한 사용자의 이름과 나이 출력

요구조건

입출력 예제에 있는 사람들 중, 평균 성적이 70점 이상인 사용자의 이름과 나이를 출력해주세요

1) 입출력 예제는 다음과 같으며 가독성을 위해 pprint를 import해주었다.

from pprint import pprint

users = [
    {"name": "Ronald", "age": 30, "math_score": 93, "science_score": 65, "english_score": 93, "social_score": 92},
    {"name": "Amelia", "age": 24, "math_score": 88, "science_score": 52, "english_score": 78, "social_score": 91},
    {"name": "Nathaniel", "age": 28, "math_score": 48, "science_score": 40, "english_score": 49, "social_score": 91},
    {"name": "Sally", "age": 29, "math_score": 100, "science_score": 69, "english_score": 67, "social_score": 82},
    {"name": "Alexander", "age": 30, "math_score": 69, "science_score": 52, "english_score": 98, "social_score": 44},
    {"name": "Madge", "age": 22, "math_score": 52, "science_score": 63, "english_score": 54, "social_score": 47},
    {"name": "Trevor", "age": 23, "math_score": 89, "science_score": 88, "english_score": 69, "social_score": 93},
    {"name": "Andre", "age": 23, "math_score": 50, "science_score": 56, "english_score": 99, "social_score": 54},
    {"name": "Rodney", "age": 16, "math_score": 66, "science_score": 55, "english_score": 58, "social_score": 43},
    {"name": "Raymond", "age": 26, "math_score": 49, "science_score": 55, "english_score": 95, "social_score": 82},
    {"name": "Scott", "age": 15, "math_score": 85, "science_score": 92, "english_score": 56, "social_score": 85},
    {"name": "Jeanette", "age": 28, "math_score": 48, "science_score": 65, "english_score": 77, "social_score": 94},
    {"name": "Sallie", "age": 25, "math_score": 42, "science_score": 72, "english_score": 95, "social_score": 44},
    {"name": "Richard", "age": 21, "math_score": 71, "science_score": 95, "english_score": 61, "social_score": 59},
    {"name": "Callie", "age": 15, "math_score": 98, "science_score": 50, "english_score": 100, "social_score": 74},
]

2) get_filter_user 함수 정의

  • filter_user라는 빈 리스트를 생성한다.

  • avg 변수에 math, science, english, social 점수를 모두 더해준 뒤 과목수인 4로 나누어 시험 평균을 계산했다.

  • if 조건문을 사용해 avg가 70 이상인 경우의 filter_user 리스트에 나이와 이름 키, 벨류를 추가해준다.

def get_filter_user(users):
    filter_user = []
    for user in users:
        avg = (user["math_score"]+user["science_score"]+user["english_score"]+user["social_score"])/4
        if avg >= 70:
            filter_user.append({"age": user["age"], "name": user["name"]})
    return filter_user

filter_users = get_filter_user(users)
pprint(filter_users)

✨ 완성된 전체 코드

from pprint import pprint

users = [
    {"name": "Ronald", "age": 30, "math_score": 93, "science_score": 65, "english_score": 93, "social_score": 92},
    {"name": "Amelia", "age": 24, "math_score": 88, "science_score": 52, "english_score": 78, "social_score": 91},
    {"name": "Nathaniel", "age": 28, "math_score": 48, "science_score": 40, "english_score": 49, "social_score": 91},
    {"name": "Sally", "age": 29, "math_score": 100, "science_score": 69, "english_score": 67, "social_score": 82},
    {"name": "Alexander", "age": 30, "math_score": 69, "science_score": 52, "english_score": 98, "social_score": 44},
    {"name": "Madge", "age": 22, "math_score": 52, "science_score": 63, "english_score": 54, "social_score": 47},
    {"name": "Trevor", "age": 23, "math_score": 89, "science_score": 88, "english_score": 69, "social_score": 93},
    {"name": "Andre", "age": 23, "math_score": 50, "science_score": 56, "english_score": 99, "social_score": 54},
    {"name": "Rodney", "age": 16, "math_score": 66, "science_score": 55, "english_score": 58, "social_score": 43},
    {"name": "Raymond", "age": 26, "math_score": 49, "science_score": 55, "english_score": 95, "social_score": 82},
    {"name": "Scott", "age": 15, "math_score": 85, "science_score": 92, "english_score": 56, "social_score": 85},
    {"name": "Jeanette", "age": 28, "math_score": 48, "science_score": 65, "english_score": 77, "social_score": 94},
    {"name": "Sallie", "age": 25, "math_score": 42, "science_score": 72, "english_score": 95, "social_score": 44},
    {"name": "Richard", "age": 21, "math_score": 71, "science_score": 95, "english_score": 61, "social_score": 59},
    {"name": "Callie", "age": 15, "math_score": 98, "science_score": 50, "english_score": 100, "social_score": 74},
]

def get_filter_user(users):
    filter_user = []
    for user in users:
        avg = (user["math_score"]+user["science_score"]+user["english_score"]+user["social_score"])/4
        if avg >= 70:
            filter_user.append({"age": user["age"], "name": user["name"]})
    return filter_user

filter_users = get_filter_user(users)
pprint(filter_users)

# 출력 결과
"""
[{'age': 30, 'name': 'Ronald'},
 {'age': 24, 'name': 'Amelia'},
 {'age': 29, 'name': 'Sally'},
 {'age': 23, 'name': 'Trevor'},
 {'age': 26, 'name': 'Raymond'},
 {'age': 15, 'name': 'Scott'},
 {'age': 28, 'name': 'Jeanette'},
 {'age': 21, 'name': 'Richard'},
 {'age': 15, 'name': 'Callie'}]
"""
profile
햇병아리

0개의 댓글