본문 바로가기

무한대

 반복loop

①.① 반복이란?

  1. 반복은, 한 가지 일을 되풀이 하며, 기본적으로 끝없이  동작한다.
  2. 개발자는, 반복 횟수 만큼 실행하도록 제어하는 코드를 작성 해야한다.

①.② 반복의 문제 파악

# *개발 언어의 모든 기능은, 개발자의 편의를 위해 만들어졌다.

# 1 #

# print("hello python")를 10번 출력하는 코드를 작성하세요.
# 10번 세는 수, 기수

print("hello python") #   1
print("hello python") #   2
print("hello python") #   3
print("hello python") #   4
print("hello python") #   5
print("hello python") #   6
print("hello python") #   7
print("hello python") #   8
print("hello python") #   9
print("hello python") #  10
#          ...
print("hello python") # 100

①.③ 반복 제한에 사용 할 횟수 범위로 표현하기

반복의 "10번"이라는 횟수는, 연속되는 정수 10개를 세는 과정과 같다.
그리고, 연속되는 정수 10개는 "범위"를 통해 논리적으로 표현 가능하다.

# 2.1
# 비교 연산자: >=, >, =, <=, < 를 사용하여
# 아래 예시를 보고, 연속된 정수 10개를 표현하는 범위를 만들어 보세요.
# 예시: 연속된 정수 5개의 범위 >> 1 <= x <= 5

# 2.2 
# 정수 0 ~ 11 을 사용해 10번을 셀 수 있는 범위 4개를 표현하세요.

# hint, 1부터 시작하는 경우
# 1 <= x <  11  # 10개
# 1 ?? x ??  ?  # 10개

# 0부터 시작하는 경우
# 0 ?? x ?? 10  # 10개
# ? ?? x <=  ?  # 10개
더보기
1 <  x <= 11
1 <= x <  11

0 <= x <= 9
0 <  x <= 10
0 <= x <  10

①.④ S/W 개발자 관점의 범위 표현 (횟수)

개발자는 "반복"을 "특정 횟수"만큼 실행하게 만든다.

"특정 횟수"를 논리적으로 표현하고 컴퓨터가 이해하도록 구현해야 한다.

 

1. "특정 횟수" 10번을 범위로 표현하는 방법은

    5가지 경우의 수가 있다.

 

 

2. 컴퓨터는 모든 값이 0으로 시작(포함)한다.

    개발자도 마찬가지다.

0 <= x <= 9
0 <  x <= 10 # 0을 포함하지 않는다.
0 <= x <  10

3. 컴퓨터의 숫자가 0으로 시작하는 것은, 변경이 불가능하다.

    개발자, 인간의 관점에서 9를 사용하는 것보다, 10을 사용하는 것이 더 직관적이다.

 

4. 범위의 표현에서,  시작 숫자  마지막 숫자

    그리고 범위 효현을 위한 ④ 비교 연산자 외에,  증감 숫자 가 필요하다.

     증감 숫자가 없다면, 컴퓨터는 0 <= x <  10 사이의 숫자에 대한 판단을 할 수 없다.

    컴퓨터는  시작 숫자 에서  증감 숫자 만큼 연산하여  마지막 숫자 까지 개수를 센다.

 

5. 모든 파이썬 내장 함수, 다른 개발 언어의 함수에서도 ① 시작 숫자, ② 마지막 숫자, ③ 증감 숫자, ④ 비교 연산자 를 통해 범위를 논리적으로 표현한다.

 

6. 예시

  • 리스트 슬라이싱
  • List[0:10]
  • List[① 시작 숫자 이상:② 마지막 숫자 미만]
  • ③ 증감 숫자가 생략되면 부조건 1씩 연산된다.
  • ① 시작 숫자 가 생략되면 무조건 0부터 시작한다.
더보기

C 언어 for 반복문과 비교

for (int i = 0; i < 10; ++i)
{
    printf("Hello Python ");
}

 range( )

②.① 참고

range( ) 함수 공식문서

python 소스코드

 

②.  반복 횟수 제한에 필요한, "1)시작 숫자, 2)끝 숫자, 3)증감 숫자"  학습

  • 0 <= x <  10
    증감 숫자가 생략되었다면, 증감 숫자는 1 이다.
  • 0 , 10
    비교 연산자가 생략되었다면, 시작 숫자 이상 (<=),  x, (<) 마지막 숫자 미만이다.
  • 10
    시작 숫자가 생략되었다면, 시작 숫자는 0 이다.
  • 마지막 숫자는 인간의 관점에서 "반복 횟수" 이다.
# range(마지막 숫자)
# range(시작 숫자, 마지막 숫자)
# range(시작 숫자, 마지막 숫자, 증감폭)

# 1 #
# 위 3가지 range() 함수 생성 방법을 모두 사용하여
# 0 ~ 9 까지 10개의 요소를 가진 리스트를 모두 출력하세요
# hint 
# list(range(0, 10))

# 2 #
# 위 range 함수를 참고해, 3의 배수 5개가 포함된 리스트를 출력하세요.
# 결과 >> [3, 6, 9, 12, 15]

# 3 #
# 정수 1개를 입력받고
# max = 10 변수를 이용하여
# 0 ~ 9까지의 10개의 정수가 포함된 리스트를 출력하세요.

# 4 #
# 정수 1개를 입력받고
# max = 10 변수를 이용하여
# 해당 숫자의 구구단을 출력하세요
# 결과 >> 몇 단을 출력할까요? 3 [3, 6, 9, 12, 15, 18, 21, 24, 27]
더보기
weight = int(input('몇 단을 출력할까요? '))
max = 10
lst = list(range(weight, (max*weight) ,weight))
print(lst)

③.반복문 for 

③. for 반복문과 정수 

# for 반복문에서 raneg() 함수를 사용한다는 의미?
# for 변수 in range(숫자 미만):
# for 변수 in range(시작 숫자, 마지막 숫자):
# for 변수 in range(시작 숫자, 마지막 숫자, 증감폭):

# 차이 생각해보기
# for i in list(range(10)):
#     print(i)
# for i in range(10):
#     print(i)

# 1 #
# 위 for 문 사용 방법 1가지를 골라서, 연속된 정수 2 ~ 9 를 출력하세요.

# 2 #
# 위 for 문 사용 방법 1가지를 골라서, 연속된 정수 2 ~ 9, 8개의 요소를 가진 리스트로 출력하세요.

# hint 
# 빈 리스트에 추가하세요.
# 리스트에 값 추가 방법 >> list변수.append(값)

③. for 반복문과 리스트 내포 List Comprehension

# 리스트 내포

# for 변수 in range("문자열"):
# for 변수 in list(range("문자열")):

# for 변수 in range(숫자):
# for 변수 in list(range(숫자)):

# for 변수 in 튜플
# for 변수 in list(튜플)

# 1 #
# 아래 for 문을 이용하여, 정수 2 ~ 9, 8개의 요소를 출력하세요.

# for i in "문자열":
# for i in list("문자열"):

# for j in range(숫자):
# for j in list(range(숫자)):

# for k in 튜플:
# for k in list(튜플):

③. 순차sequence 특성을 가진 자료과 enumerate( ) 함수

저장된 요소가 순차적으로 저장되고, 인덱스 사용 가능하다

# 1. 순차 특성을 가진 자료형과 딕셔너리.items():
# for i in 문자열:
# for i in 리스트:
# for i in 튜플:
# for i in 딕셔너리.items():

# 1.1 문자열, 리스트, 튜플을 for 반복분으로 출력하세요

# 2. enumerate() 함수 사용
# 문자열 예시
# String = "ABCD"
# for i, j in enumerate(String):
#   print("String Loop:", i, j)

# 2.1 문자열, 리스트, 튜플을, for 반복분에서 enumerate() 함수를 사용해
# 인덱스와 값을 모두 출력하세요

# 3. Dictionary.items() 함수
# Dict = {0:"A", 1:"B", 2:"C", 3:"D"} # 중괄호
# for i, j in Dict.items():
#     print(i, j)

# 딕셔너리.items(): 를 사용해, for 반복분으로 출력하세요
더보기
# 리스트
List = ["A", "B", "C", "D"]  # 대괄호
# 튜플
Tuple = ("A", "B", "C", "D") # 소괄호
# 딕셔너리
Dict = {0:"A", 1:"B", 2:"C", 3:"D"} # 중괄호


for i, j in enumerate(List):
  print("List Loop:", i, j) 

for i, j in enumerate(Tuple):
  print("Tuple Loop", i, j) 

for i, j in Dict.items():
  print("Dict Loop",i, j)

③.④ 튜플

# 1 튜플
# lst_tp = [(0, 'A', "Hello"),(1, 'B', "List"),(2, 'C', "Loop")]
# 위 리스트를 for 문에서 출력하세요.

④ while

④.① while과 for의 공통점

# while 반복문 사용법

start =  0 # 시작 숫자
end   = 10 # 끝 숫자

while start < end: 
  print("hello python", start+1) # 한 가지 일
  start += 1 # 증감  


# 1 # 
# while 반복문을 사용해서, 정수 1~100 범위의 홀수를 출력하세요

④. while과 for의 차이점 

# 2 #
# ? 를 채우세요

# 일반적인 while 사용법, True, False, 무한
# chk = flag

chk = True
pw  = ???? # 사용할 비밀번호 숫자 4자리를 설정하세요.  

while ??? :
  num = input("Pin 4자리를 입력해주세요.")
  if int(num) == pw:
    print("Pin 통과")
    chk = ????? # while 반복문을 종료시는 조건을 입력하세요.

  print("Pin 오류. 다시 ", end='' )

⑤ else ~ continue ~ break

우선, 아래 else, continue, break 는 가급적 사용하지 않는다.

⑤.① for ~ continue, break

# 
# for 변수 in 범위:
#    ...
#    continue  # for문 내부 시작점으로 돌아간다.
#    ...
#    break     # for문을 종료한다.

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

for i in lst:
  if i < 3:
    print("출력", i, " < 3")
    continue
  else:
    break;

⑤. for ~ else

# 
# for 변수 in 범위:
#    # 반복 실행 코드
# else: 
#    # 반복문 정상 종료시 실행 코드 

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

for i in lst:
  if i < 3:
    print("출력", i, " < 3")
    continue
else:
  print("반복문 정상 작동 완료")

⑤. while ~ continue, break

# while 조건:
#   반복 실행 코드
#   continue # while 문 내부 시작점으로 돌아간다.
#   ...
#   break    # while 문 종료


# start =  0 # 시작 숫자
# end   = 10 # 끝 숫자

while start < end: 
  start += 1 # 증감
  if x < 3:
    print("출력", i, " < 3")
    continue
  
  print("출력", i, " >= 3")

  if x > 7:
    break

 

BasicLike

어? 나 프로그래밍 좋아하네?