별의별 이야기

Day5 복습: for문 본문

3./Python

Day5 복습: for문

Hailey Han 2024. 12. 23. 00:34
728x90

for 연습하기

 1. 특정 구간에서 홀수만 출력하기 (for/while)
i=0
count=0
for i in range(1,10):
    if i%2==1:
        i=i+1
print(count)

GPT가 말해주는 문제점 

문제점 1: i = i + 1이 루프의 흐름에 영향을 미치지 않음
for i in range(1, 10)에서 i는 range 함수에 의해 매 반복마다 새 값이 할당됩니다.
i = i + 1은 그 순간의 i 값을 수정할 뿐, 다음 반복에서 range가 덮어쓰기 때문에 루프에 전혀 영향을 미치지 않습니다.
문제점 2: count가 갱신되지 않음: count는 코드에서 초기값 0으로 설정된 후, 이후에 아무 변경도 이루어지지 않습니다.따라서, print(count)는 항상 0만 출력됩니다.
문제점 3: "홀수 출력"이 코드에 구현되지 않음: 코드에서 홀수를 출력하는 print()가 전혀 없습니다.

#count 미포함
for i in range(1,11): #1부터10까지 반복 
    if i%2==1:          #홀수인지 확인
        print(i)            #홀수 출력
        
#count 포함
count=0
for i in range(1,11): #1부터10까지 반복 
    if i%2==1:          #홀수인지 확인
        print(i)            #홀수 출력
        count +=1
print("홀수개수:", count)
#while ver
i=0
while i%2==0:
    print(i)
#정답
i=1
n=int(input("양의정수입력:"))
while i <n:
    print(i)
    i=i+2
2. 문자열을 한 글자씩 출력하기(for/while)
#for ver
name=str(input("문자를 입력하세요:" ))
for i in range(3):
    print(i)
#정답
for i in "mango":
    print(i)
# while ver
#틀린 답 
i=1
name = int(input("문자를 입력하세요:" ))
while i < name:
    print(i)
    i=i+1
#정답
i=0
fr="mango"
while i <len(fr):
    letter= fr[i] #리스트나 인덱스에는 괄호가 아닌 대괄호로 표시해야 함. 
    print(letter)
    i=i+1​

3. 2에서 10까지 짝수 출력하기(for/while)
#3. 2에서 10까지 짝수 출력하기(for/while)
# for ver
for i in range(2,11):
    if i%2==0:
        print(i)
        i=i+1

# while ver
i=2
while i%2==0:
    print(i)
i=i+1
# while ver 정답
i =1 
while i <=5:
    print((i)*2)
    i=i+1

4. 1-50사이의 7배수 찾고 그 수의 제곱값 출력(for loop 사용)
#4. 1-50사이의 7배수 찾고 그 수의 제곱값 출력(for loop 사용) 
#if 사용 O
for i in range(1,51):
    if i%7==0:
        print(i)
        print(i*7)
#if 사용 X
for i in range(7,50,7):
    print(i)
    print(i*7)

str="helloWorld"에서 짝수번째 문자들 합하여 출력하기 (for사용)
str="helloWorld"
word="" # 빈 문자열 초기화
count=1 # 문자 위치를 세기 위한 카운터 변수

for i in str:  # 문자열 str의 각 문자를 순회
    if count%2==0: # 짝수 번째 문자인지 확인
        word=word+i  # 현재 문자 i를 word에 추가
    count= count+1 # 위치 카운터 증가
print(word)  # word에 저장된 짝수 번째 문자 출력​

 입력받은 문자열에서 모음이 몇 개인지 센 후 출력(모음:AEIOUaeiou)
#6. 입력받은 문자열에서 모음이 몇 개인지 센 후 출력(모음:AEIOUaeiou)
#내가푼거
name=str(input("문자를 입력하세요: "))
count =1
word='' 
for i in str():
    if count == 1: 
        word = 'AEIOUaeiou'
print(word)
#answer
str=input("문자를 입력하세요: ")
count=0
for i in str:
    if i in 'AEIOUaeiou':
        count +=1 
print(count)

range함수, in함수

1. 문자열 처리 (HORSTMANN)
name="HORSTMANN"
count =0

for i in name:
    print(i)
    count=count+1
print("글자수:", count)

 
2. 리스트 처리
리스트처리 (apple, banana, lemon, tomato)
fruit = ['apple', 'banana', 'lemon', 'tomato']
count=0
	for i in fruit:
		print(i)
		count=count+1
	print("아이템수=", count)

2-1. 리스트 처리(2)
 fruit = ['apple', 'banana', 'lemon', 'tomato']
 for i in fruit: #리스트의 각 단어를 하나씩 가져옴
 	count=0
 	for j in i: #전체 리스트 반복이 아닌, 각 리스트를 순회
 		print(j)
 		count=count+1
 print("글자수=", count)​

3. 연습문제1. #1, 문자 “*”를 첫 줄에는 한 개, 두번째 줄에는 두개, 반복하여 열 번째 줄에는 열 개 출력
for i in range (1,11):
    i = i*"*" 
    print(i)

#거꾸로
for i in range (10,0,-1):
    i = i*"*"
    print(i)​


3-1.연습문제1. 문자 “*”를 첫 줄에 열 개, 둘째 줄에 아홉 개..이어서 열 번째 줄에 한개 출력
#내가 푼거
for i in range (1,11):
    print(" "*(10-i), "*"*2*i, " "*(10-i))

#교수님
i=0
for i in range(1,11):
	print(" "*(10-i), '*'*(i*2), " "*(10-i))​
주의할 점: 이 때 " "  사이에 공백 꼭 넣기!  
 
4. for문을 사용하여, 문자 “ “, “*” 로 다음과 같이 좌우 대칭의 삼각형 모양을 출력해본다
for i in range (1,11):
    #i = (" "*(10-i), "*"*i, " "*(10-i))
    print(" "*(10-i), "*"*2*i, " "*(10-i))​
 
 

다중 for 문

a=0  # 초기화: 변수 `a`를 0으로 설정
for i in range(1,10): # 첫 번째 for 루프
    a=a+1 # `a` 값을 1씩 증 가시킴
for j in range(1,10): # 두 번째 for 루프
    a=a+1  # 다시 `a` 값을 1씩 증가시킴
print(a) # 최종적으로 `a`의 값을 출력

= 18

a=0
for i in range(10):
    a=a+1 # a를 1 증가시킴
    for j in range(10):
        a=a+1 # a를 1 증가시킴

print(a)

=>결과값은 110이 출력됨. 그 이유는 외부횟수(100)*내부횟수*+(외부횟수+1*10=10번)

a=0
for i in range(2,10):
    a=a+i
    for j in range(10,1,-2):
        a=a+j
print(a)

=> 첫번째 루프에서 a= (2+0),(3+1),(4+2),(5+3),(6+4),(7+5),(8+6),(9+7) 로 한번씩 증가할 때,
두번째 루프에서(2+10),(4+8),(6+6),(8+4),(10+2) 한바퀴

break 이해와 활용

count=0
for i in range(5):
    print("--------------------")
    for j in range(3):
        if (i+j)%5 != 0:
             count= count+1
             print("i+j=", i+j, "and count =", count)
        else: 
            break
print("i+j=", i+j, "and count =", count)
for i in range(1,5):
    for j in range(i+1, 10):
        if j%i==0:
            print(j, "는", i,"의 배수입니다")
            break
mon =int(input("현재 갖고있는 금액: "))
pri =int(input("사려는 물건 가격: "))
num =int(input("원하는 개수: "))

for i in range(1,num+1):
   char=mon-pri*i
   if char >=0: 
        print(f'구매가능합니다, {char}원 잔액입니다.')
   else:
        print(f'구매불가능합니다. {char}원 부족합니다')
        break

=> 이거는 잔액 만들어내는 연습문제

#prime number 연습문제1
num=int(input("숫자를 입력하세요: "))

if num <2 :
    print("소수가아닙니다")
else:
    for i in range(2,num):
        if num%i==0: #소수판별식
            print("소수가 아닙니다")
            break
    else: 
        print("소수입니다")

=> 이건 소수판별문제

'3. > Python' 카테고리의 다른 글

string methods  (0) 2024.12.24
for esle, sort, 다중 for, 문자열  (0) 2024.12.23
for loop의 활용: range 함수, 다중 for문, break  (0) 2024.12.20
반복문: while, for  (1) 2024.12.19
출력문(print), 입력문(input), 조건문(if)  (3) 2024.12.18