본문 바로가기
개발일지/Python

2022.01.26 파이썬 정복 6.1 첫번째 루프문 (매우중요)

by 개발에정착하고싶다 2022. 1. 26.
320x100
'''
오늘 알게된 귀중한 깨달음

1. if 문

if문을 쓸때, 내가 표현하고자 하는것이 커버하는 범위가 40%든 몇%든 조건문에 있어서
100%를 채우려고 안해도 된다.
원리적으로 해당되면 출력, 해당안되면 그냥 넘어가는 식으로 되도 괜찮다.
'''

''' 실패코드 1. 정수 하나를 입력받아 5의 배수인지 조사하여 그 결과를 출력 하라. 실패
list_of_number = [1,2,3,4,5,6,7,78,8,9,90,10]

if list_of_number % 5 == 0:
    return list_of_number
'''

''' 실패코드 2. while 문 테스트 중 for 문으로 전환해서 해보려고 했는데 작동이 안된다. 실패
student = 0
for i in student <=5:
    print(student, "번 학생의 성적을 처리한다.")
'''

''' 실패코드3. 151부터 300까지의 숫자중, 홀수만 합쳐줘라. 실패.
num = 151
sum = 0

while num <=300:
    if not num%2 ==0:   #해설1. 해설은 이 부분은 필요없고
        sum += num
        num += 1        #해설2. 이부분이 + 1이 아닌 2로 해줬다.

print(sum)

물론 해설에 틀린말이 없고 저 방법도 사실 생각 가능한 방법이긴 하지만
나는 내가 풀려는 방식을 고수하고 싶다.
왜냐하면 무작위적인 숫자가 주어지는 상황에서는 +2가 아니라
내가 한 것처럼 "홀수가 아닌"이라는 필터링을 걸어줘야하기 때문이다.
'''


'''
2. for 문
가만 보니깐 for 문의 "보통 많이 쓰이는"짝궁은 range 인듯 하다
for i in range(): 이런식으로

'''

# 위의 151~300에 해당하는 것을 for문으로 풀어보자
'''
sum = 0
for i in range(151,301,2):
    sum += i

print(sum)
# 3번 정도 시도후에 방법을 찾았다. 조금 번거롭더라도
# sum = 0 이라고 해서 숫자가 담길 항아리 정도는 남겨놔야지 수식이 편해지는 것 같다.
'''

'''

3. while문과 for문의 쓰임새

둘다 사용이 가능하다. 반복문에 있어서는
하지만 큰 특징적으로는
for문  = 반복 범위가 명확한 경우
while문 = 반복이 가변적이고 붎규칙 할 경우에
어울린다.

'''
''' 실패 4. 9번은 -가 출력되고 10번째에 +가 출력되는걸 50번까지 이어붙여 출력 시도 실패
total =0
for a in range(50):
    total += str("-")

print(total)
'''

'''
for x in range(50):
    if (x %10 == 0):
        print('+',end = '') # end = ''가 무슨 역할일까
    else:      # 여러번 시도해본 결과 끝난 것을 일렬로 이어붙이는 기능 같다.
        print('-', end = '')
# +---------+---------+---------+---------+---------
# 결과값이 다르게 나오긴 하지만 어쨌든 비스무리하게라도 되는 해설
'''

''' 정상결과값의 해설
for x in range(5):
    print("-"*9, end="")
    print("+",end="")
    
이게 가장 정상적인 해설 같다.
더욱이 if문은 필요하지만 if문의 단점은 첫 문단에 들어갈때에 조건을 설정해야한다는 것이다.
본제의 경우 뭐 생각하려면 생각이 가능하겠지만, 심플하게는 10의 위치에 해당되는것만
조건화 하는게 간단하기 때문에 정상적인 해설로써 이해해도 좋을것 같다.
'''

'''
x = 1
while x < 51:
    if x%10: # 이거는 구조가 굉장히 독특하다 여태까지 보지 못했다. ==0도 아닌 내비두는 거라니
        print("-", end = "") # 일반적으로는 여기로 값이 오지만
    else:
        print("+",end="") # 10으로 나누어떨어지는 점에는 여기로 온다.
    x +=1
'''

'''
for i in range(1,51):
    if i%10: # for문에서 0은 마치 False와도 같은 기능이라 else로 간다.
        print("-",end="")
    else:
        print("+",end="") # 사실상 위의 while문도 0에 해당하는게 False와 같았다.
        # 위의 수식이 다른 이유는 1부터 시작했기 때문이다.
        # 근데 자꾸 결과값이 내가 원하는 ------+형태가 아닌 -+++++형태로 나온다.
        # 좀더 연구해봐야겠다.
        
        # 시작점이 0이라서 문제가 생긴다는것에 착안하여 시작을 1로 했고, 끝 숫자를 한개 업했다.
        # 따라서 내가 원하는 결과인 ------+ 구조가 나왔다.
'''

'''
# 5로 나뉜값이 +로 되는 for문 버전 성공
for i in range(1,50):
    if i % 5 ==0:
        print("+",end="")
    else:
        print("-",end="")
'''

'''
# 5로 나뉜값이 +가 되는 while문 버전 성공
i = 1
while i <51:
    if i % 5 == 0:
        print("+",end="")
    else:
        print("-",end="")
    i +=1
'''

'''
score = [92,86,68,120,56]
for s in score:
    if (s < 0 or s >100): # 첫번째 92는 False # 86도 False
        break # break는 True가 와야지 작동 되는건가?
    print(s) # 연속해서 False가 온다.
print("성적처리 끝")

# Thonny로 점검해본 결과 아주 놀라웠다.
# break는 True가 와야지 작동하더라.
# 그때까지는 print를 오가다가 4번째 숫자인 120이 오는 순간 break로 넘어갔다.
# 따라서 그 밑에 있는 print(s)는 작동되지 않고
# 성적 처리 끝. 으로 끝났다.
# 5번째 자리에 있던 56은 아예 작동도 하지 않았다. 4번째 자리의 120에서 break가 되서.
'''
'''
score = [92,86,68,-1,56]
for s in score:
    if s == -1:
        continue # 이것도 True로 꽃힐때까지는 넘어간다.그리고 True가 되면 일종의 "통과"효과가 있다.
    print(s) # False의 영역
print("성적 처리 끝")
'''

 

오늘은 실패가 참 많았다.

그럼에도 기분이 좋은 이유는, 왜 실패되었는지 모두다 꿰뚫었고 최소한에 그건 다 소화했기 때문이다.

공부라는것이 이렇게 이루어 지는게 너무 좋은것같다.

 

맞지도 않는 난이도를 붙들고 있으면서 어차피 이해도 안되는거 붙들고 있느니

이게 훨씬 나에겐 맞는것같다.

300x250