Python을 공부한지 3주차가 되어 간다🤓
처음엔 모든 것들이 어렵게 느껴졌지만 꾸준히 복습하며 모르는 부분들을 조금씩 보완해 가고 있다.
특히 [자료구조]는 다양한 예제들을 통해 결과 값을 직접 도출해내면서 이전 보다 x3 배로 재미를 느끼는 중이다!!
😂Python...아직은 어렵지만...역시나 재밌다..!
그동안 열심히 학습한 List()를 예제로 복습해보자!
Q >
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)
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))
사용자 입력
약수 저장장소
소수 저장장소
1부터 입력수+1 까지
1은 모든 수의 약수이기 때문에
append로 추가
2서 부터
사용자 입력수를 n으로 나눠 나머지가 0이면
inputNum의 약수니까 append로 추가
2부터 입력수+1
True로 반복 명령
2서 부터 number 까지 반복
이때 n으로 나눠서 나머지가 0이되면(=소수가 아님, 약수가 1과 자기자신 외에는 없는게 소수이기 때문)
False를 주고
break를 줘서 빠져나옴
약수가 아예 없는 경우는 소수이니까
listB에 append 해준다
▼
약수: [1, 2, 5, 10, 25, 50]
소수: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
Q >
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(len(evens)))
print('홀수 : {}개'.format(len(odds)))
1. 난수 발생이 필요하므로 random모듈 사용
2. random모듈에서 sample()함수 사용 ; 범위 & 갯수 지정이 가능
★ 이때 반환 형태 ; list[] type으로 반환
import random
random.sample(range(시작 숫자, 끝 숫자), 갯수)
짝수 리스트
홀수 리스트
반복문을 실행하는데
2로 나눴을 때 나머지가 0이면 짝수
짝수 리스트에 추가
0이 아니면 홀수
홀수 리스트에 추가
짝수 출력
홀수 출력
▼
짝수 : 6개
홀수 : 4개
Q >
다음은 공원 이방료를 나타내내 표이다. 1일 총 입장객이 10명이라고 할때 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('영유아 {}명 : {}원'.format(group1,group1Price ))
print('어린이 {}명 : {}원'.format(group2,group2Price ))
print('청소년 {}명 : {}원'.format(group3,group3Price ))
print('성인 {}명 : {}원'.format(group4,group4Price ))
print('어르신 {}명 : {}원'.format(group5,group5Price ))
print('-'*25)
sum = group1Price + group2Price + group3Price+ group4Price+ group5Price
print('요금 합계 : {}'.format(sum))
print('-'*25)
100회 반복
1~100 사이 숫자를 랜덤으로 뽑아줘
그룹 변수 선언 = 0으로 초기화
각 사람의 연령대 별 나열
▼
-------------------
영유아 1명 : 0원
어린이 6명 : 1200원
청소년 7명 : 2100원
성인 49명 : 24500원
어르신 37명 : 0원
-------------------
요금 합계 : 27800
-------------------
Q >
사람 5명의 이름을 리스트에 저장하고 오름차순과 내림찬순으로 정렬
⭐ 리스트명.sort(reverse=True)
= 내림차순
friends = []
for i in range(5):
friends.append(input('친구 이름 입력 : '))
print(f'friends : {friends}')
friends.sort()
print(f'friends(오름차순) : {friends}')
friends.sort(reverse=True)
print(f'friends(내림차순) : {friends}')
▼
친구 이름 입력 : 오재민
친구 이름 입력 : 강호동
친구 이름 입력 : 유재석
친구 이름 입력 : 박지성
친구 이름 입력 : 박찬호
friends : ['오재민', '강호동', '유재석', '박지성', '박찬호']
friends(오름차순) : ['강호동', '박지성', '박찬호', '오재민', '유재석']
friends(내림차순) : ['유재석', '오재민', '박찬호', '박지성', '강호동']
Q >
리스트에서 중복아이템(숫자)를 제거하는 프로그램을 만들자
numbers = [2,22,7,8,9,2,7,3,5,2,7,1,3]
print(f'numbers : {numbers}')
idx = 0
while True:
if idx >= len(numbers):
break
if numbers.count(numbers[idx]) >= 2:
numbers.remove(numbers[idx])
continue
idx += 1
print(f'numbers : {numbers}')
if idx >= len(numbers):
→ 길이 만큼 순환, 즉 리스트에 있는 모든 숫자를 반복으로 돌려라
if numbers.count(numbers[idx]) >= 2:
→ 인덱스 0번 부터 반복 시 중복되는 숫자가 2개 이상이면
numbers.remove(numbers[idx])
→ 삭제해라
▼
result: [2, 22, 7, 8, 9, 3, 5, 1]
numbers = [2,22,7,8,9,2,7,3,5,2,7,1,3]
result = []
for number in numbers:
if number not in result:
result.append(number)
print('result: {}'.format(result))
▼
result: [2, 22, 7, 8, 9, 3, 5, 1]
Q >
4개의 숫자 중 서로 다른 숫자 2개를 선택해서 만들 수 있는 모든 경우의 수를 출력하는 프로그램을 만들자
numbers = [4,6,7,9]
result = []
for n1 in numbers:
for n2 in numbers:
if n1 == n2:
continue
result.append([n1,n2])
print(f'result : {result}')
print(f'result length : {len(result)}')
if n1 == n2:
→ 뽑은 2개의 숫자가 같으면 의미 없으니까
continue
→ 다시 반복해라
▼
result : [[4, 6], [4, 7], [4, 9], [6, 4], [6, 7], [6, 9], [7, 4], [7, 6], [7, 9], [9, 4], [9, 6], [9, 7]]
result length 가지수 : 12
import math
numbers = [4,6,7,9]
purmutation = math.factorial(len(numbers)) / math.factorial(len(numbers) -2 )
print(f'순열, 팩토리얼 : {purmutation}')
▼
순열, 팩토리얼 : 12.0
Q >
4개의 수사 중 서로 다른 숫자 3개를 선택해서 만들 수 있는 모든 경우의 수를 출력하는 프로그램을 만들자
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(f'result : {result}')
print(f'result length 가지수 : {len(result)}')
▼
result : [[4, 6, 7], [4, 6, 9], [4, 7, 6], [4, 7, 9], [4, 9, 6], [4, 9, 7], [6, 4, 7], [6, 4, 9], [6, 7, 4], [6, 7, 9], [6, 9, 4], [6, 9, 7], [7, 4, 6], [7, 4, 9], [7, 6, 4], [7, 6, 9], [7, 9, 4], [7, 9, 6], [9, 4, 6], [9, 4, 7], [9, 6, 4], [9, 6, 7], [9, 7, 4], [9, 7, 6]]
result length 가지수 : 24