티스토리 뷰
- 어떤 조건이 성립하는 동안 반복해서 처리(프로그램 명령문 또는 명령어의 집합)하는 것을 반복구조 repetition structure, 루프 loop
while 조건식 : 명령문(루프 본문)
# [Do it! 실습 1-7] 1부터 n까지 정수의 합 구하기 1(while 문)
print('1부터 n까지 정수의 합을 구합니다.')
n = int(input('n값을 입력하세요.: '))
sum = 0
i = 1
while i <= n: # i가 n보다 작거나 같은 동안 반복
sum += i # sum에 i를 더함
i += 1 # i에 1을 더함
print(f'1부터 {n}까지 정수의 합은 {sum}입니다.')
- 합을 저장하는 sum 값을 0으로, 반복을 제어하는 i 값을 1로 초기화
반복을 제어할 때 사용하는 i를 카운터용 변수라고 한다. - 변수가 하나만 있을 때는 while문보다 for문을 사용하는 것이 좋다.
# [Do it! 실습 1-8] 1부터 n까지의 합 구하기 2(for 문)
print('1부터 n까지의 합을 구합니다.')
n = int(input('n값을 입력하세요.: '))
sum = 0
for i in range(1, n + 1):
sum += i # sum에 i를 더함
print(f'1부터 {n}까지 정수의 합은 {sum}입니다.')
- range()함수는 이터러블 객체를 생성한다.
range(a,b,step) : a이상 b미만인 수를 step간격으로 나열하는 수열 - 이터러블 객체 : 반복할 수 있는 객체
for~in문에 사용할 수 있다. 대표적인 이터러블 자료형으로 파이썬에 list, str, tuple 이 있다
for i in range(a,b)는 [a, a+1, ... , b-1]이라는 이터러블 객체를 생성하고, 이터러블 객체의 값을 하나씩 꺼내 i에 넣어 반복한다.
# [Do it! 실습 1-9] a부터 b까지 정수의 합 구하기(for 문)
print('a부터 b까지의 합을 구합니다.')
a = int(input('정수 a를 입력하세요.: '))
b = int(input('정수 b를 입력하세요.: '))
if a > b:
a, b = b, a # a와 b를 오름차순으로 정렬
sum = 0
for i in range(a, b + 1):
sum += i # sum에 i를 더함
print(f'{a}부터 {b}까지 정수의 합은 {sum}입니다.')
a, b = b, a # a와 b의 값을 교환(단일 대입문 사용)
- 두 값 교환하기 1
우변의 b, a에 의해 두 값을 압축한 튜플 (b,a)가 생성된다 → 대입할 때 튜플 (b,a)를 다시 풀어 b,a로 만든 다음 각각 a와 b에 대입한다. - 두 값 교환하기2
또는 임시용 변수 t를 이용하여 두 값을 교환할 수 있다.
a값을 t에 저장한다 → b값을 a에 대입한다 → t에 저장한 처음 a값을 b에 대입한다.
while True:
n = int(input('n값을 입력하세요.: '))
if n > 0:
break # n이 0보다 커질 때까지 반복
- while문의 조건식에 True가 사용되었다.
프로그래머가 의도적으로 while문이 무한 반복되도록 만든 것이며 무한 루프 infinite loop라고 한다. - 반복문 안에서 break 문을 실행하면 반복문을 종료할 수 있다.
- 대부분 프로그래밍 언어에서, 한 번 실행한 다음 계속 반복할지 판단하는 사후판단 반복문을 지원한다.
do ~while문, repeat~until문
파이썬은 사후판단 반복문을 제공하지 않는다. break를 사용하여 양수를 입력받는 프로그램을 만들어야 한다.
# [Do it! 실습 1-17] 가로 세로가 정수이고 넓이가 area인 직사각형에서 변의 길이를 나열하기
area = int(input('직사각형의 넓이를 입력하세요.: '))
for i in range(1, area + 1): # 1부터 사각형의 넓이 계산
if i * i > area: break
if area % i: continue
print(f'{i} × {area // i}')
# [Do it! 실습 1-18] 10~99 사이의 난수 n개 생성하기(13이 나오면 중단)
import random
n = int(input('난수의 개수를 입력하세요.: '))
for _ in range(n):
r = random.randint(10, 99)
print(r, end=' ')
if r == 13:
print('\n프로그램을 중단합니다.')
break
else :
print('\n난수 생성을 종료합니다.')
- break : else문을 포함하여 반복문을 강제로 종료시킨다.
- continue : 반복문에서 continue문이 실행되면 루프 본문의 나머지 부분을 건너뛰고 조건식으로 돌아간다.
- else : while문이나 for문 등 반복문의 끝부분에 else문을 둘 수 있다. else문은 조건식에 의해 반복문이 종료되는 경우 실행된다.
(break문이 실행되지 않았을 때에만 실행)
>>> n = 17
>>> id(17)
4316146480
>>> id(n)
4316146480
- 파이썬의 변수
파이썬에서는 데이터, 함수, 클래스, 모듈, 패키지 등을 모두 객체 object로 취급한다.
객체는 자료형 data type 을 가지고 메모리(저장공간)을 차지한다.
파이썬의 이런 특징 때문에 파이썬의 변수는 값을 갖지 않는다는 특징이 있다.
보통 프로그래밍 언어에서 변수는 값을 저장하는 상자와 같다고 비유하는데, 파이썬에서는 이 비유가 알맞지 않다.
상자라는 표현을 사용하여 정리하면, 17이라는 int형 객체 자체가 상자라고 할 수 있다. 변수는 단순한 이름에 불과하다. - 파이썬의 변수는 객체를 참조하는 객체에 연결된 이름에 불과하다.
- 모든 객체는 메모리를 차지하고, 자료형뿐만 아니라 식별번호 identity 를 가진다.
- 정수 리터럴 17의 식별번호와 n의 식별번호가 같다.
- 리터럴(literal)이란 값 자체를 의미한다. 문자 자체에 의해 값이 주어지는 문자열. 숫자 리터럴 7은 7의 값을 가지며, 문자 리터럴 CHARACTERS는 CHARACTERS의 값을 가진다.
- n의 값을 17이 아닌 다른 값으로 갱신하면 새로운 값을 갖는 개체가 생성되고, 그 값을 n이 참조한다. n의 식별번호 역시 갱신된다.
- 전역변수, 지역변수 모두 객체를 참조하는 이름에 불과하다.
출처 : Do it ! 자료구조와 함께 배우는 알고리즘 입문 파이썬편
반응형
'개발 > TIL' 카테고리의 다른 글
웹 개발 / HTML / VSCode (2) | 2023.03.03 |
---|---|
메타인지 / 페어 프로그래밍 / 의사코드 / 개발자 도구 (0) | 2023.03.03 |
M1 Mac :: Github desktop 계정 로그아웃 (0) | 2022.05.14 |
01-1 (알고리즘 기초) 알고리즘이란? (0) | 2021.10.21 |
[M1 Mac] gensim Library 설치 (2) | 2021.10.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 공릉 꼬치
- 공릉맛집
- 이수 맛집
- 태릉맛집
- 맥 깃허브 데스크탑
- 춘천맛집
- 깃허브 데스크탑 로그아웃
- 태릉 이자카야
- 공릉 밀크티
- 태릉 술집
- 공릉 이자카야
- 티스토리검색
- 태릉삼겹살
- 구글서치콘솔
- 홍천 삼겹살
- 을지로맛집
- 신불당 술집
- sitemap
- 공릉 카페
- 롯데월드 보조배터리
- 롯데월드 매직패스 프리미엄
- 태릉 꼬치
- 공릉 술집
- 공릉 맛집
- solo project
- 롯데월드 키오스크
- 티스토리
- 회고
- 춘천닭갈비
- Til
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함