πŸš€ 파이썬 초보자λ₯Ό μœ„ν•œ range() ν•¨μˆ˜ μ™„λ²½ κ°€μ΄λ“œ: 숫자 μ‹œν€€μŠ€μ˜ λ§ˆλ²•

 μ•ˆλ…•ν•˜μ„Έμš”, 파이썬 μ—΄μ •κ°€ μ—¬λŸ¬λΆ„! μ˜€λŠ˜μ€ 파이썬 ν”„λ‘œκ·Έλž˜λ°μ˜ 핡심 도ꡬ 쀑 ν•˜λ‚˜μΈ `range()` ν•¨μˆ˜μ— λŒ€ν•΄ 깊이 있게 μ•Œμ•„λ³΄λ €κ³  ν•©λ‹ˆλ‹€. 이 κ°•λ ₯ν•œ ν•¨μˆ˜λŠ” 숫자 μ‹œν€€μŠ€ μƒμ„±μ˜ λΉ„λ°€ 무기둜, μ—¬λŸ¬λΆ„μ˜ μ½”λ”© μ‹€λ ₯을 ν•œ 단계 λŒμ–΄μ˜¬λ¦΄ 수 μžˆλŠ” λ§ˆλ²• 같은 λ„κ΅¬μž…λ‹ˆλ‹€. 자, 이제 파이썬의 μ„Έκ³„λ‘œ λΉ μ Έλ³ΌκΉŒμš”? 🐍✨

 1. range() ν•¨μˆ˜λž€ 무엇인가?


`range()` ν•¨μˆ˜λŠ” 파이썬의 λ‚΄μž₯ ν•¨μˆ˜λ‘œ, 숫자 μ‹œν€€μŠ€λ₯Ό μƒμ„±ν•˜λŠ” λ§ˆλ²•μ‚¬μ™€ κ°™μŠ΅λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 μ‚¬μš©ν•˜λ©΄μ„œ λŒ€κ·œλͺ¨μ˜ 숫자 λ²”μœ„λ₯Ό λ‹€λ£° 수 있게 ν•΄μ€λ‹ˆλ‹€. 마치 λ¬΄ν•œν•œ μ£Όλ¨Έλ‹ˆμ—μ„œ ν•„μš”ν•  λ•Œλ§ˆλ‹€ 숫자λ₯Ό κΊΌλ‚΄λŠ” κ²ƒμ²˜λŸΌ μž‘λ™ν•˜μ£ ! 🎩✨


 2. range() ν•¨μˆ˜μ˜ κΈ°λ³Έ μ‚¬μš©λ²•


`range()` ν•¨μˆ˜λŠ” μ„Έ κ°€μ§€ μ£Όμš” ν˜•νƒœλ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:


1. range(stop): 0λΆ€ν„° μ‹œμž‘ν•΄μ„œ stop μ „κΉŒμ§€μ˜ 숫자λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

2. range(start, stop): startλΆ€ν„° μ‹œμž‘ν•΄μ„œ stop μ „κΉŒμ§€μ˜ 숫자λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

3. range(start, stop, step): startλΆ€ν„° μ‹œμž‘ν•΄μ„œ stop μ „κΉŒμ§€ step κ°„κ²©μœΌλ‘œ 숫자λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.


예제λ₯Ό 톡해 μ‚΄νŽ΄λ³ΌκΉŒμš”? 🧐


```python

# 예제 1: 0λΆ€ν„° 4κΉŒμ§€ 좜λ ₯

for i in range(5):

    print(i, end=' ')

# 좜λ ₯: 0 1 2 3 4


print("\n---")


# 예제 2: 2λΆ€ν„° 6κΉŒμ§€ 좜λ ₯

for i in range(2, 7):

    print(i, end=' ')

# 좜λ ₯: 2 3 4 5 6


print("\n---")


# 예제 3: 1λΆ€ν„° 10κΉŒμ§€ 2μ”© μ¦κ°€ν•˜λ©° 좜λ ₯

for i in range(1, 11, 2):

    print(i, end=' ')

# 좜λ ₯: 1 3 5 7 9

```


이 μ½”λ“œλ₯Ό 싀행해보면, `range()`κ°€ μ–Όλ§ˆλ‚˜ λ‹€μž¬λ‹€λŠ₯ν•œμ§€ λ°”λ‘œ μ•Œ 수 μžˆμ„ κ±°μ˜ˆμš”!


 3. range()와 for λ£¨ν”„μ˜ ν™˜μƒμ μΈ μ‘°ν•©


`range()`와 `for` λ£¨ν”„λŠ” 마치 초콜릿과 바닐라 μ•„μ΄μŠ€ν¬λ¦Όμ²˜λŸΌ μ™„λ²½ν•œ μ‘°ν™”λ₯Ό μ΄λ£Ήλ‹ˆλ‹€. 🍫🍦 이 μ‘°ν•©μœΌλ‘œ μš°λ¦¬λŠ” μ •ν™•νžˆ μ›ν•˜λŠ” 만큼의 λ°˜λ³΅μ„ μ‰½κ²Œ μ œμ–΄ν•  수 있죠.


```python

# 5번 "μ•ˆλ…•ν•˜μ„Έμš”!" 좜λ ₯ν•˜κΈ°

for _ in range(5):

    print("μ•ˆλ…•ν•˜μ„Έμš”!")


# μΉ΄μš΄νŠΈλ‹€μš΄ λ§Œλ“€κΈ°

print("λ‘œμΌ“ λ°œμ‚¬ μΉ΄μš΄νŠΈλ‹€μš΄!")

for i in range(10, 0, -1):

    print(i)

print("λ°œμ‚¬! πŸš€")

```


이 예제λ₯Ό 싀행해보면, `range()`κ°€ μ–Όλ§ˆλ‚˜ 직관적이고 κ°•λ ₯ν•œμ§€ λŠλ‚„ 수 μžˆμ„ κ±°μ˜ˆμš”.


 4. range()의 μˆ¨κ²¨μ§„ 보물: κ³ κΈ‰ ν™œμš©λ²•


`range()`λŠ” λ‹¨μˆœν•œ 반볡 μ΄μƒμ˜ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. μ—¬κΈ° λͺ‡ κ°€μ§€ ν₯미둜운 ν™œμš©λ²•μ„ μ†Œκ°œν• κ²Œμš”:


 4.1 리슀트 μƒμ„±ν•˜κΈ°


```python

# 짝수 리슀트 λ§Œλ“€κΈ°

even_numbers = list(range(0, 11, 2))

print(even_numbers)  # [0, 2, 4, 6, 8, 10]


# 제곱수 리슀트 λ§Œλ“€κΈ°

squares = [x**2 for x in range(1, 6)]

print(squares)  # [1, 4, 9, 16, 25]

```


 4.2 인덱싱과 μŠ¬λΌμ΄μ‹±


```python

alphabet = 'abcdefghijklmnopqrstuvwxyz'

print(alphabet[range(0, 26, 2)])  # 'acegikmoqsuwy'

```


이런 λ°©μ‹μœΌλ‘œ `range()`λ₯Ό ν™œμš©ν•˜λ©΄, λ³΅μž‘ν•œ 데이터 μ²˜λ¦¬λ„ κ°„λ‹¨ν•˜κ²Œ ν•΄κ²°ν•  수 μžˆλ‹΅λ‹ˆλ‹€! πŸ§™‍♂️


 5. range()의 νš¨μœ¨μ„±: μ™œ κ·Έλ ‡κ²Œ λΉ λ₯Έκ°€?


`range()`의 비밀은 λ°”λ‘œ 'μ§€μ—° 평가(lazy evaluation)'에 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” ν•„μš”ν•  λ•Œλ§Œ 값을 μƒμ„±ν•œλ‹€λŠ” λœ»μ΄μ—μš”. 예λ₯Ό λ“€μ–΄, `range(1, 1000000)`은 μ‹€μ œλ‘œ 100만 개의 숫자λ₯Ό λͺ¨λ‘ μ €μž₯ν•˜μ§€ μ•Šκ³ , μ‹œμž‘κ°’, μ’…λ£Œκ°’, 그리고 λ‹¨κ³„λ§Œμ„ κΈ°μ–΅ν•©λ‹ˆλ‹€.


이런 νŠΉμ„± λ•Œλ¬Έμ— `range()`λŠ” λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ΄ 맀우 적고, λŒ€κ·œλͺ¨ 데이터λ₯Ό λ‹€λ£° λ•Œ 특히 μœ μš©ν•©λ‹ˆλ‹€. πŸ‘¨‍πŸ’»


```python

import sys


# λ¦¬μŠ€νŠΈμ™€ range 객체의 λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰ 비ꡐ

big_list = list(range(1000000))

big_range = range(1000000)


print(f"리슀트 크기: {sys.getsizeof(big_list)} λ°”μ΄νŠΈ")

print(f"range 객체 크기: {sys.getsizeof(big_range)} λ°”μ΄νŠΈ")


# 좜λ ₯

리슀트 크기: 8000056 λ°”μ΄νŠΈ

range 객체 크기: 48 λ°”μ΄νŠΈ

```


이 μ½”λ“œλ₯Ό 싀행해보면, `range()`κ°€ μ–Όλ§ˆλ‚˜ νš¨μœ¨μ μΈμ§€ 직접 확인할 수 μžˆμ„ κ±°μ˜ˆμš”!


 6. μ£Όμ˜ν•΄μ•Ό ν•  함정과 ν•΄κ²°μ±…


`range()`λ₯Ό μ‚¬μš©ν•  λ•Œ μ£Όμ˜ν•΄μ•Ό ν•  λͺ‡ κ°€μ§€ 사항이 μžˆμŠ΅λ‹ˆλ‹€:


1. 끝 κ°’ ν¬ν•¨λ˜μ§€ μ•ŠμŒ: `range(1, 5)`λŠ” 1, 2, 3, 4만 ν¬ν•¨ν•©λ‹ˆλ‹€.

2. μ •μˆ˜λ§Œ μ‚¬μš© κ°€λŠ₯: μ‹€μˆ˜λŠ” μ‚¬μš©ν•  수 μ—†μ–΄μš”.

3. μ—­μˆœ 생성 μ‹œ 주의: `range(5, 0, -1)`처럼 음수 단계λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.


```python

# μ‹€μˆ˜ μ‚¬μš© μ‹œ 였λ₯˜ 예방

def float_range(start, stop, step):

    while start < stop:

        yield round(start, 2)

        start += step


for x in float_range(0.5, 2.5, 0.5):

    print(x, end=' ')

# 좜λ ₯: 0.5 1.0 1.5 2.0

```


이런 λ°©μ‹μœΌλ‘œ `range()`의 ν•œκ³„λ₯Ό 창의적으둜 극볡할 수 μžˆλ‹΅λ‹ˆλ‹€! πŸ’‘


 7. μ‹€μ „ μ‘μš©: μž¬λ―ΈμžˆλŠ” ν”„λ‘œμ νŠΈ 아이디어


`range()`λ₯Ό ν™œμš©ν•œ ν₯미둜운 ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“€μ–΄λ³ΌκΉŒμš”?


 7.1 κ°„λ‹¨ν•œ 숫자 ν€΄μ¦ˆ κ²Œμž„


```python

import random


def number_quiz():

    number = random.randint(1, 100)

    for attempts in range(1, 8):  # μ΅œλŒ€ 7번의 기회

        guess = int(input(f"1λΆ€ν„° 100 μ‚¬μ΄μ˜ 숫자λ₯Ό λ§žμΆ°λ³΄μ„Έμš” (μ‹œλ„ {attempts}/7): "))

        if guess == number:

            print(f"μΆ•ν•˜ν•©λ‹ˆλ‹€! {attempts}번 λ§Œμ— λ§žμΆ”μ…¨μ–΄μš”! πŸŽ‰")

            return

        elif guess < number:

            print("더 큰 μˆ«μžμž…λ‹ˆλ‹€.")

        else:

            print("더 μž‘μ€ μˆ«μžμž…λ‹ˆλ‹€.")

    print(f"μ•„μ‰½λ„€μš”. 정닡은 {number}μ˜€μŠ΅λ‹ˆλ‹€. λ‹€μŒμ— λ‹€μ‹œ λ„μ „ν•΄λ³΄μ„Έμš”! 😊")


number_quiz()


# μž…μΆœλ ₯

1λΆ€ν„° 100 μ‚¬μ΄μ˜ 숫자λ₯Ό λ§žμΆ°λ³΄μ„Έμš” (μ‹œλ„ 1/7): 50

더 μž‘μ€ μˆ«μžμž…λ‹ˆλ‹€.

1λΆ€ν„° 100 μ‚¬μ΄μ˜ 숫자λ₯Ό λ§žμΆ°λ³΄μ„Έμš” (μ‹œλ„ 2/7): 30

더 μž‘μ€ μˆ«μžμž…λ‹ˆλ‹€.

1λΆ€ν„° 100 μ‚¬μ΄μ˜ 숫자λ₯Ό λ§žμΆ°λ³΄μ„Έμš” (μ‹œλ„ 3/7): 20

더 μž‘μ€ μˆ«μžμž…λ‹ˆλ‹€.

1λΆ€ν„° 100 μ‚¬μ΄μ˜ 숫자λ₯Ό λ§žμΆ°λ³΄μ„Έμš” (μ‹œλ„ 4/7): 10

더 μž‘μ€ μˆ«μžμž…λ‹ˆλ‹€.

1λΆ€ν„° 100 μ‚¬μ΄μ˜ 숫자λ₯Ό λ§žμΆ°λ³΄μ„Έμš” (μ‹œλ„ 5/7): 5

μΆ•ν•˜ν•©λ‹ˆλ‹€! 5번 λ§Œμ— λ§žμΆ”μ…¨μ–΄μš”! πŸŽ‰

```


이 κ²Œμž„μ„ 톡해 `range()`λ₯Ό μ‹€μ œ ν”„λ‘œμ νŠΈμ— μ–΄λ–»κ²Œ μ μš©ν•  수 μžˆλŠ”μ§€ κ²½ν—˜ν•΄λ³Ό 수 μžˆμ–΄μš”.


 8. 마치며: range()둜 μ—¬λŠ” λ¬΄ν•œν•œ κ°€λŠ₯μ„±


`range()` ν•¨μˆ˜λŠ” λ‹¨μˆœν•΄ λ³΄μ΄μ§€λ§Œ, 파이썬 ν”„λ‘œκ·Έλž˜λ°μ˜ 핡심 도ꡬ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. 기본적인 반볡문 μ œμ–΄λΆ€ν„° λ³΅μž‘ν•œ 데이터 μ²˜λ¦¬κΉŒμ§€, `range()`λŠ” μ—¬λŸ¬λΆ„μ˜ μ½”λ”© 여정에 λ“ λ“ ν•œ λ™λ°˜μžκ°€ 될 κ±°μ˜ˆμš”.


이제 μ—¬λŸ¬λΆ„μ€ `range()`의 λ§ˆλ²•μ„ 자유자재둜 뢀릴 수 μžˆλŠ” λ§ˆλ²•μ‚¬κ°€ λ˜μ—ˆμŠ΅λ‹ˆλ‹€! πŸ§™‍♂️✨ 이 지식을 ν™œμš©ν•΄ 더 효율적이고 창의적인 μ½”λ“œλ₯Ό μž‘μ„±ν•΄λ³΄μ„Έμš”. μ—¬λŸ¬λΆ„μ˜ 상상λ ₯이 κ³§ ν•œκ³„μž…λ‹ˆλ‹€!


파이썬과 ν•¨κ»˜ν•˜λŠ” μ—¬μ •μ—μ„œ `range()`κ°€ μ—¬λŸ¬λΆ„μ—κ²Œ λ¬΄ν•œν•œ κ°€λŠ₯성을 열어쀄 κ±°μ˜ˆμš”. κ³„μ†ν•΄μ„œ νƒν—˜ν•˜κ³ , ν•™μŠ΅ν•˜κ³ , μ„±μž₯ν•˜μ„Έμš”. λ‹€μŒ ν¬μŠ€νŒ…μ—μ„œ 또 λ‹€λ₯Έ ν₯λ―Έμ§„μ§„ν•œ 파이썬 주제둜 λ§Œλ‚˜μš”! πŸ‘‹πŸ˜Š


ν•΄ν”Ό μ½”λ”©!





#파이썬 #Python #rangeν•¨μˆ˜ #μ½”λ”©νŠœν† λ¦¬μ–Ό #ν”„λ‘œκ·Έλž˜λ°κΈ°μ΄ˆ #파이썬초보 #μ½”λ”©νŒ #PythonTips #νŒŒμ΄μ¬λ¬Έλ²• #코딩곡뢀 #ν”„λ‘œκ·Έλž˜λ°μž…λ¬Έ #νŒŒμ΄μ¬κ°•μ˜ #μ½”λ”©κ΅μœ‘ #ν…Œν¬λΈ”λ‘œκ·Έ #κ°œλ°œμžμŠ€ν„°λ”” #μ•Œκ³ λ¦¬μ¦˜ #μ½”λ”©μ±Œλ¦°μ§€ #νŒŒμ΄μ¬ν”„λ‘œμ νŠΈ #IT개발 #ν”„λ‘œκ·Έλž˜λ°μ–Έμ–΄


0 λŒ“κΈ€