[Python][자료구조] 연습 문제_리스트_튜플_딕셔너리

·2023년 3월 21일
0

[Python] 연습 문제

목록 보기
9/12
post-thumbnail

📌 자료구조 연습문제 [리스트]

📋 1부터 사용자가 입력한 숫자까지의 약수와 소수를 리스트에 각각 작성하고, 이것을 출력하는 프로그램
# 1부터 사용자가 입력한 숫자까지의 약수와 소수를 리스트에 각각 작성하고, 이것을 출력하는 프로그램

divisors = []
primes = []

n = int(input('숫자 입력 : '))
isPrime = True
for i in range(1, n + 1):
    isPrime = True
    if n % i == 0:
        divisors.append(i)

    for j in range(2, i):
        if i % j == 0:
            isPrime = False
    if isPrime and i != 1 and i != n:
        primes.append(i)

print(f'{n}의 약수 : {divisors}')
print(f'{n}까지의 소수 : {primes}')
📋 10개의 난수로 이루어진 리스트를 홀수와 짝수로 구분하는 프로그램
import random

randomList = random.sample(range(1, 100), 10)
evens = []
odds = []
for i in randomList:
    if i % 2 == 0:
        evens.append(i)
    if i % 2 != 0:
        odds.append(i)

print(f'짝수 : {evens}, 개수 : {len(evens)}')
print(f'홀수 : {odds}, 개수 : {len(odds)}')
📋 1부터 사용자가 입력한 숫자까지의 약수와 소수를 리스트에 각각 작성하고, 이것을 출력하는 프로그램
# 1부터 사용자가 입력한 숫자까지의 약수와 소수를 리스트에 각각 작성하고, 이것을 출력하는 프로그램

divisors = []
primes = []

n = int(input('숫자 입력 : '))
isPrime = True
for i in range(1, n + 1):
    isPrime = True
    if n % i == 0:
        divisors.append(i)

    for j in range(2, i):
        if i % j == 0:
            isPrime = False
    if isPrime and i != 1 and i != n:
        primes.append(i)

print(f'{n}의 약수 : {divisors}')
print(f'{n}까지의 소수 : {primes}')
📋 1일 전체 입장 요금을 구하는 프로그램
# 1일 전체 입장 요금을 구하는 프로그램
import random

ages = random.choices(range(1, 100), k=100)
infant = []
child = []
teen = []
adult = []
old = []

for age in ages:
    if age <= 7:
        infant.append(age)
    elif age <= 13:
        child.append(age)
    elif age <= 19:
        teen.append(age)
    elif age <= 64:
        adult.append(age)
    else:
        old.append(age)

childFee = 200 * len(child)
teenFee = 300 * len(teen)
adultFee = 500 * len(adult)

print('-' * 30)
print(f'영유아 \t: {len(infant)}명 \t: {0}원')
print(f'어린이 \t: {len(child)}명 \t: {childFee}원')
print(f'청소년 \t: {len(teen)}명 \t: {teenFee}원')
print(f'성인 \t: {len(adult)}명 \t: {adultFee}원')
print(f'어르신 \t: {len(old)}명 \t: {0}원')
print('-' * 30)
print(f'1일 요금 총합계 : {childFee + adultFee + teenFee}')
print('-' * 30)
📋 친구 이름 다섯명을 리스트에 저장하고 오름차순과 내림차순으로 정렬해보자
# 중복 아이템 제거
numbers = random.choices(range(1, 10), k=10)
nums = [1, 2, 3, 4]
duplicates = []
print(f'numbers : {numbers}')

cnt = len(numbers)

idx = 0
while idx < len(numbers):
    if numbers.count(numbers[idx]) > 1:
        duplicates.append(numbers.pop(idx))
        idx -= 1
    idx += 1

print(f'duplicates : {duplicates}')
print(f'numbers : {numbers}')
📋 4개의 숫자 중 서로 다른 숫자 2개를 선택해서 만들 수 있는 모든 경우의 수
# 4개의 숫자 중 서로 다른 숫자 2개를 선택해서 만들 수 있는 모든 경우의 수
numbers = [4, 6, 7, 9]
resultP = []
resultC = []

# 순열
for n1 in numbers:
    for n2 in numbers:
        if n1 == n2:
            continue
        resultP.append([n1, n2])

# 조합
for idx, n1 in enumerate(numbers):
    for i in range(idx + 1, len(numbers)):
        resultC.append([n1, numbers[i]])

print(numbers)
print(resultP)
print(resultC)

📌 자료구조 연습문제 [튜플]

📋목표 학점을 받기 위해 받아야하는 최소 학점 구하는 프로그램
# 목표 학점을 받기 위해 받아야하는 최소 학점 구하는 프로그램

scores = ((3.7, 4.2), (2.9, 4.3), (4.1, 4.2))

total = 0
for score1, score2 in scores:
    total += score1 + score2

average = round(total / 6, 2)

targetScore = 4 * 8
grade4Total = round(targetScore - total, 2)
grade4 = round(grade4Total / 2, 2)
totalTuple = list(scores) + [(grade4, grade4)]

print(f'3학년 총 합점 : {total}')
print(f'3학년 평균 : {average}')
print('-' * 20)
print(f'4학년 목표 : {grade4Total}')
print(f'4학년 한학기 최소 학점 : {grade4}')
print('-' * 20)

print(totalTuple)
📋합집합과 교집합
# 합집합과 교집합
tuple1 = (1, 3, 2, 6, 12, 5, 7, 8)
tuple2 = (0, 5, 2, 9, 8, 6, 17, 3)
t1nt2 = []
t1ut2 = list(tuple2)
for t1 in tuple1:
    if t1 in tuple2:
        t1nt2.append(t1)
    else:
        t1ut2.append(t1)

t1ut2.sort()
t1nt2.sort()
print(f'합집합 (중복X)\t : {tuple(t1ut2)} ')
print(f'교집합\t\t\t : {tuple(t1nt2)} ')
📋슬라이스
# 슬라이스

 numbers = [8.5, 9.3, 7.6, 6.5, 7.0, 8.2, 9.0, 8.9]
 # 0-3
 print(numbers[:4])
 # 2-4
 print(numbers[2:5])
 # 3-
 print(numbers[3:])
 # 2-(-2)
 print(numbers[2:-1])
 # 0-, 3단계
 print(numbers[::3])
📋 시험점수 입력 후 튜플에 저장, 과목별 점수 출력
# 시험점수 입력 후 튜플에 저장, 과목별  점수 출력

kor = int(input('국어 점수 : '))
eng = int(input('영어 점수 : '))
math = int(input('수학 점수 : '))
sci = int(input('과학 점수 : '))
his = int(input('국사 점수 : '))
scores = ({'kor': kor},
          {'eng': eng},
          {'math': math},
          {'sci': sci},
          {'his': his})

for item in scores:
    for key in item.keys():
        if item[key] >= 90:
            item[key] = 'A'
        elif item[key] >= 80:
            item[key] = 'B'
        elif item[key] >= 70:
            item[key] = 'C'
        elif item[key] >= 60:
            item[key] = 'D'
        else:
            item[key] = 'F'

print(f'scores: {scores}')
📋오름차순 내림차순
# 오름차순 내림차순
fruits = ({'수박': 8}, {'포도': 13}, {'참외': 12}, {'사과': 17}, {'자두': 19})
fruits = list(fruits)
ascFruit = []
desFruit = []
fruitKey = []
print(f'fruits \t\t : {fruits}')

for dic in fruits:
    fruitKey.append(list(dic.keys()))

fruitKey = list(fruitKey)

fruitKey.sort()
for key in fruitKey:
    for value in fruits:
        if list(value.keys()) == key:
            cnt = list(value.values())[0]
            ascFruit.append({key[0]: cnt})

fruitKey.sort(reverse=True)
for key in fruitKey:
    for value in fruits:
        if list(value.keys()) == key:
            cnt = list(value.values())[0]
            desFruit.append({key[0]: cnt})

print(f'ascending \t : {ascFruit}')
print(f'descending \t : {desFruit}')

📌 자료구조 연습문제 [딕셔너리]

📋과목별 점수를 딕셔너리에 저장하고 출력
# 과목별 점수를 딕셔너리에 저장하고 출력
subject = ['국어', '영어', '수학', '과학', '국사']
scores = {}

for sub in subject:
    score = int(input(f'{sub} 점수 : '))
    scores[sub] = score

print(scores)
📋사용자의 아이디, 비밀번호를 이용해서 로그인
# 사용자의 아이디, 비밀번호를 이용해서 로그인


members = {'urkpo': '0928^7$',
           'xxayv': '%2*9$91',
           'lsqvx': '!0%)&&4',
           'heums': '%@3^0%3',
           'uwcmc': '85236(&',
           'iemwv': ')8!36^&',
           'sqblx': ')^2)9!(',
           'jbbpy': '67269*3',
           'hjkwu': '$&@@#64',
           'fvwwy': '82$%)31'}

for i in range(10):
    id = input('ID : ')
    pw = input('PW : ')

    if id in members.keys():
        print('아이디 확인완료')
        if pw == members[id]:
            print('비밀번호 확인완료')
        else:
            print('비밀번호를 다시 입력하세요')
    else:
        print('아이디를 다시 입력하세요')

📋삼각형부터 사각형까지 의 내각의 합과 내각 저장

# 삼각형부터 사각형까지 의 내각의 합과 내각 저장
# n각형의 내각의 합 : 180 * (n-2)

 dic = {}

 for n in range(3, 11):
     sum = 180 * (n - 2)
     ang = int(sum / n)
     dic[n] = [sum, ang]

 print(dic)

📋1부터 10까지 각각의 정수에 대한 약수를 저장하는 딕셔너리를 만들고 출력
# 1부터 10까지 각각의 정수에 대한 약수를 저장하는 딕셔너리를 만들고 출력

dics = {}
divisor = []

for i in range(1, 11):
    divisor = []
    # divisor.clear()

    for j in range(1, i + 1):
        if i % j == 0:
            divisor.append(j)

    dics[i] = divisor

print(dics)
📋공백을 구분하여 리스트에 저장

# 공백을 구분하여 리스트에 저장

 ditto = 'Stay in the middle' \
         ' Like you a little' \
         ' Don’t want no riddle' \
         ' 말해줘 say it back' \
         ' Oh say it ditto' \
         ' 아침은 너무 멀어' \
         ' So say it ditto'

 words = {}
 word = ''
 # print(ditto.split())
 for idx, w in enumerate(ditto):
     if w != ' ':
         word = word + w
     else:
         words[idx] = word
         word = ''

 print(words)

📋비속어를 표준어로 변경
# 비속어를 표준어로 변경

words = {'꺼지다': '가다',
         '쩔다': '엄청나다',
         '짭새': '경찰관',
         '꼽사리': '중간에 낀 사람',
         '먹튀': '먹고 도망',
         '지린다': '겁을 먹다',
         '쪼개다': '웃다',
         '뒷담 까다': '험담하다'}

txt = '강도는 서로 쪼개다, 짭새를 보고 빠르게 따돌리며 먹튀했다.'

for k in words:
    if k in txt:
        txt = txt.replace(k, words[k])

print(txt)

📋전체 회원 정보 출력

# 전체 회원 정보 출력

member = {}


def createMem():
    while len(member) < 5:
        mail = input('메일 입력 : ')
        if mail in member:
            print('존재하는 이메일입니다.')

        else:
            pw = input('비번 입력 : ')

        member[mail] = pw


def deteMember():
    mail = input('삭제할 메일 입력 : ')
    if mail not in member:
        print('존재하지 않는 이메일입니다.')
    else:
        pw = input('비번 입력 : ')
        if member[mail] == pw:
            member.pop(mail)
            print(f'{mail}님 삭제 완료')
        else:
            print('비밀번호가 틀렸습니다')

    print(member)


createMem()
deteMember()
📋학생 정보 테이블
# 학생 정보 테이블

students = ({'회원번호': 'S21-001',
             '이름': '최성훈',
             '전공': '디자인',
             '연락처': '010-1234-5678',
             '메일': 'hun@gmail.com',
             '취미': '농구, 음악'},
            {'회원번호': 'S21-002',
             '이름': '탁영우',
             '전공': '바리스트',
             '연락처': '010-5678-9012',
             '메일': 'yeong@gmail.com',
             '취미': '축구'},
            {'회원번호': 'S21-003',
             '이름': '황진영',
             '전공': '음악',
             '연락처': '010-9012-3456',
             '메일': 'jin@gmail.com',
             '취미': '수영, 코딩'})

for dic in students:
    for s in dic:
        print(f'{s} : {dic[s]}')

    print('-' * 20)

profile
개발하고싶은사람

0개의 댓글