📖TIL(Today I Learned)

TIL 27일 차) 🔥 초보자를 위한 파이썬 151~190문제

highcat 2024. 12. 17. 19:55

이번주 안으로 300문제 다 끝낸다







파이썬 반복문 151~160  



# 151
# 리스트에는 네 개의 정수가 저장돼 있다.
# for문을 사용해서 리스트의 음수를 출력하라.

리스트 = [3, -20, -3, 44]
# -20
# -3

for i in 리스트:
    if i < 0 :
        print(i)


# 152
# for문을 사용해서 3의 배수만을 출력하라.

리스트 = [3, 100, 23, 44]
# 3

for i in 리스트:
    if i % 3 ==0: # 3으로 나누고 나머지 값이 0이면
        print(i)


# 153
# 리스트에서 20 보다 작은 3의 배수를 출력하라.

리스트 = [13, 21, 12, 14, 30, 18]
# 12
# 18

for i in 리스트:
    if i < 20 and i% 3 ==0: # and로 둘 다 충족하는 조건
        print(i)
 


# 154
# 리스트에서 세 글자 이상의 문자를 화면에 출력하라.

리스트 = ["I", "study", "python", "language", "!"]
# study
# python
# language

for i in 리스트:
    if len(i) >= 3:     #len 문자열의 길이를 정수로 변환
        print(i)
 


# 155
# 리스트에서 대문자만 화면에 출력하라.

리스트 = ["A", "b", "c", "D"]
# A
# D
# (참고) isupper() 메서드는 대문자 여부를 판별합니다.
# >> 변수 = "A"
# >> 변수.isupper()
# True
# >> 변수 = "a"
# >> 변수.isupper()
# False

for i in 리스트:
    if i.isupper(): # 대문자면 True 값인 i로 출력
        print(i)


# 156
# 리스트에서 소문자만 화면에 출력하라.

리스트 = ["A", "b", "c", "D"]
# b
# c

for i in 리스트:
    if i.islower(): # 소문자면 True 값인 i로 출력
        print(i)
       
    # if i.isupper():
    #    print(i.lower)# 출력 값을 lower로도 가능


# 157
# 이름의 첫 글자를 대문자로 변경해서 출력하라.

리스트 = ['dog', 'cat', 'parrot']
# Dog
# Cat
# Parrot
# (참고) upper() 메서드는 문자열을 대문자로 변경합니다.
# >> 변수 = "a"
# >> 변수.upper()
# A
# >> 변수 = "abc"
# >> 변수.upper()
# ABC

for i in 리스트:
    print(i.capitalize())
# 문자열이라 capitalize로 앞글자를 대문자로 변환이 좋다.

# 158
# 파일 이름이 저장된 리스트에서 확장자를 제거하고 파일 이름만 화면에 출력하라.
# (힌트: split() 메서드)

리스트 = ['hello.py', 'ex01.py', 'intro.hwp']
# hello
# ex01
# intro

for i in 리스트:
    name, ext=(i.split('.'))    #.을 기준으로 나눠 언패킹
    print(name)                 # name = 파일이름
                                # ext = 확장자


# 159
# 파일 이름이 저장된 리스트에서 확장자가 .h인 파일 이름을 출력하라.

리스트 = ['intra.h', 'intra.c', 'define.h', 'run.py']
# intra.h
# define.h

for i in 리스트:  
    if i.endswith(".h"): # endswith()는 끝 문자로 검색하는 함수
        print(i)         # startswith()는 시작하는 문자를 검색

    # 앞, 뒤 = i.split(".")
    # if 뒤 == 'h' :
    #     print(i)           나는 이렇게 풀었다.

# 160
# 파일 이름이 저장된 리스트에서 확장자가 .h나 .c인 파일을 화면에 출력하라.

리스트 = ['intra.h', 'intra.c', 'define.h', 'run.py']
# intra.h
# intra.c
# define.h

for i in 리스트:  
    if i.endswith(".h") or i.endswith(".c"): # endswith()는 끝 문자로 검색하는 함수
        print(i)

    # split = i.split(".")     # 메서드로 분할하고 [1]번째를 찾아도 된다.
    # if (split[1] == "h") or (split[1] == "c"):
    #     print(i)                  




파이썬 반복문 161~170  



# 161
# for문과 range 구문을 사용해서 0~99까지 한 라인에 하나씩 순차적으로 출력하는 프로그램을 작성하라.

for i in range(0,100):
    print(i)


# 162
# 월드컵은 4년에 한 번 개최된다. range()를 사용하여 2002~2050년까지 중
# 월드컵이 개최되는 연도를 출력하라.

# 2002
# 2006
# 2010
# ...
# 2042
# 2046
# 2050

# 참고) range의 세번 째 파라미터는 증감폭을 결정합니다.
# >> print(list(range(0, 10, 2)))
# [0, 2, 4, 6, 8]

for i in range(2002,2051,4):
    print(i)


# 163
# 1부터 30까지의 숫자 중 3의 배수를 출력하라.

# 3
# 6
# 9
# 12
# 15
# 18
# 21
# 24
# 27
# 30

for i in range(3,31,3):
    print(i)


# 164
# 99부터 0까지 1씩 감소하는 숫자들을, 한 라인에 하나씩 출력하라.

for i in range(99,-1,-1):
    print(i)

# 165
# for문을 사용해서 아래와 같이 출력하라.

# 0.0
# 0.1
# 0.2
# 0.3
# 0.4
# 0.5
# ...
# 0.9

for i in range(1,10):
    print('0.',i,sep='') # sep로 공백을 지워준다

#   print(str(float(i*0.1))[0:3]) ◀ 내가 푼 정답


# 166
# 구구단 3단을 출력하라.

# 3x1 = 3
# 3x2 = 6
# 3x3 = 9
# 3x4 = 12
# 3x5 = 15
# 3x6 = 18
# 3x7 = 21
# 3x8 = 24
# 3x9 = 27

for i in range(1,10):
    print('3x',i,' = ',3*i,sep='')
#   print(f'3x{i} = {i*3}',sep='') ◀ 내가 푼 정답
#         └> 포멧팅 해서 값을 불러옴


# 167
# 구구단 3단을 출력하라. 단 홀수 번째만 출력한다.

# 3x1 = 3
# 3x3 = 9
# 3x5 = 15
# 3x7 = 21
# 3x9 = 27

for i in range(1,10,2):    # 2를 넣어 간격을 생성
    print(f'3x{i} = {i*3}',sep='')

# 168
# 1~10까지의 숫자에 대해 모두 더한 값을 출력하는 프로그램을 for 문을 사용하여 작성하라.

# 합 : 55
                # answer 초기값 0을 출력 하고 싶으면 반복문 전에 print 해야함.
answer = 0
#  ┌ a = answer ┐
#  └ answer = 0 ┘   ◀   이렇게 따로 변수를 하나 지정하는 수 밖에 없다!
for i in range(1,11):      
    answer =  answer+ i  # answer += i 도 가능
print(answer)            # 출력된 answer 값은 반복문을 거친 answer 값만 출력 된다.      


# 169
# 1~10까지의 숫자 중 모든 홀수의 합을 출력하는 프로그램을 for 문을 사용하여 작성하라.

# 합 : 25

result =0
for i in range(1,10,2):  # 2를 넣어 간격을 생성
    result += i
print("합 :",result)

# 170
# 1~10까지의 숫자를 모두 곱한 값을 출력하는 프로그램을 for 문을 사용하여 작성하라.


answer = 1
for i in range(1,11):
    answer =  answer* i
print(answer)

파이썬 반복문 171~180  



# 171
# 아래와 같이 리스트의 데이터를 출력하라. 단, for문과 range문을 사용하라.

price_list = [32100, 32150, 32000, 32500]
# 32100
# 32150
# 32000
# 32500

#        0,1,2,3번째라는 생성된 정수를 인덱스 후
for i in range(0,4): # i 라는 변수에 순차적으로 반복
    print(price_list[i])
#   price_list는 [i]를 인덱싱 함.
   

# for i in price_list:
#     price_list[:]
#     print(i)      # 조건이 없다면 이렇게 써도 된다.


# 172
# 아래와 같이 리스트의 데이터를 출력하라. 단, for문과 range문을 사용하라.

price_list = [32100, 32150, 32000, 32500]
# 0 32100
# 1 32150
# 2 32000
# 3 32500

for i in range(0,4):  
    print(i,price_list[i])  
#   range 인덱스에서 만든 정수 0~3번을 따로 출력


# 173
# 아래와 같이 리스트의 데이터를 출력하라. 단, for문과 range문을 사용하라.

price_list = [32100, 32150, 32000, 32500]
# 3 32100
# 2 32150
# 1 32000
# 0 32500

for i in range(0,4):  
    print(3-i,price_list[i])  # 3을 뺀다.

# 174
# 아래와 같이 리스트의 데이터를 출력하라. 단, for문과 range문을 사용하라.

price_list = [32100, 32150, 32000, 32500]
# 100 32150
# 110 32000
# 120 32500

for i in range(1,4):  
    print(90+(i*10),price_list[i])  # 90+ 10씩



# 175
# my_list를 아래와 같이 출력하라.

my_list = ["가", "나", "다", "라"]
# 가 나
# 나 다
# 다 라

for i in range(0,3):    # 4로 하면 4줄 출력됨..
    print(my_list[i],my_list[i+1])
#                           0+1 , 1+2, ...

# 176
# 리스트를 아래와 같이 출력하라.

my_list = ["가", "나", "다", "라", "마"]
# 가 나 다
# 나 다 라
# 다 라 마

for i in range(0,3):    
    print(my_list[i],my_list[i+1],my_list[i+2])


# 177
# 반복문과 range 함수를 사용해서 my_list를 아래와 같이 출력하라.

my_list = ["가", "나", "다", "라"]
# 라 다
# 다 나
# 나 가

# for i in range(0,3):    # 4로 하면 4줄 출력됨..
#     print(my_list[3-i],my_list[2-i]) # 내가 쓴 정답

# 어렵게 생각하지 말고 그냥 range(3,0,-1)로 바꾸자
for i in range(3,0,-1):
    print(my_list[i],my_list[i-1])

   


# 178
# 리스트에는 네 개의 정수가 저장되어 있다. 각각의 데이터에 대해서
# 자신과 우측값과의 차분값을 화면에 출력하라.

my_list = [100, 200, 400, 800]
# 100
# 200
# 400

for i in range(0,3):
    print(my_list[i+1]-my_list[i])
       


# 179
# 리스트에는 6일 간의 종가 데이터가 저장되어 있다.
# 종가 데이터의 3일 이동 평균을 계산하고 이를 화면에 출력하라.

my_list = [100, 200, 400, 800, 1000, 1300]
# 233.33333333333334
# 466.6666666666667
# 733.3333333333334
# 1033.3333333333333

for i in range(0,4):
    sum1 = my_list[i]+my_list[i+1]+my_list[i+2]
    print(sum1/3)
 

# 180
# 리스트에 5일간의 저가, 고가 정보가 저장돼 있다. 고가와 저가의 차를 변동폭이라고 정의할 때,
# low, high 두 개의 리스트를 사용해서 5일간의 변동폭을 volatility 리스트에 저장하라.

low_prices  = [100, 200, 400, 800, 1000]
high_prices = [150, 300, 430, 880, 1000]

volatility = []     # 새로 만들어야 할 volatility 리스트
for i in range(5):  # 굳이 (0,5) 할 필요 없다
    변동폭 = high_prices[i] - low_prices[i] # 변동폭은 빼서 구함
    volatility.append(변동폭)   # append로 리스트 안에 넣어준다.

print(volatility)
 
 

파이썬 반복문 181~190  



# 181
# 아래 표에서 하나의 행을 하나의 리스트로, 총 3개의 리스트를 갖는 이차원 리스트 apart를 정의하라.

# 101호  102호
# 201호  202호
# 301호  302호

apart = [['101호','102호'],
         ['201호','202호'],
         ['301호','302호']]
print(apart)

# 182
# 아래 표에서 하나의 열을 하나의 리스트로, 총 2개의 리스트를 갖는 이차원 리스트 stock을 정의하라.

# 시가  종가
# 100   80
# 200   210
# 300   330

stock = [ ["시가", 100, 200, 300], ["종가", 80, 210, 330] ]


# 183
# 아래 표를 stock 이름의 딕셔너리로 표현하라.
# 시가를 key로 저장하고, 나머지 같은 열의 데이터를 리스트로 저장해서 value로 저장한다.
# 종가 역시 key로 저장하고 나머지 같은 열의 데이터를 리스트로 저장해서 value로 저장한다.

# 시가  종가
# 100   80
# 200   210
# 300   330

#       딕셔너리로 키 값 벨류값(리스트로 여러 값 가능) 생성
stock = {'시가':[100,200,300],'종가':[80,210,330]}
print(stock)


# 184
# 아래 표를 stock 이라는 이름의 딕셔너리로 표현하라.
# 날짜를 key로 저장하고, 나머지 같은 행의 데이터를 리스트로 저장해서 value로 저장한다.
# 첫 열이 날짜이다.

# 10/10  80  110  70  90
# 10/11  210 230 190 200

stock = {"10/10":[80,  110,  70,  90],
         "10/11":[210, 230, 190, 200]}
print(stock["10/10"][0],stock["10/11"][:2])
# 80 [210, 230] 이런 식으로 원하는 벨류값 출력 가능

# 185
# 리스트에 저장된 데이터를 아래와 같이 출력하라.

apart = [ [101, 102], [201, 202], [301, 302] ]
# 101 호
# 102 호
# 201 호
# 202 호
# 301 호
# 302 호
                        # 이중 루프
for in apart:        # 아파트에 층을 올라가
    for in :       # 집을 순회하고 그 다음 층으로
        print(,'호')       # 담겨져 나오는 값은 집 호수이다.


# 186
# 리스트에 저장된 데이터를 아래와 같이 출력하라.

apart = [ [101, 102], [201, 202], [301, 302] ]
# 301 호
# 302 호
# 201 호
# 202 호
# 101 호
# 102 호

for in apart[::-1]:     # 아파트 전체 값을 뒤집음
    for in :      
        print(,'호')

# 187
# 리스트에 저장된 데이터를 아래와 같이 출력하라.

apart = [ [101, 102], [201, 202], [301, 302] ]
# 302 호
# 301 호
# 202 호
# 201 호
# 102 호
# 101 호

for in apart[::-1]:        
    for in [::-1]:     #층을 뒤집으면 층만 뒤집어짐  
        print(,'호')

# 188
# 리스트에 저장된 데이터를 아래와 같이 출력하라.

apart = [ [101, 102], [201, 202], [301, 302] ]
# 101 호
# -----
# 102 호
# -----
# 201 호
# -----
# 202 호
# -----
# 301 호
# -----
# 302 호
# -----

for in apart:        
    for in :      
        print(,'호') # 내가 푼 정답 : print(집,'호\n-----')
        print('-----')
 

# 189
# 리스트에 저장된 데이터를 아래와 같이 출력하라.

apart = [ [101, 102], [201, 202], [301, 302] ]
# 101 호
# 102 호
# -----
# 201 호
# 202 호
# -----
# 301 호
# 302 호
# -----

for in apart:        
    for in :      
        print(,'호')
      # print(집+1,'호\n-----') ◀ 내가 푼 정답
     
  # ↑ 안쪽 for 문의 끝나는 지점
    print('-----')  # 정답, 층 마다 '-----' 출력

# 190
# 리스트에 저장된 데이터를 아래와 같이 출력하라.

apart = [ [101, 102], [201, 202], [301, 302] ]
# 101 호
# 102 호
# 201 호
# 202 호
# 301 호
# 302 호
# -----

for in apart:        
    for in :      
        print(,'호')
print('-----')      # 아파트에 '-----'를 출력
 
 
 

 

 

 

이중 루프부터 뭔가 머리 아프다..