Python 실습(리스트, 튜플, 딕셔너리)

dumbbelldore·2024년 11월 20일
0

zero-base 33기

목록 보기
24/97

1. 약수, 소수 추출 프로그램

  • 1부터 사용자가 입력한 숫자까지 약수와 소수를 리스트에 저장하여 출력하는 프로그램을 만드시오.
user_num = int(input("숫자를 입력하세요: "))

div_list = list()
prnum_list = list()

for num in range(1, user_num+1):
    if user_num % num == 0:
        div_list.append(num)
        
for num in range(2, user_num):
    flag = True
    
    for i in range(2, num):
        if num % i == 0:
            flag = False
    
    if flag:
       prnum_list.append(num)
       
print(f"약수 리스트: {div_list}")
print(f"소수 리스트: {prnum_list}")

# 출력 예시
# 숫자를 입력하세요: 50
# 약수 리스트: [1, 2, 5, 10, 25, 50]
# 소수 리스트: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

2. 짝수 홀수 구분 프로그램

  • 1부터 100 사이에 난수를 10개 생성한 후 짝수와 홀수에 해당하는 리스트로 나누어 출력하는 프로그램을 만드시오.
import random

num_list = list()
odd_list = list()
evn_list = list()

while True:
    
    num = random.randint(1, 100)
    if num not in num_list:
        num_list.append(num)
        
    if len(num_list) == 10:
        break

num_list.sort()

for num in num_list:
    if num % 2 == 0:
        evn_list.append(num)
    else:
        odd_list.append(num)

print(f"홀수(총 {len(odd_list)}개): {odd_list}")        
print(f"짝수(총 {len(evn_list)}개): {evn_list}")

# 출력 예시
# 홀수(총 6개): [25, 33, 37, 39, 47, 93]
# 짝수(총 4개): [22, 50, 58, 64]

3. 공원 입장료 계산 프로그램

  • 다음 공원 입장료 표를 보고, 100명에 대한 입장 요금을 계산하는 프로그램을 만드시오. (단, 고객의 최저 나이는 0세이고 최고 나이는 80세이다. 또한, 100명의 나이는 난수로 생성하여 age_list 리스트에 저장하시오.)

    구분영유아어린이청소년성인어르신
    나이0~7세8~13세14~19세20~64세65세 이상
    요금무료200300500무료
import random

age_list = list()
infant_list = list()
child_list = list()
adole_list = list()
adult_list = list()
senior_list = list()

while True:
    
    age = random.randint(0, 80)
    age_list.append(age)
        
    if len(age_list) == 100:
        break

age_list.sort()

for age in age_list:
    if (age >= 0) and (age < 8):
        infant_list.append(age)
    elif (age >= 8) and (age < 14):
        child_list.append(age)
    elif (age >= 14) and (age < 20):
        adole_list.append(age)
    elif (age >= 20) and (age < 65):
        adult_list.append(age)
    else:
        senior_list.append(age)

tot_sum = len(child_list) * 200 + len(adole_list) * 300 + len(adult_list) * 500

print("="*30)
print(f"영유아({len(infant_list)}명): 무료")
print(f"어린이({len(child_list)}명): 200원/명")
print(f"청소년({len(adole_list)}명): 300원/명")
print(f"성인({len(adult_list)}명): 500원/명")
print(f"어르신({len(senior_list)}명): 무료")
print("="*30)
print(f"총 요금: {tot_sum:,d}원")
print("="*30)

# 출력 예시
# ==============================
# 영유아(13명): 무료
# 어린이(9명): 200원/명
# 청소년(4명): 300원/명
# 성인(58명): 500원/명
# 어르신(16명): 무료
# ==============================
# 총 요금: 32,000원
# ==============================

4. 숫자 조합 출력 프로그램

  • 1~9까지의 서로 다른 4개의 숫자 중, 2개의 숫자를 선택하여 만들 수 있는 모든 숫자 조합 리스트를 출력하는 프로그램을 만드시오. (단, 조합의 순서는 중요하다.)
import random

num_list = list()

while True:
    num = random.randint(1, 9)
    if num not in num_list:
        num_list.append(num)
    
    if len(num_list) == 4:
        break

print(f"수 리스트: {num_list}")

comb_list = list()

for num_1 in num_list:
    for num_2 in num_list:
        if num_1 == num_2:
            continue
        else:
            comb_list.append([num_1, num_2])

print(f"조합 리스트: {comb_list}")
            
# 출력 예시
# 수 리스트: [9, 1, 6, 7]
# 조합 리스트: [[9, 1], [9, 6], [9, 7], [1, 9], [1, 6], [1, 7], [6, 9], [6, 1], [6, 7], [7, 9], [7, 1], [7, 6]]

5. 튜플 합집합, 교집합 출력 프로그램

  • (1, 3, 2, 6, 5) 튜플과 (0, 5, 2, 6, 8) 튜플의 합집합과 교집합을 출려하는 프로그램을 만드시오.
tuple_1 = (1, 3, 2, 6, 5)
tuple_2 = (0, 5, 2, 6, 8)

hap_tuple = tuple(set(list(tuple_1) + list(tuple_2)))
gyo_list = list()

for i1 in tuple_1:
    for i2 in tuple_2:
        if i1 == i2:
            gyo_list.append(i1)

gyo_tuple = tuple(sorted(gyo_list))

print(f"합집합: {hap_tuple}")
print(f"교집합: {gyo_tuple}")

# 출력예시
# 합집합: (0, 1, 2, 3, 5, 6, 8)
# 교집합: (2, 5, 6)

6. 튜플 기반 산술 프로그램

  • 학급별 학생 수를 나타내는 튜플을 이용하여 다음 요구사항을 출력하는 프로그램을 만드시오.
    - student_cnt = ({"cls01": 18}, {"cls02": 21}, {"cls03": 20}, {"cls04": 19}, {"cls05": 22}, {"cls06": 20}, {"cls07": 23}, {"cls08": 17})
    - 요구사항 = 전체 학생 수, 학생 수 평균, min(학생 수)의 학급, max(학생 수)의 학급
student_cnt = ({"cls01": 18}, {"cls02": 21}, {"cls03": 20}, {"cls04": 19},
               {"cls05": 22}, {"cls06": 20}, {"cls07": 23}, {"cls08": 17})

tot_sum = 0
tot_avg = 0
min_cnt = 0
min_cls = ""
max_cnt = 0
max_cls = ""

for cls in student_cnt:

    for nm, cnt in cls.items():

        # tot_sum
        tot_sum += cnt

        # min_cls
        if min_cls == "":
            min_cnt = cnt
            min_cls = nm

        else:
            if cnt < min_cnt:
                min_cnt = cnt
                min_cls = nm

        # max_cls
        if max_cls == "":
            max_cnt = cnt
            max_cls = nm

        else:
            if cnt > max_cnt:
                max_cnt = cnt
                max_cls = nm

# tot_avg
tot_avg = tot_sum / len(student_cnt)

print(f"합계: {tot_sum}")
print(f"평균: {tot_avg}")
print(f"최소값: {min_cnt} ({min_cls})")
print(f"최대값: {max_cnt} ({max_cls})")

# 출력 예시
# 합계: 160
# 평균: 20.0
# 최소값: 17 (cls08)
# 최대값: 23 (cls07)

7. 도형 내각 합 계산 프로그램

  • 삼각형부터 십각형까지의 내각과 내각의 총 합을 딕셔너리에 저장하여 출력하는 프로그램을 만드시오. (단, 내각의 소수점은 반올림하여 정수형으로 나타내시오.)
def inner_dgre_calc(n):
  sum_dgre = 180 * (n-2)
  idv_dgre = round(sum_dgre / n)
  return sum_dgre, idv_dgre

_dict = {}

for n in range(3, 10+1):
  sum_dgre, idv_dgre = inner_dgre_calc(n)
  _dict[n] = [idv_dgre, sum_dgre]

print(_dict)

# 출력 예시
# {3: [60, 180], 4: [90, 360], 5: [108, 540], 6: [120, 720], 
#  7: [129, 900], 8: [135, 1080], 9: [140, 1260], 10: [144, 1440]}

8. 약수 출력 프로그램

  • 2부터 10까지의 정수에 대하여 각 정수의 약수를 딕셔너리 형태로 출력하는 프로그램을 만드시오.
_dict = {}

for num in range(2, 10+1):
  _list = []
  
  for nominator in range(1, num+1):
    if num % nominator == 0:
      _list.append(nominator)
      
  _dict[num] = _list

print(_dict)

# 출력 예시
# {2: [1, 2], 3: [1, 3], 4: [1, 2, 4], 5: [1, 5], 6: [1, 2, 3, 6],
#  7: [1, 7], 8: [1, 2, 4, 8], 9: [1, 3, 9], 10: [1, 2, 5, 10]}

9. 회원 가입 프로그램

  • 3명의 회원으로부터 ID와 PW를 입력받아 전체 회원 정보 딕셔너리를 출력하는 프로그램을 만드시오.
member_info = dict()

while True:
  user_id = input("Enter your user ID: ")
  user_pw = input("Enter your password: ")
  
  if user_id in member_info:
  	print("The ID already exists. Please try it again.")
    continue

  member_info[user_id] = user_pw

  if len(member_info) == 3:
    break

print(member_info)

# 출력 예시
# Enter your user ID: iampark
# Enter your password: 1234
# Enter your user ID: iampark
# Enter your password: 1234
# The ID already exists. Please try it again.
# Enter your user ID: python_mania
# Enter your password: 5678
# Enter your user ID: hong90
# Enter your password: 0000
# {'iampark': '1234', 'python_mania': '5678', 'hong90': '0000'}

*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.

profile
데이터 분석, 데이터 사이언스 학습 저장소

0개의 댓글