[미래유망 2025-03-25]

돼지인간·2025년 3월 25일

미래유망

목록 보기
1/41

파이썬에서의 while

# 예제) 10번찍어 안 넘어가는 나무 없다
treeHit = 0; # while문에서 사용할 변수
while treeHit < 10: # treeHit가 10보다 작을때
  treeHit = treeHit + 1 # treeHit가 증가하지 않으면 무한루프기에 증가해줌
  print("나무를 %d 번 찍었습니다" % treeHit) # 나무가 몇번 찍혔는지 출력
  if(treeHit == 10): # treeHit가 10이라면
    print("나무 넘어갑니다.") # 나무가 넘어간다 출력

while문과 같이 쓰면 좋은 코드
break : while문을 강제로 나가게함
continue : 밑에있는 코드를 건너뛰고 while문 처음으로


파이썬에서의 문자열 관련 함수

userInput = input("문자를 입력해주세요 : ") # 유저의 입력을 받음
if userInput.isupper(): # 만약 유저의 문자 입력이 대문자라면
  print(userInput.lower()) # 소문자로 바꾸어서 출력
else: # 아니면
  print(userInput.upper()) # 대문자로 바꾸어서 출력

isLower() : 문자가 소문자면 True반환
isUpper() : 문자가 대문자면 True반환
lower() : 문자를 소문자로 변환
upper() : 문자를 대문자로 변환


파이썬 예제문제 1

사용자로부터 달러, 엔, 유로, 위안 금액을 입력받은 후 이를 원으로 변환하는 프록드램을 작성하라

# 내가 푼 답
userInput = input("원으로 변환할 돈을 입력하세요 : ") # 유저의 입력을 받아옴
array = userInput.split(" "); # 유저의 입력을 리스트로 저장
if array[1] == "달러" : 배열의 1번째 값이 뭔지 비교
  print(float(array[0]) * 1167.00, "원") # 배열의 0번째 값과 곱하여 환율을 계산함
elif array[1] == "엔":
  print(float(array[0]) * 1.096, "원")
elif array[1] == "유로":
    print(float(array[0]) * 1268.00, "원")
elif array[1] == "위안":
  print(float(array[0]) * 171.00, "원")
# 예제의 답
환율 = {"달러":1167, # 딕셔너리로 값 저장
      "엔":1.096,
      "유로":1268,
      "위안":171}
user = input("입력: ") # 유저의 입력을 받음
num, currency = user.split() # num과 currency로 유저의 입력을 띄어쓰기를 기준으로 저장함
print(float(num) * 환율[currency], "원") # 딕셔너리의 있는 값과 currency값이 같은 숫자로 곱함

파이썬 예제문제 2

사용자로부터 세 개의 숫자를 입력 받은 후 가장 큰 숫자를 출력하라.

# 내가 푼 답
array = [] # 리스트 생성
for i in range(0, 3): # 3번 반복
  userInput = input("숫자를 입력하세요 : ") # 유저의 입력을 받음
  array.append(userInput) # 배열에 유저의 입력 추가
array.sort() # 오름차순 정렬
print("제일 큰 값은 :", array[len(array) - 1]) # 제일 오른쪽에 있는 값 출력

파이썬 예제문제 3

휴대폰 번호 앞자리에 따라 통신사는 구분된다. 사용자로부터 전화번호를 입력받고 통신사를 출력해라

# 내가 푼 답
userInput = input("전화번호를 입력하세요 : ") # 유저의 입력을 받음
array = userInput.split("-") # -을 기준으로 나눠서 array에 집어넣음
if array[0] == "011": # 만약 array[0] 값이 011이라면
  print("SKT") # SKT 출력
elif array[0] == "016": # 위와 같다.
  print("KT")
elif array[0] == "019":
  print("LGU")
elif array[0] == "010":
  print("알 수 없음")

파이썬 예제문제 4

# 내가 푼 답 
userInput = input("우편번호 : ") # 유저의 입력을 받음
if userInput[2] == "0" or userInput[2] == "1" or userInput[2] == "2": # 3번째 글자에 따라 출력
  print("강북구")
elif userInput[2] == "3" or userInput[2] == "4" or userInput[2] == "5":
  print("도봉구")
elif userInput[2] == "6" or userInput[2] == "7" or userInput[2] == "8" or userInput[2] == "9":
  print("노원구")
# 예제의 답
우편번호 = input("우편번호 : ") # 유저의 입력을 받음
우편번호 = 우편번호[:3] # 우편번호를 세자리까지 슬라이싱
if 우편번호 in ["010","011","012"]: # 우편번호가 리스트 안에 있는지 확인
  print("강복구") # 출력
elif 우편번호 in ["013","014","015"]:
  print("도봉구")
else:
  print("노원구")


파이썬 예제문제 5

주민등록번호는 13자리로 구성되는데 마지막 자리수는 주민등록번호의 유호성을 체크한다.
먼저 앞에서부터 12자리 숫자에 2,3,4,5,6,7,8,9,2,3,4,5를 차례로 곱한 뒤 그 값을 전부 더한 연산값에 11로 나누면 나머지가 나오는데 11에서 나머지를 뺀 값이 주민등록번호의 마지막 번호가 된다.

# 내가 푼 답 
주민등록번호 = input("주민등록번호 : ") # 유저의 입력
array = [] # 빈 리스트
array1 = [2,3,4,5,6,7,8,9,2,3,4,5] # 곱할 값 리스트
num = 0; # num 초기화ㅓ
for i in 주민등록번호:
  if i == "-" : continue; # "-"가 나오면 continue로 건너뜀
  array.append(i) # 리스트에 추가
for i in range(0, len(array) - 1): # 12까지 곱해서 계산
  num += int(array[i]) * int(array1[i])
num = 11 - (num % 11) # 계산식

if str(num) == array[12]: # 나머지를 뺸 값과 마지막과 같다면
  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("유효하지 않은 주민등록번호입니다.")

파이썬 예제문제 6

btc 딕셔너리 안에는 시가, 종가, 최고가, 최저가 등이 저장되어 있다. 최고가와 최저가의 차이를 변동폭으로 정의할 때 (시가 + 변동폭)이 최고가 보다 높을 경우 "상승장", 그렇지 않은 경우 "하락장" 문자열을 출력하라.

# 내가 푼 답 
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("하락장")

배운 점 :

문제를 해결하는 창의력과 알고리즘 능력을 향상시킬 수 있었다. 파이썬을 통해 다양한 문제를 풀어보니 내가 못하는 문제 유형이 뭔지 잘하는 문제 유형이 뭔지 잘 알 수 있었다. 또한 새롭게 requset의 개념도 알 수 있었고, 딕셔너리의 사용법을 더 잘 알 수 있었다.


아쉬운점 :

문제를 이해하는 능력이 부족하여 항상 늦게 반응했던것 같다. 다양한 어휘를 알고 알고리즘적 사고력을 더욱 키워서 문제를 빠르게 이해하여 문제를 풀도록 노력하겠다.


profile
안녕하세요 게임개발을 공부하고 있는 돼지인간 입니다.

0개의 댓글