Cute Running Puppy

Python

Python_07Day

jwjin 2019. 2. 21. 23:09
728x90

# 소수 찾기 프로그램 , 반복문(list)

소수 찾기 프로그램은 사용자가 입력한 숫자가 소수인지 아닌지 판단하는 프로그램입니다.

n = int(input('숫자 입력 : '))
count = 0


for i in range(1,n+1) :
print(f'{n} % {i} = {n%i}')
if n % i == 0 :
count += 1

# 출력
if count == 2 :
print(f'{n}은 소수입니다')
else :
print(f'{n}은 소수가 아닙니다')

예를 들어보겠습니다. 5는 소수입니다. 5를 1부터 5까지 나누어보면 나머지가 0이 나오는게 2번입니다.

다른소수도 마찬가지 입니다. 따라서 반복문을 1부터 자기가 입력한 숫자까지 나오게 하기 위해 1, n+1이라 합니다.

그리고 입력한 숫자 나누기 i를 했을때 0이 나오면 count를 1씩 증가시킵니다. 그리고 나서 count가 2일떄 소수, 아니면 소수가 아니라 출력하게 합

니다. 하지만 위의 식에서 ex)235277625 라는 숫자를 입력했을떄 소수인지 아닌지 판단하는 것은 매우 오래걸립니다.

따라서 식이 길어지더라도 빨리 , 깔끔하게 나오기 위해 최적화를 해야합니다.

#  최적화

'''
n = int(input('숫자 입력 : '))
count = 0


for i in range(1,n) :
print(f'{n} % {i} = {n%i}')
if i * i > n : 최적화 2 : 소수인 경우는 루트값까지만 검사
break
if n % i == 0 :
count += 1
if count >= 2 : 최적화 1 : 나누어 떨어지는 숫자가 추가로 발견된다면 발견 즉시 중지
break

# 출력
if count == 1 :
print(f'{n}은 소수입니다')
else :
print(f'{n}은 소수가 아닙니다')

'''

위의 식이 최적화된 식입니다. 자리수가 많은 수를 입력해도 금방 결과가 나옵니다.

다음은 배열입니다. c언어에서는  array이지만 파이썬에서는 list라 칭합니다.

표현은 같습니다. 10 , 20 , 30 이라는 숫자를 a에 저장했을때 a = [10 , 20 , 30] 이렇게 표현합니다.


# 데이터 접근을 위해서는 index를 사용
print(a[0] , a[1] , a[2])

# 데이터의 개수(길이)
print(len(a))

데이터를 이용하기 위해서는 인덱스를 사용합니다. 데이터의 개수도 구할수 있는데 len을 이용해 구합니다. 위의식을 이용하면 답은 3이 나옵니다.

# [77점, 81점, 59점, 63점, 92점, 88점, 89점, 93점, 73점, 66점]
# [1] 저장소에 데이터 저장 후 전체 점수를 출력해보세요
# [2] 성적 합계와 평균을 구하여 화면에 출력해보세요
# [3] 85점을 획득한 학생의 등수를 구해보세요

prize = [77,81,59,63,92,88,89,93,73,66]
total = 0

for i in prize :
print(f'{i}점')
total += i

print(f'합계 = {total}점')
print(f'평균 = {total / len(prize)}점')

# 등수 = 1 + 나보다 높은 데이터 개수
my = 85
count = 0
for i in prize :
if i > my :
count += 1

rank = 1 + count
print(f'{my}점인 학생의 등수는 {rank}등 입니다')

예시 문제입니다. 위의 10개의 점수를 저장하고 출력 , 성정 합계와 평균을 출력 , 85점 일때 등수를 구해야 합니다.

합계를 구하기 위해선 반복문을 이용해야 하기 때문에 위의 처럼 식을 작성하고 i씩 더해주면 합계가 나오고 평균은 이 답에서 10을 나누면 

평균이 나옵니다. 

다음은 배열의 여러가지 유용한 기능들 입니다.

list = [3,5,2,1,4]

# 데이터 추가 : 맨뒤에(append) , 중간에(insert)
list.append(7)
list.insert(2,8) # 2번 위치에 8을 넣어라


# 데이터 검색 : count
print(list.count(7)) # 7이 들어있는 개수 반환(1)
print(list.count(6)) # 6이 들어있는 개수 반환(0)


# 데이터 삭제 : 데이터(remove), 위치(pop)
list.remove(4) # 데이터 4를 삭제하세요
list.pop(2) # 2번 위치의 값을 삭제하세요

# 데이터 정렬 : sort - 기본적으로 오름차순 정렬
print(list)
list.sort()
print(list)
list.sort(reverse = True)
print(list)

데이터 추가 / 데이터 검색 / 데이터 삭제 / 데이터 정렬 이 있습니다.

list 뒤에 append 를 붙여주고 원하는 숫자를 적으면  맨 뒤에 그 숫자가 추가됩니다. 중간에 넣으려면 insert 를 써야하는데 원하는 위치를 먼저 쓰고

원하는 숫자를 그다음에 쓰면 원하는 대로 추가가 됩니다.

데이터 검색은 원하는 숫자가 몇개 있는지 검색할 수 있는 기능입니다. count를 씁니다.

다음은 데이터 삭제인데 데이터 삭제와 원하는 위치 값을 삭제하는 2가지 기능으로 나뉘어 집니다.

우선 데이터 삭제하는 것은 remove 인데 remove를 적고 삭제하고 싶은 숫자를 적으면 그 숫자가 삭제됩니다.

원하는 위치 값을 삭제하는 것은 pop이라는 것을 써야하는데 pop을 적고 원하는 위치를 적으면 그 위치의 숫자가 삭제됩니다.

마지막은 데이터 정렬입니다. 오름차순과 내림차순인데 오름차순은 sort입니다. 내림차순은 sort를 적은다음 reverse = True 를 안에 적어주어야 

합니다. 위에선 오름차순으로 정렬하면 1 , 2, 3, 5 ,7로 나타나고 내림차순은 반대인 7 , 5, 3, 2, 1로 나타나게 됩니다.






728x90

'Python' 카테고리의 다른 글

Python_09Day  (0) 2019.02.25
Python_08Day  (0) 2019.02.22
Python_06Day  (0) 2019.02.20
Python_05Day  (0) 2019.02.19
Python_04Day  (0) 2019.02.15