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)
if number % n == 0 이라면 약수가 있다는 뜻이므로 소수가 아니다
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(listA)) print('소수: {}'.format(listB))
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)))
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('영유아\t: {}명\t: {}원'.format(group1, group1Price)) print('어린이\t: {}명\t: {}원'.format(group2, group2Price)) print('청소년\t: {}명\t: {}원'.format(group3, group3Price)) print('성인\t: {}명\t: {}원'.format(group4, group4Price)) print('어르신\t: {}명\t: {}원'.format(group5, group5Price))
sum = group1Price + group2Price + group3Price + group4Price + group5Price sumFormat = format(sum, ',') print('-' * 25) print('1일 요금 총합계: {}원'.format(sumFormat)) print('-' * 25)
friends = []
for i in range(5): friends.append(input('친구 이름 입력: '))
print('friends : {}'.format(friends))
friends.sort() print('friends(오름차순) : {}'.format(friends))
friends.sort(reverse=True) print('friends(내림차순) : {}'.format(friends))
numbers = [2, 22, 7, 8, 9, 2, 7, 3, 5, 2, 7, 1, 3] print('numbers : {}'.format(numbers))
idx = 0 while True: if idx >= len(numbers): break
if numbers.count(numbers[idx]) >= 2 -> 값이 두개 이상이라면 중복
if numbers.count(numbers[idx]) >= 2: numbers.remove(numbers[idx]) continue
idx += 1
print('numbers : {}'.format(numbers))
for문
numbers = [4, 6, 7, 9] result = []
for n1 in numbers: for n2 in numbers: if n1 == n2: continue
result.append([n1, n2])
print('result: {}'.format(result)) print('result length: {}'.format(len(result)))
공식사용 n!/(n-r)!
import math
permutation = math.factorial(len(numbers)) / math.factorial((len(numbers) - 2)) print('permutation : {}'.format(int(permutation)))
for문
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: {}'.format(result)) print('result length: {}'.format(len(result)))
공식사용 n!/(n-r)!
import math
permutation = math.factorial(len(numbers)) / math.factorial((len(numbers) - 2)) print('permutation : {}'.format(int(permutation)))
passwords = ('password1234', 'abc123', 'qwerty', 'letmein', 'welcome00') print('passwords : {}'.format(passwords))
scores = ((3.7, 4.2), (2.9, 4.3), (4.1, 4.2)) total = 0
for s1 in scores: for s2 in s1: total += s2
total = round(total, 1) avg = round((total / 6), 1) print('3학년 총학점: {}'.format(total)) print('3학년 평균: {}'.format(avg))
grade4TargetScore = round((4.0 * 8 - total), 1) print('4학년 목표 총학점: {}'.format(grade4TargetScore)) minScore = round((grade4TargetScore / 2), 1) print('4학년 한학기 최소학점: {}'.format(minScore))
scores = list(scores) scores.append((minScore, minScore)) scores = tuple(scores) print('scores: {}'.format(scores))
for문
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('합집합(중복X) : {}'.format(tempHap)) print('교집합 : {}'.format(tempGyo))
while문
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)
print('tempHap: {}'.format(tempHap)) print('tempGyo: {}'.format(tempGyo))
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
print('tempHap: {}'.format(tempHap)) print('tempHap(tuple): {}'.format(tuple(sorted(tempHap)))) print('tempGyo: {}'.format(tempGyo)) print('tempGyo(tuple): {}'.format(tuple(sorted(tempGyo))))
numbers = (8.7, 9.0, 9.1, 9.2, 8.6, 9.3, 7.9, 8.1, 8.3)
# index: 0 ~ 3
print('numbers[0:4] : {}'.format(numbers[0:4]))
# index: 2 ~ 4
print('numbers[2:5] : {}'.format(numbers[2:5]))
# index: 3 ~ end
print('numbers[3:] : {}'.format(numbers[3:]))
# index: 2 ~ end-2
print('numbers[2:-1] : {}'.format(numbers[2:-1]))
# index: 0 ~ end, step = 3
print('numbers[::3] : {}'.format(numbers[::3]))
# 최솟값
print('최솟값 : {}'.format(min(numbers))) print('최솟값 인덱스 : {}'.format(numbers.index(min(numbers))))
# 최댓값
print('최댓값 : {}'.format(max(numbers))) print('최댓값 인덱스 : {}'.format(numbers.index(max(numbers))))
korScore = int(input('국어 점수 입력: ')) engScore = int(input('영어 점수 입력: ')) matScore = int(input('수학 점수 입력: ')) sciScore = int(input('과학 점수 입력: ')) hisScore = int(input('국사 점수 입력: '))
scores = ({'kor':korScore}, {'eng':engScore}, {'mat':matScore}, {'sci':sciScore}, {'his':hisScore})
print('scores: {}'.format(scores))
튜플의 데이터는 변경이 안되지만 안에 딕셔너리의 값을 변경하므로 가능
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('scores: {}'.format(scores))
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('전체 학생 수: {}'.format(totalCnt)) avgCnt = totalCnt / len(studentCnt) print('평균 학생 수: {}'.format(avgCnt))
print('학생 수가 가장 적은 학급: {}({})'.format(minCls, minStdCnt)) print('학생 수가 가장 적은 학급: {}({})'.format(maxCls, maxStdCnt))
for idx, dic in enumerate(studentCnt): for k, v in dic.items(): deviation.append(round(v-avgCnt, 2)) print('학급별 학생 편차: {}'.format(deviation))
subject = ['국어', '영어', '수학', '과학', '국사'] scores = {}
for s in subject: score = input(s + ' 점수 입력: ') scores[s] = score
print('과목별 점수: {}'.format(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'}
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)
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)
aboutPython = '파이썬은 1991년 프로그래머인 귀도 반 로섬이 발표한 고급 프로그래밍 언어이다.'
split() -> 공백을 기준으로 띄어서 리스트로 나타내줌
splitList = aboutPython.split() print(splitList)
dic = {} for idx, v in enumerate(splitList): dic[idx] = v
print(dic)
words = {'꺼지다':'가다', '쩔다':'엄청나다', '짭새':'경찰관', '꼽사리':'중간에 낀 사람', '먹튀':'먹고 도망', '지린다':'겁을 먹다', '쪼개다':'웃다', '뒷담 까다':'험담하다'}
text = '강도는 서로 쪼개다, 짭새를 보고 빠르게 따돌리며 먹튀했다.'
keys = list(words.keys())
for key in keys: if key in text: print('key: {}'.format(key)) print('words[{}]: {}'.format(key, words[key])) text = text.replace(key, words[key])
print(text)
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('{} : {}'.format(key, members[key]))
7번 문제와 동일
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('{} : {}'.format(key, members[key]))
추가된 부분
while True: delMail = input('삭제할 계정(메일) 입력: ')
if delMail in members: delPw = input('비번 입력: ') if members[delMail] == delPw: del members[delMail] print('{} 계정 삭제 완료!!'.format(delMail)) break else: print('비번 확인 요망!!') else: print('계정 확인 요망!!')
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', '취미': ['수영', '코딩']} }
for k1 in students.keys(): print('-' * 40) print('학생번호: {}'.format(k1)) student = students[k1] for k2 in student.keys(): print('{} : {}'.format(k2, student[k2]))
studentNo = input('조회 대상 학생 번호 입력: ') print('{} : {}'.format(studentNo, students[studentNo]))
가장 기억에 남는 부분은 딕셔너리를 이용해서 회원을 가입 받고 전체 회원 정보를 출력, 삭제하는 프로그램 실습 문제였다
직접 회원정보를 입력하고 삭제 해보았는데 처음에는 어려웠지만 반복해보니 이해가 갔다
어제도 그랬지만 딕셔너리의 keys() 부분과 그 뒤에 [key]로 나타내는 부분이 아직도 헷갈리고 조금만 집중을 놓으면 위에부터 내려오면서 코드를 다시 이해해야되는 상황이 일어났었다
리스트와 튜플과는 다른부분이 너무 헷갈린다
문제풀이를 풀어보니 역시 더 이해가 잘 가는 부분도 있었지만 막상 혼자 코드를 만들어보려하면 막막한 문제들이 대부분이었다
혼자 코드를 만들어보는 경험이 중요하다고 하지만 아직까지는 강의를 따라가는것도 어렵다
조금 더 익숙해지면 다시 혼자 풀어볼 생각이다
내일은 알고리즘 파트를 공부할 예정이다