데이터분석

[23.06.02] Python 다중 반복문 (for), 논리 연산자, 회고록 - 03(2)

gmwoo 2023. 6. 2. 17:33

1. 다중 반복문 (for)

 - 반복문 안에 반복문이 있음

for i in range():      
	for j in range():	# i=2, j=1,2,3,4,...
    		code		# i=3, j=1,2,3,4,...
                    	        # i=4, j=1,2,3,4,...
                    	        # i=5, j=1,2,3,4,...

 

문제 1) 다이아몬드 그리기

# num = 7
# for i in range(1,num+1):
#     print(' ' * (num-i+1), '*'*(2*i-1), end='') 
#     print()
# for j in range(num+1, 0,-1):
#     print(' ' * (num-j+1), '*'*(2*j-1), end='')
#     print()


line = 7
for i in range(0,line):
    # 공백 출력
    for j in range(0,line-i):
        print(' ', end='')
    # 별그리기
    for j in range(0,2*i-1):
        print('*', end='')
    print()
    
# 역으로 그리기
for i in range(0,line):
    # 공백 출력
    for j in range(0,i):
        print(' ', end='')
    # 별그리기
    for j in range(0,(line-i)*2-1):
        print('*', end='')
    print()

 

문제 2) 이중 for문으로 1~100 출력 (한 줄에 10개 씩)

# 1부터 100까지 한 줄에 10개 씩, 이중 for문 사용
        
num = 10
cnt = 0
for i in range(1, num+1):
    for j in range(1,num+1):
        cnt += 1
        print(cnt, end=' ')
    print()

 

 - ord("문자"):  해당 문자에 대한 숫자로 변환

- chr: ord의 반대 역할로 숫자를 문자로 변환

# ord("문자") -> 해당 문자에 대한 숫자로 변환
print(ord("A"))  # 65
print(ord("B"))  # 66
print(ord("C"))  # 67
print(ord("a"))  # 97
print(ord("b"))  # 98
print(ord("0"))  # 48
print(ord("1"))  # 49
print(ord("2"))  # 50

# chr: ord의 반대 역할, 숫자를 문자로 변환
print(chr(65))
print(chr(66))
print(chr(67))

 

문제 3) 알파벳을 for문 사용해서 대문자로 출력하고 맨 처음 알파벳 맨 뒤로 옮기기

# 문제. 알파벳을 for문 사용해서 대문자로 출력 26
for i in range(0, 26):
    k=1
    for j in range(0, 26):
        print(chr(k+65), end='')
        k+=1
        if k>25:
            k=0
    print()

 

문제 4) 동전 거스르기

# 동전 거스르기
# 거스름돈: 78760원    
    
num = int(input("처음 돈: "))
money = [50000, 10000, 5000, 1000, 500, 100, 50, 10]
for i in range(len(money)):
    count = num // money[i]
    num %= money[i]
    print(f"{money[i]} 원: {count} 장(개)")

 

2. 논리 연산자 (and, or, not)

 - 결과는 True, False

 -조건식1 and 조건식2 : 두 개의 조건식이 둘 다 True 아니면 False

 -조건식1 or 조건식2 : 두 개의 조건식 중 하나라도 True이면 True 아니면 False

 - not 조건식 : True -> False로 False -> True

 - 우선순위: not -> and -> or 순으로 적용

 

문제 1) 연도, 월, 일 을 입력 받아 그 해의 몇 번째 날인지 구하기

# 연도, 월, 일 입력받아서 그 날이 그 해의 몇 번째 날인지 맞추기
# 윤년: 4의 배수 이면서, 100의 배수가 되면 안되고, 400의 배수는 윤년
# 윤년의 경우 2월이 29일이 됨. 윤년 아니면 28일

year = int(input("연도: "))
month = int(input("월: "))
day = int(input("일: "))

each_month_day = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
cnt = 0

if year%4 == 0 and year%100 != 0 or year%400 ==0: # 윤년
    each_month_day[1] = 29
for i in range(month-1):
    cnt += each_month_day[i]
print(cnt + day)

 

3. 2일차 복습 (dict, list)

 문제 1) dict, list 통해서 학생 총점, 평균 구하기 (함수 파트에서 많이 쓸 예정)

"""
홍길동, 90, 80, 70
장길산, 100 100, 90
임꺽정, 80, 70, 60

list안에 dict으로 넣고 총점, 평균 구해서 출력    
"""

lst = [
    {"name": "홍길동", "eng": 90, "math": 80, "kor": 70},
    {"name": "장길산", "eng": 100, "math": 100, "kor": 90},
    {"name": "임꺽정", "eng": 80, "math": 70, "kor": 60}
]
print(lst)

for score in lst:
    score['total'] = score['eng'] + score['math'] + score['kor']
    score['avg'] = score['total'] / 3
    
for x in lst:
    print(f"{x['name']} 의 총점은 {x['total']} 이고 평균은 {x['avg']} 이다")

 

4. 회고록 (23.05.31 ~ 23.06.02)

첫 주차, 파이썬 기초를 수강하면서 전공 때 배웠던 기억이 새록새록했다. 기본을 다시 다진다는 마인드로 열심히 수강하였다. 기초를 제대로 다지고 이후에 빨리 프로젝트에 참여하고 싶다.

접하지 못했던 일을 하셨던 분들이랑 대화하면서 많은 것을 느낄 수 있었다. 8년간 정보통신공학과 사람들과 지내다가 다양한 사람들과 함께 할 수 있어서 너무 좋았다. 

강의적으로 좋았던 점은 강사님께서 예제 문제를 많이 풀게끔 하는 것이다. 예전에 풀었던 문제도 분명 있었지만 강사님의 더 짧은 코드로 많이 배울 수 있었다.

왕복 3시간이지만 집에서 복습을 하려고 마음을 먹었지만 쉽지 않았다. 다음주부터는 계획을 세워서 짧게라도 복습을 할 것이다.

2주차는 더 퐈이링~

 

반응형