📌 자료구조 연습문제 [리스트]
📋 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부터 사용자가 입력한 숫자까지의 약수와 소수를 리스트에 각각 작성하고, 이것을 출력하는 프로그램
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일 전체 입장 요금을 구하는 프로그램
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개를 선택해서 만들 수 있는 모든 경우의 수
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]
print(numbers[:4])
print(numbers[2:5])
print(numbers[3:])
print(numbers[2:-1])
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('아이디를 다시 입력하세요')
📋삼각형부터 사각형까지 의 내각의 합과 내각 저장
dic = {}
for n in range(3, 11):
sum = 180 * (n - 2)
ang = int(sum / n)
dic[n] = [sum, ang]
print(dic)
📋1부터 10까지 각각의 정수에 대한 약수를 저장하는 딕셔너리를 만들고 출력
dics = {}
divisor = []
for i in range(1, 11):
divisor = []
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 = ''
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)