sugenius

[초보자를 위한 파이썬 300제] 101 to 200 본문

Python

[초보자를 위한 파이썬 300제] 101 to 200

sugeniusk 2021. 3. 20. 23:26

초보자를 위한 파이썬 300제 

wikidocs.net/book/922

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net


👉 분기문 (101 to 130)

# 07. 파이썬 분기문
# 101 ~ 110
# ___________________________________

#파이썬에서 True 혹은 False를 갖는 데이터 타입 : bool타입
print(3==5) #출력 : False
print(3 < 5) #출력 : True
x=4
print(1<x<5) #출력 : True
print((3==3)and(4!=3)) #출력 : True
#print(3=>4) #error : 지원하지 않는 연산자
if 4 < 3:
    print("Hello World.")
else:
    print("Hi, there.")

if True : 
    print("1")
    print("2")
else : 
    print("3")
print("4")
'''출력 : 
1
2
4
'''

if True : 
    if False : 
        print("1")
        print("2")
    else :
        print("3")
else : 
    print("4")
print("5")
'''출력 : 
3
5
'''

 

# 07. 파이썬 분기문
# 111 ~ 120
# ___________________________________
#사용자로부터 입력받은 문자열을 두 번 출력
user = input("입력 : ")
print(user * 2)
'''출력:
입력 : 안녕하세요 
안녕하세요안녕하세요
'''

user = input("숫자를 입력하세요 : ")
print(10+ int(user))
'''출력:
숫자를 입력하세요 : 10
20
'''

#사용자로부터 하나의 숫자를 입력 받고 짝수/홀수를 판별
user = input()
if int(user)%2==0 : 
    print("짝수")
else : 
    print("홀수")

#해당 값에 20을 더한 값을 출력
#사용자가 입력한 값과 20을 더한 계산 값이 255를 초과하는 경우 255를 출력
user = input("입력값: ")
num = 20 + int(user)
if num > 255:
    print(255)
else:
    print(num)


#해당 값에 20을 뺀 값을 출력
#출력 값의 범위는 0~255
#0보다 작은 값이되는 경우 0을 출력하고 255보다 큰 값이 되는 경우 255를 출력
user = input("입력값: ")
num = int(user) - 20
if num > 255:
    print(255)
elif num < 0 : 
    print(0)
else:
    print(num)


#입력 받은 시간이 정각인지 판별
time = input("현재시간: ")
if time[-2:] == "00":
    print("정각 입니다.")
else:
    print("정각이 아닙니다.")
''' 출력 : 
현재시간:02:00
정각 입니다.
'''

#입력받은 단어가 아래 fruit 리스트에 포함되어 있는지를 확인
fruit=["사과","포도","홍시"]
user = input("좋아하는 과일은?")
if user in fruit :
    print("정답입니다.")
else : 
    print("오답입니다.")

warn_investment_list = ["Microsoft", "Google", "Naver", "Kakao", "SAMSUNG", "LG"]
종목 = input("종목명: ")
if 종목 in warn_investment_list:
    print("투자 경고 종목입니다.")
else:
    print("투자 경고 종목이 아닙니다.")

#사용자가 입력한 값이 딕셔너리 키 (key) 값에 포함
fruit={"봄": "딸기", "여름" : "토마토", "가을":"사과"}
user = input("좋아하는게절은: ")
if user in fruit :
    print("정답입니다.")
else : 
    print("오답입니다.")

#사용자가 입력한 값이 딕셔너리 키 (key) 값에 포함
fruit={"봄": "딸기", "여름" : "토마토", "가을":"사과"}
user = input("좋아하는게절은: ")
if user in fruit :
    print("정답입니다.")
else : 
    print("오답입니다.")

#사용자가 입력한 값이 딕셔너리 값 (value)에 포함
user = input("좋아하는 과일은?")
if user in fruit.values():
    print("정답입니다.")
else:
    print("오답입니다.")

 

# 07. 파이썬 분기문
# 121 ~ 130
# ___________________________________

#문자 한 개를 입력 받고, 소문자일 경우 대문자로, 대문자 일 경우, 소문자로 변경해서 출력
# islower() 함수는 문자의 소문자 여부를 판별, 반환 True/False 
# upper() 함수는 대문자로, lower() 함수는 소문자로 변경
user = input("")
if user.islower() : 
    print(user.upper())
else : 
    print(user.lower())

#사용자로부터 score를 입력받아 학점을 출력
user = input ("")
score = int(user)
if 81 <= score <= 100:
    print("grade is A")
elif 61 <= score <= 80:
    print("grade is B")
elif 41 <= score <= 60:
    print("grade is C")
elif 21 <= score <= 40:
    print("grade is D")
else:
    print("grade is E")

#달러, 엔, 유로, 또는 위안 금액을 입력받은 후 이를 원으로 변환
#사용자는 100 달러, 1000 엔, 13 유로, 100 위안과 같이 금액과 통화명 사이에 공백을 넣어 입력한다
환율 = {"달러":1167, "엔":1.096, "유로":1268, "위안":171}
user=input("입력:")
num, currency = user.split()
print(float(num)*환율[currency],"원")

#세 개의 숫자를 입력 받은 후 가장 큰 숫자를 출력
num1 = input("input number1: ")
num2 = input("input number2: ")
num3 = input("input number3: ")
num1 = int(num1)
num2 = int(num2)
num3 = int(num3)

if num1 > num2 and num1 > num3 : 
    print(num1)
elif num2 > num3 and num2 > num1 : 
    print(num2)
else :
    print(num3)

#사용자로부터 휴대전화 번호를 입력 받고, 통신사를 출력
number = input("휴대전화 번호 입력:")
num = number.split("-")[0]
if num == "011":
    com = "SKT"
elif num == "016":
    com = "KT"
elif num == "019":
    com = "LGU"
else:
    com = "알수없음"
print(f"당신은 {com} 사용자입니다.")
'''출력:
휴대전화 번호 입력: 011-345-1922
당신은 SKT 사용자입니다.
'''

'''
슬라이싱 참고 
a = ['a', 'b', 'c', 'd', 'e']
a[ 2 : 4 ]

출력 : ['c', 'd']
end 는 포함되지 않음 
'''
#5자리 우편번호를 입력받고 구를 판별
우편번호 = input("우편번호: ")
우편번호 = 우편번호[:3] #앞의 세자리만
if 우편번호 in ["010", "011", "012"]:
    print("강북구")
elif 우편번호 in ["014", "015", "016"]:
    print("도봉구")
else:
    print("노원구")
'''출력 : 
우편번호: 01400
도봉구
'''

주민번호 = input("주민등록번호: ")
주민번호 = 주민번호.split("-")[1]
if 주민번호[0] == "1" or 주민번호[0] == "3":
    print("남자")
else:
    print("여자")

주민번호 = input("주민등록번호: ")
뒷자리 = 주민번호.split("-")[1]
if 0 <= int(뒷자리[1:3]) <= 8:
    print("서울입니다.")
else:
    print("서울이 아닙니다.")

#유효한 주민번호
#참고 : 
# 파이썬에서 역슬래쉬(\)는 구문이 길어질 때, 다음 줄까지 구문을 잇겠다는 것을 의미
num = input("주민등록번호:")
계산1 = int(num[0]) * 2 + int(num[1]) * 3 + int(num[2]) * 4 + int(num[3]) * 5 + int(num[4]) * 6 + \
        int(num[5]) * 7 + int(num[7]) * 8 + int(num[8]) * 9 + int(num[9]) * 2 + int(num[10])* 3 + \
        int(num[11])* 4 + int(num[12]) * 5
계산2 = 11 - (계산1 % 11)
계산3 = str(계산2)
if num[-1] == 계산3[-1]:
    print("유효한 주민등록번호입니다.")
else:
    print("유효하지 않은 주민등록번호입니다.")
'''출력:
주민등록번호: 821010-1635210
유효하지 않은 주민등록번호입니다. 
'''

#비트코인의 가격 정보를 딕셔너리로 가져오는 코드
''' import 에러남. 파이썬 가상환경 만들어 줘야함 
import requests
btc = requests.get("https://api.bithumb.com/public/ticker/").json()['data']

변동폭 = float(btc['max_price']) - float(btc['min_price'])
시가 = float(btc['opening_price'])
최고가 = float(btc['max_price'])

if (시가+변동폭) > 최고가:
    print("상승장")
else:
    print("하락장")
'''

👉 반복문 (131 to 200)

# 08. 파이썬 반복문
# 131 ~ 140
# ___________________________________

과일 = ["사과","귤","수박"]
for 변수 in 과일 : 
    print(변수)
'''출력:
사과
귤
수박
'''
#for문의 핵심은 "들여쓰기된 코드가 자료구조에 저장된 데이터 개수만큼 반복된다"
과일 = ["사과", "귤", "수박"]
for 변수 in 과일:
  print("#####")
'''출력:
#####
#####
#####
'''

#for 문과 동일한 기능을 수행
for 변수 in ["A", "B", "C"]:
      print("출력:", 변수)

변수 = "A"
print("출력:", 변수)
변수 = "B"
print("출력:", 변수)
변수 = "C"
print("출력:", 변수)

print("출력:", "A")
print("출력:", "B")
print("출력:", "C")

for 변수 in [10, 20, 30]:
      print(변수)

리스트 = [10, 20, 30]
for 변수 in 리스트:
  print(변수)

for 변수 in ["가", "나", "다", "라"]:
  print("-------")
'''출력:
-------
-------
-------
-------
'''

 

# 08. 파이썬 반복문
# 141 ~ 150
# ___________________________________

리스트 = [100, 200, 300]
for 변수 in 리스트:
  print(변수 + 10)

리스트 = ["김밥", "라면", "튀김"]
for 메뉴 in 리스트:
  print("오늘의 메뉴: " + 메뉴)

리스트 = ["김밥", "라면", "튀김"]
for 메뉴 in 리스트:
  print("오늘의 메뉴:", 메뉴)

#문자열길이 출력
리스트 = ["SK하이닉스", "삼성전자", "LG전자"]
for i in 리스트 :
    print(len(i))
'''출력:
6
4
4
'''

리스트 = ['dog', 'cat', 'parrot']
for 이름 in 리스트:
  print(이름, len(이름))
'''출력:
dog 3
cat 3
parrot 6
'''

#리스트 첫글자만 출력
리스트 = ['dog', 'cat', 'parrot']
for 이름 in 리스트:
  print(이름[0])
'''출력:
d
c
p
'''

리스트 = [1, 2, 3]
for 변수 in 리스트:
  print("3 x ", 변수, "=", 3 * 변수)

리스트 = ["가", "나", "다", "라"]
나다라 = 리스트[1:]
for 변수 in 나다라 : 
    print(변수)
'''출력:
나
다
라
'''
리스트 = ["가", "나", "다", "라"]
for 변수 in 리스트[1:]:
  print(변수)

리스트 = ["가", "나", "다", "라"]
for 변수 in 리스트[: :2]:
  print(변수)

리스트 = ["가", "나", "다", "라"]
for 변수 in 리스트[: :-1]:
  print(변수)

  

 

# 08. 파이썬 반복문
# 151 ~ 160
# ___________________________________

#리스트 음수만 출력
리스트 = [3, -20, -3, 44]
for 변수 in 리스트 : 
    if 변수 < 0 :
        print(변수)

#20 보다 작은 3의 배수를 출력
리스트 = [13, 21, 12, 14, 30, 18]
for 변수 in 리스트:
  if (변수 < 20) and (변수 % 3 == 0):
    print(변수)

#리스트에서 세 글자 이상의 문자 출력
리스트 = ["I", "study", "python", "language", "!"]
for i in 리스트 :
    if len(i) >= 3 : 
        print(i)
'''출력:
study
python
language
'''

리스트 = ["A", "b", "c", "D"]
for 변수 in 리스트:
  if 변수.isupper():
    print(변수)

리스트 = ["A", "b", "c", "D"]
for 변수 in 리스트:
  if 변수.isupper() != True:
    print(변수)

리스트 = ["A", "b", "c", "D"]
for 변수 in 리스트:
  if not 변수.isupper():
    print(변수)

리스트 = ['dog', 'cat', 'parrot']
for i in 리스트 :
    print( i[0].upper() + i[1:])
'''출력:
Dog
Cat
Parrot
'''

리스트 = ['hello.py', 'ex01.py', 'intro.hwp']
for 변수 in 리스트:
  split = 변수.split(".")
  print(split[0])  

리스트 = ['intra.h', 'intra.c', 'define.h', 'run.py']
for 변수 in 리스트:
  split = 변수.split(".")
  if split[1] == "h":
    print(변수)

리스트 = ['intra.h', 'intra.c', 'define.h', 'run.py']
for 변수 in 리스트:
  split = 변수.split(".")
  if (split[1] == "h") or (split[1] == "c"):
    print(변수)

 

# 08. 파이썬 반복문
# 161 ~ 170
# ___________________________________

#0~99까지 한 라인에 하나씩 순차적으로 출력
for i in range(100) :
    print(i)

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

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

#99부터 0까지 1씩 감소하는 숫자
for i in range(100) :
    print(99 - i)

for num in range(10) :
    print(num / 10)
'''출력:
0.0
0.1
0.2
0.3
0.4
0.5
...
0.9
'''
for i in range(1, 10) :
    print (3, "x", i, " = ", 3 * i)

#구구단 3단을 출력하라. 단 홀수 번째만 출력
num = 3
for i in range(1, 10, 2) :
    print (num, "x", i, " = ", num * i)

num = 3
for i in range(1, 10) :
    if i % 2 == 1 :
        print (num, "x", i, " = ", num * i)

sum=0
for i in range(1,11) :
    sum +=i
print(sum)

hab = 0
for i in range(1, 11, 2):
    hab += i
print ("합 :", hab)

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

 

# 08. 파이썬 반복문
# 171 ~ 180
# ___________________________________

price_list = [32100, 32150, 32000, 32500]
for i in range(4):
    print(price_list[i])

for i in range(len(price_list)):
    print(price_list[i])
'''출력:
32100
32150
32000
32500
'''

#enumerate() 반복문 사용 시 몇 번째 반복문인지 확인 가능 
#참고 https://wikidocs.net/16045
price_list = [32100, 32150, 32000, 32500]
for i, data in enumerate(price_list) : 
    print(i, data)
'''출력:
0 32100
1 32150
2 32000
3 32500
'''

for i in range(len(price_list)):
    print((len(price_list) - 1) - i, price_list[i])
'''출력:
3 32100
2 32150
1 32000
0 32500
'''

for i in range(1, 4):
    print(90 + 10 * i, price_list[i])
'''출력:
100 32150
110 32000
120 32500
'''

my_list = ["가", "나", "다", "라"]
for i in range (1,len(my_list)):
    print(my_list[i-1], my_list[i])
'''출력:
가 나
나 다
다 라
'''
my_list = ["가", "나", "다", "라", "마"]
for i in range( len(my_list) - 2 ):
    print(my_list[i], my_list[i+1], my_list[i+2])
for i in range(1,len(my_list)-1) :
    print(my_list[i-1],my_list[i],my_list[i+1])
for i in range( 2, len(my_list) ):
    print(my_list[i-2], my_list[i-1], my_list[i])
'''출력:
가 나 다
나 다 라
다 라 마
'''

my_list = ["가", "나", "다", "라"]
for i in range(len(my_list) - 1, 0, -1):
    print(my_list[i], my_list[i-1])
'''출력:
라 다
다 나
나 가
'''

#각각의 데이터에 대해서 자신과 우측값과의 차분값을 화면에 출력
my_list = [100, 200, 400, 800]
for i in range(len(my_list)-1) :
    print( my_list[i+1] - my_list[i])
'''출력:
100
200
400
'''

#종가 데이터의 3일 이동 평균
my_list = [100, 200, 400, 800, 1000, 1300]
for i in range(1,len(my_list)-1) :
    print( (my_list[i-1]+my_list[i]+my_list[i+1])/3 )
'''출력:
233.33333333333334
466.6666666666667
733.3333333333334
1033.3333333333333
'''

#5일간의 변동폭을 volatility 리스트에 저장
low_prices  = [100, 200, 400, 800, 1000]
high_prices = [150, 300, 430, 880, 1000]

volatility = []
for i in range(len(low_prices)) :
    volatility.append(high_prices[i] - low_prices[i])
print(volatility) #출력:[50, 100, 30, 80, 0]

 

# 08. 파이썬 반복문
# 181 ~ 190
# ___________________________________

#총 3개의 리스트를 갖는 이차원 리스트 apart를 정의
apart = [ ["101호", "102호"], ["201호", "202호"], ["301호", "302호"] ]

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

#stock 이름의 딕셔너리로 표현
stock = {"시가": [100, 200, 300], "종가": [80, 210, 330] }

stock = {"10/10": [80, 110, 70, 90], "10/11": [210, 230, 190, 200] }

apart = [ [101, 102], [201, 202], [301, 302] ]
for row in apart :
    for col in row : 
        print(col, "호")
'''출력:
101 호
102 호
201 호
202 호
301 호
302 호
'''
for row in apart [::-1] : 
    for col in row [::-1] : 
        print(col,"호")
'''출력:
302 호
301 호
202 호
201 호
102 호
101 호
'''
for row in apart : 
    for col in row :
        print(col, "호")
    print("------")
'''출력:
101 호
102 호
-----
201 호
202 호
-----
301 호
302 호
-----
'''

 

# 08. 파이썬 반복문
# 191 ~ 200
# ___________________________________

data = [
    [ 2000,  3050,  2050,  1980],
    [ 7500,  2050,  2050,  1980],
    [15450, 15050, 15550, 14900]
]

for line in data : 
    for column in line : 
        print(column * 1.00014)

#result 이름의 리스트에 1차원 배열로 저장
result = []
for line in data:
    for column in line:
        result.append(column * 1.00014)
print(result)

#result 이름의 리스트에 2차원 배열로 저장
result2 = []
for line in data : 
    sub = []
    for column in line :
        sub.append(column * 1.00014)
    result2.append(sub)
print(result2)
'''출력:
[
 [2000.28, 3050.427, 2050.2870000000003, 1980.2772],
 [7501.05, 2050.2870000000003, 2050.2870000000003, 1980.2772],
 [15452.163, 15052.107, 15552.177, 14902.086000000001]
]
'''

#ohlc 리스트에는 시가(open), 고가 (high), 저가 (low) ,
#종가(close)가 날짜별로 저장돼 있다. 화면에 종가데이터를 출력
ohlc = [["open", "high", "low", "close"],
        [100, 110, 70, 100],
        [200, 210, 180, 190],
        [300, 310, 300, 310]]

for line in ohlc[1:] :
    print(line[3])
'''출력:
100
190
310
'''

#종가가 150원보다 큰경우에만 종가를 출력
for row in ohlc[1:]:
    if (row[3] > 150) : 
        print(row[3])

'''출력:
190
310
'''

for row in ohlc[1:]:
    if (row[3] > row[0]) : 
        print(row[3])

volatility = []
for i in ohlc[1:] : 
    volatility.append(i[1]-i[2])
print(volatility) #출력 : [40, 30, 10]

volatility = []
for i in range(1, len(ohlc)):
    volatility.append(ohlc[i][1]-ohlc[i][2])
print(volatility) #출력 : [40, 30, 10]

for row in ohlc[1:]:
    if row[3] > row[0]:
        print(row[1]-row[2])

profit = 0
for row in ohlc[1:]:
    profit += (row[3] - row[0])