카테고리 없음

2024.03.15 4일차 -1

동동순이 2024. 3. 15. 16:12
 for 문

 

for 문은 시퀀스(리스트, 튜플, 문자열 등)의 각 항목에 대해 반복 작업을 수행하는 반복문입니다. for 문은 주로 "지정된 범위 내에서 반복"할 때 사용됩니다. 이것은 반복할 요소들이 미리 정해져 있는 경우에 유용합니다. 

 

for 요소 in 시퀀스:
    # 시퀀스 요소 갯수만큼 반복할 문장
list1 = [10,20,30,40]

for li in list1:
  print(li)
10
20
30
40

 

리스트 안에 요소들을 하나씩 돌리니 다음과 같은 결과가 나온다.

 range() 함수

 

range() 함수는 파이썬에서 순차적인 정수의 시퀀스를 생성하는 데 사용되는 내장 함수입니다. 주로 for 문과 함께 사용되며, 일정한 범위 내에서 반복 작업을 수행할 때 유용하게 활용됩니다. range() 함수의 결과로 생성되는 순차적인 정수 시퀀스는 실제로 메모리에 저장되지 않고 필요할 때마다 생성되므로, 큰 범위의 반복문에도 효율적으로 사용할 수 있습니다.

 

range(시작값, 종료값, 단계)

 

num = range(1,11,1)

print(num)
range(1, 11)

 

조건을 주지 않았기 때문에 결과가 다음과 같이 나온다.

for i in num:
  print(i, end=' ') # end='' 는 가로로 하나씩 띄어서 나타내줘 라는 뜻
1 2 3 4 5 6 7 8 9 10​
for i in range(1,11): #단계는 생략할 수 있고 기본값은 1
  print(i, end=' ')
1 2 3 4 5 6 7 8 9 10

 

for i in range(11): #시작은 생략할 수 있고 기본값은 0
  print(i, end=' ')
0 1 2 3 4 5 6 7 8 9 10​
# for, range()를 이용하여 1부터100까지 홀수의 합 구하기
sum=0

for i in range(1,101,2):
  sum+=i #sum+i=sum
print(f'1부터 100까지의 홀수의 합: {sum}')
1부터 100까지의 합: 2500

 

enumerate() 함수

 

enumerate() 함수는 파이썬에서 반복문을 사용할 때 인덱스와 값을 함께 가져오기 위해 사용되는 내장 함수입니다. 주로 for 문과 함께 사용되며, 반복문 내에서 순서를 추적하면서 값과 해당 값의 인덱스를 함께 사용할 때 유용합니다. enumerate() 함수는 (인덱스, 값)의 튜플을 반환하는 이터레이터(iterator)를 생성합니다.

 

enumerate(iterable, 시작값)
li1 = [10,20,30,40,50]

for e in enumerate(li1,0):#0은 생략가능
  print(e)
(0, 10)
(1, 20)
(2, 30)
(3, 40)
(4, 50)​

 

li1 = [10,20,30,40,50]

#(1,10)
#i,v =(0,10) 튜플에서 인덱스값,밸류값을 따로 지정할수있었다

for i,v in enumerate(li1):
  print(f'인덱스:{i}, 값:{v}')
인덱스:0, 값:10
인덱스:1, 값:20
인덱스:2, 값:30
인덱스:3, 값:40
인덱스:4, 값:50

 

zip() 함수

 

zip() 함수는 파이썬에서 여러 개의 반복 가능한(iterable) 객체를 병렬적으로 묶어주는 내장 함수입니다.  객체로부터 순서대로 하나의 요소씩 가져와 튜플로 묶어주는 이터레이터를 반환합니다. 주로 여러 개의 리스트나 튜플을 병렬적으로 처리하고자   사용됩니다.

li1 = [10,20,30]
li2 =['apple','banana','orange']


for i in range(0,3):
  print(li1[i],li2[i])
10 apple
20 banana
30 orange
li1 = [10,20,30] #여기서 요소의 갯수가 하나더있으면 인덱스 에러뜸
li2 =['apple','banana','orange']

for i in range(len(li1)):
  print(li1[i],li2[i])

 

len를 써 li1을 가르켜도 위에 결과 똑같이 나온다.

li1 = [10,20,30,40]
li2 =['apple','banana','orange'] #zip으로 돌리면 모자란쪽을 기준으로 돌려서 에러가 나지 않는다

for l1,l2 in zip(li1,li2):
  print(l1,l2)
10 apple
20 banana
30 orange

 

zip함수를 쓰면 원래는 요소가 하나 더있어서 에러가 나는데 모자란쪽을 기준으로 코드가 돌아가기 때문에 에러가 나지 않는다.

li1 = [10,20,30]
li2 =['apple','banana','orange']

for li in zip(li1,li2):
  print(li)
(10, 'apple')
(20, 'banana')
(30, 'orange')

위에 결과는 똑같이 zip 함수를 써도 변수를 하나로 묶어서 분류해서 튜플로 묶여서 나온다.

for n,A,a in zip('12345','ABCDE','abcde'):
  print(n,A,a)
1 A a
2 B b
3 C c
4 D d
5 E e
중첩 반복문-중요

 

파이썬에서 중첩된 반복문은 하나의 반복문 안에 다른 반복문이 포함된 구조를 의미합니다. 중첩 반복문은 외부 반복문의  반복마다 내부 반복문이 모두 실행되는 방식으로 작동합니다. 이를 통해 다차원의 데이터를 처리하거나 복잡한 작업을 수행할  있습니다.

 

for 외부_변수 in 외부_시퀀스:
    for 내부_변수 in 내부_시퀀스:
        # 내부 반복문 코드
    # 외부 반복문 코드
for i in range(1,4):
  print(f'🥙   i:{i}')
  for j in range(1,4):
    print(f'🥞       j:{j}')
🥙   i:1
🥞       j:1
🥞       j:2
🥞       j:3
🥙   i:2
🥞       j:1
🥞       j:2
🥞       j:3
🥙   i:3
🥞       j:1
🥞       j:2
🥞       j:3

 

문제1

###문제1
'🥺'를 이용하여 아래와 같은 모형을 만들어보자


🥺🥺🥺🥺🥺  
🥺🥺🥺🥺🥺  
🥺🥺🥺🥺🥺  
🥺🥺🥺🥺🥺  
🥺🥺🥺🥺🥺  
for i in range(5):
  for j in range(5):
   print(f'🥺',end=' ')
  print()
###문제2
'🥺'를 이용하여 아래와 같은 모형을 만들어보자


🥺🥺🥺🥺🥺  
🥺🥺🥺🥺  
🥺🥺🥺  
🥺🥺  
🥺  
for i in range(5):
  for j in range(5-i):
   print(f'🥺',end='')
  print()
###문제3
'🥺'를 이용하여 아래와 같은 모형을 만들어보자


🥺  
🥺🥺  
🥺🥺🥺  
🥺🥺🥺🥺  
🥺🥺🥺🥺🥺  
for i in range(1,6):
  for j in range(i):
   print(f'🥺',end='')
  print()

 

###문제4
*2단 부터 9단 까지 구구단을 출력하는 프로그램을 만들어보자  

*단 , for문과 whlie을 사용하여 각각 별도로 작성
# for 문
for i in range(2,10):
  print(f'{i}단')
  for j in range(1,10):
    print(f'{i} * {j}={i*j}')
print()
# while 문
i=2
j=1

while i<=9:
  print(f'{i} 단')
  while j<=9 :
    print(f'{i}*{j}={i*j}')
    j+=1
  i+=1
  j=1  # 초기화 꼭 해주기
  print()

마지막의 j=1으로 j값을 초기화 해주는것이 중요하다.