
1부터 사용자가 입력한 숫자까지의 약수와 소수를 리스트에 각각 저장하고,
이것을 출력하는 프로그램
inputNum = int(input('1보다 큰 정수 입력 : '))
listA = []
listB = []
for n in range(1, inputNum + 1):
if n == 1:
listA.append(n)
else:
if inputNum % n == 0:
listA.append(n)
print('약수 : {}'.format(listA))
for number in range(2, inputNum+1):
flag = True
for n in range(2, number):
if number % n == 0:
flag = False
break
if flag:
listB.append(number)
print('소수 : {}'.format(listB))
1부터 100사이에 난수 10개를 생성한 후 짝수와 홀수를 구분해서 리스트에 저장하고 각각의 개수를 출력하는 프로그램
import random
randomlist = random.sample(range(1,101), 10)
evens = []
odds = []
for n in randomlist:
if n % 2 == 0:
evens.append(n)
else:
odds.append(n)
print('짝수: {}, 개수: {}'.format(evens, len(evens)))
print('홀수: {}, 개수: {}'.format(odds, len(odds)))
다음은 공원 입장료를 나타낸 표이다. 1일 총 입장객이 100명이라고 할 때, 1일 전체 입장 요금을 구하는 프로그램을 만들어보자.
단, 입장 고객의 나이는 난수를 이용한다.
import random
visitors = []
for n in range(100):
visitors.append(random.randint(1,100))
group1, group2, group3, group4, group5 = 0, 0, 0, 0, 0
for age in visitors:
if age >= 0 and age <=7:
group1 += 1
elif age >= 8 and age <= 13:
group2 += 1
elif age >= 14 and age <= 19:
group3 += 1
elif age >= 20 and age <= 64:
group4 += 1
else:
group5 += 1
group1Price = group1 * 0
group2Price = group2 * 200
group3Price = group3 * 300
group4Price = group4 * 500
group5Price = group5 * 0
print('-'*25)
print(f'영유아: {group1}명 :{group1Price} 원')
print(f'어린이: {group2}명 :{group2Price} 원')
print(f'청소년: {group3}명 :{group3Price} 원')
print(f'성인: {group4}명 :{group4Price} 원')
print(f'어르신: {group5}명 :{group5Price} 원')
print('-'*25)
sum = group1Price + group2Price + group3Price + group4Price + group5Price
print('1일 요금 총 합계 : {}원'.format(format(sum,',')))
친구 이름 다섯 명을 리스트에 저장하고 오름차순과 내림차순으로 정렬해보자.
friend = []
for i in range(5):
friend.append(input('친구이름 입력 : '))
print(friend)
friend.sort()
print(friend)
friend.sort(reverse=True)
print(friend)
다음 리스트에서 중복 아이템(숫자)을 제거하는 프로그램을 만들어보자.
numbers = [2, 22, 7, 8, 9, 2, 7, 3, 5, 2, 7, 1, 3]
idx = 0
while True:
if idx >= len(numbers):
break
if numbers.count(numbers[idx]) >= 2:
numbers.remove(numbers[idx])
continue
idx += 1
print(numbers)
다음 리스트에서 중복 아이템(숫자)을 제거하는 프로그램을 만들어보자.
# 순열 4P2
numbers = [4, 6, 7, 9]
result = []
for n1 in numbers:
for n2 in numbers:
if n1 == n2:
continue
result.append([n1,n2])
print(result)
print(len(result))
# 순열 4P3
numbers = [4, 6, 7, 9]
result = []
for n1 in numbers:
for n2 in numbers:
if n1 == n2:
continue
for n3 in numbers:
if n1 == n3 or n2 == n3:
continue
result.append([n1,n2,n3])
print(result)
print(len(result))
대학생 길동이의 1, 2, 3학년의 성적은 다음과 같다. 졸업할 때 4.0이상의 학점을 받기 위해 길동이가 받아야 하는 4학년 1, 2학기의 최소 학점을 구해보자.
scores = (3.7, 4.2), (2.9, 4.3), (4.1, 4.2)
sum = 0
avg = 0
for n1 in scores:
for n2 in n1:
sum += n2
avg = sum / 6
print(round(sum, 1))
print(round(avg, 1))
grade4Total = (4.0 * 8) - sum
print(round(grade4Total, 1))
grade4Min = round((grade4Total / 2), 1)
print(round(grade4Min, 1))
scores = list(scores)
scores.append((grade4Min, grade4Min))
scores = tuple(scores)
print(scores)
다음 2개의 튜플에 대해서 합집합과 교집합을 출력해보자.
tuple1 = (1,3,2,6,12,5,7,8)
tuple2 = (0,5,2,9,8,6,17,3)
tempHap = list(tuple1)
tempGyo = list()
for n in tuple2:
if n not in tempHap:
tempHap.append(n)
else:
tempGyo.append(n)
tempHap = tuple(sorted(tempHap))
tempGyo = tuple(sorted(tempGyo))
print(tempHap)
print(tempGyo)
tuple1 = (1,3,2,6,12,5,7,8)
tuple2 = (0,5,2,9,8,6,17,3)
tempHap = tuple1 + tuple2
tempGyo = list()
tempHap = list(tempHap)
idx = 0
while True:
if idx >= len(tempHap):
break
if tempHap.count(tempHap[idx]) >= 2:
tempGyo.append(tempHap[idx])
tempHap.remove(tempHap[idx])
continue
idx += 1
tempHap = tuple(sorted(tempHap))
tempGyo = tuple(sorted(tempGyo))
print(tempHap)
print(tempGyo)
다음 튜플에 대해서 최소값, 최대값, 인덱스 구하기
numbers = 8.7, 9.1, 9.0, 9.2, 8.6, 9.3, 7.9, 8.1, 8.3
print(min(numbers))
print(numbers.index(min(numbers)))
print(max(numbers))
print(numbers.index(max(numbers)))
튜플의 과일 개수에 대해서 오름차순 및 내림차순으로 정렬해보자.
# 오름차순
fruits = ({'수박':8}, {'포도':13}, {'참외':12}, {'사과':17}, {'자두':19}, {'자몽':15})
fruits = list(fruits)
cIdx = 0; nIdx = 1
eIdx = len(fruits) - 1
flag = True
while flag:
curDic = fruits[cIdx]
nextDic = fruits[nIdx]
curDicCnt = list(curDic.values())[0]
nextDicCnt = list(nextDic.values())[0]
if nextDicCnt < curDicCnt: # 내림차순은 반대
fruits.insert(cIdx, fruits.pop(nIdx))
nIdx = cIdx + 1
continue
nIdx += 1
if nIdx > eIdx:
cIdx += 1
nIdx = cIdx + 1
if cIdx == 5:
flag = False
print(tuple(fruits))
학급별 학생 수를 나타낸 튜플을 이용해서, 요구 사항에 맞는 데이터를 출력하는 프로그램을 만들어보자.
studentCnt = ({'cls01':18},
{'cls02':21},
{'cls03':20},
{'cls04':19},
{'cls05':22},
{'cls06':20},
{'cls07':23},
{'cls08':17}
)
totalCnt = 0
minStdCnt = 0; minCls = ''
maxStdCnt = 0; maxCls = ''
deviation = []
for idx, dic in enumerate(studentCnt):
for k, v in dic.items():
totalCnt = totalCnt + v
if minStdCnt == 0 or minStdCnt > v:
minStdCnt = v
minCls = k
if maxStdCnt < v:
maxStdCnt = v
maxCls = k
print(f'전체 학생 수 : {totalCnt}')
avgCnt = totalCnt / len(studentCnt)
print(f'평균 학생 수 : {avgCnt}')
print(f'학생 수가 가장 적은 학급 : {minCls}({minStdCnt})')
print(f'학생 수가 가장 많은 학급 : {maxCls}({maxStdCnt})')
for idx, dic in enumerate(studentCnt):
for k , v in dic.items():
deviation.append({k : v - avgCnt})
print(f'학급별 학생 편차 : {deviation}')
사용자의 아이디, 비밀번호를 이용해서 로그인 프로그램을 만들어보자.
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'}
memID = input('ID 입력 : ')
memPW = input('PW 입력 : ')
if memID in members:
if members[memID] == memPW:
print('로그인 성공')
else:
print('비밀번호 확인')
else:
print('아이디 확인')
삼각형부터 십각형까지의 내각의 합과 내각을 딕셔너리에 저장하는 프로그램을 만들어보자.
dic = {}
for n in range (3,11):
hap = 180 * (n -2)
ang = int(hap / n)
dic[n] = [hap, ang]
print(dic)
1부터 10까지 각각의 정수에 대한 약수를 저장하는 딕셔너리를 만들고 출력하는 프로그램을 만들어보자.
dic = {}
for n1 in range (2,11):
tempList = []
for n2 in range(1, n1+1):
if n1 % n2 == 0:
tempList.append(n2)
dic[n1] = tempList
print(dic)
다음 문장에서 비속어를 찾고 비속어를 표준어로 변경하는 프로그램을 만들어보자.
words = {'꺼지다':'가다',
'쩔다':'엄청나다',
'짭새':'경찰관',
'꼽사리':'중간에 낀 사람',
'먹튀':'먹고 도망',
'지린다':'겁을 먹다',
'쪼개다':'웃다',
'뒷담 까다':'험담하다'}
txt = '강도는 서로 쪼개다, 짭새를 보고 빠르게 따돌리며 먹튀했다.'
keys = list(words.keys())
for key in keys:
if key in txt:
print(key, words[key])
txt = txt.replace(key, words[key])
print(txt)
딕셔너리를 이용해서 5명의 회원을 가입 받고 전체 회원 정보를 출력하고 특정 회원 계정을 삭제하는 프로그램을 만들어보자.
members = {}
n = 1
while n < 6:
mail = input('메일 입력 : ')
pw = input('비번 입력 : ')
if mail in members:
print('이미 사용중인 메일 계정입니다.')
continue
else:
members[mail] = pw
n += 1
for key in members.keys():
print(f'{key} : {members[key]}')
while True:
delMail = input('삭제 계정 입력 : ')
if delMail in members:
delPw = input('비번 입력: ')
if members[delMail] == delPw:
del members[delMail]
print(f'{delMail} 계정 삭제 완료!')
break
else:
print('비번 확인 요망')
else:
print('계정 확인 요망')
for key in members.keys():
print(f'{key} : {members[key]}')
파이썬에서 학생 정보를 가장 효율적으로 저장하고 관리할 수 있는 자료구조를 선택해서 컨테이너 자료형으로 만들어보자.
students = {'S21-0001':{'이름':'최성훈',
'성구분':'M',
'전공':'디자인',
'연락처':'010-1234-5678',
'메일':'hun@gmail.com',
'취미':['농구', '음악']},
'S21-0002': {'이름': '탁영우',
'성구분': 'M',
'전공': '바리스타',
'연락처': '010-5678-9012',
'메일': 'yeong@gmail.com',
'취미': ['축구']},
'S21-0003': {'이름': '황진영',
'성구분': 'W',
'전공': '음악',
'연락처': '010-9012-3456',
'메일': 'jin@gmail.com',
'취미': ['수영', '코딩']}
}
studentNo = input('조회대상 학생 번호: ')
for k1 in students.keys():
if k1 == studentNo:
print('-' * 30)
print(f'학생번호 : {k1}')
student = students[k1]
for k2 in student.keys():
print(f'{k2} : {student[k2]}')
이글은 제로베이스 데이터 취업스쿨의 강의자료 일부를 발췌하여 작성되었습니다.